Description
The IoHandler.sessionCreated and IoHandler.sessionOpened methods are not called at useful times. The sessionCreated method should be called after the session is constructed but before anything else is done. The sessionOpened method should be called immediately after the connection is established, but before any messages are received (in other words, before the selectionkey is added to the selector).
From the look of the code in AbstractPollingIoProcessor, it looks like sessionOpened is simply called immediately after sessionCreated (see IoServiceListenerSupport.fireSessionCreated()), rendering the separate methods useless. In addition, it seems that there is nothing preventing a message from coming in before this initialization is complete, unless I am misunderstanding what threads are operating on these constructs.