This is a known issue: http://issues.apache.org/jira/browse/DIRMINA-93
We'll provide a setter or a unbind method with an extra parameter to make acceptors close all client connections immediately.
I am checking out MINA and it looks very interesting.
My first question: when I call unbind(service) or unbindAll() on a
will it wait until all running I/O events are handled ?
In other words: suppose my IoHandlerAdapter implementation looks like this
public void dataRead( IoSession session, ByteBuffer rb )
ByteBuffer wb = ByteBuffer.allocate( 4 );
int res = somethingThatTakesSomeTime();
wb.putInt ( res );
session.write( wb, null );
And thread_x calls unbindAll() while thread_y is busy with somethingThatTakesSomeTime().
Will unbindAll() wait until dataRead() finishes or will thread_y get interrupted somehow ?
I guess I could just try it out, but I would rather like to know what is the intended behaviour.
On a sidenote: is it common to create a 'private' shutdownService (only accepting connections from localhost)
that just waits for a shutdown command, and then tries to gracefully shutdown ?
(like Tomcat does on port 8005)