in server/src/main/java/org/apache/asyncweb/server/transport/mina/MinaTransport.java [185:244]
public void start() throws TransportException
{
initIOHandler();
acceptor = new NioSocketAcceptor( ioThreads );
eventExecutor = new OrderedThreadPoolExecutor( this.eventThreads );
boolean success = false;
try {
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
chain.addFirst( "threadPool", new ExecutorFilter( eventExecutor ) );
acceptor.setReuseAddress( true );
acceptor.getSessionConfig().setReuseAddress(true);
chain.addLast("mdc", new MdcInjectionFilter() );
if ( isLoggingTraffic )
{
LOG.debug( "Configuring traffic logging filter" );
LoggingFilter filter = new LoggingFilter();
filter.setSessionClosedLogLevel( logLevel );
filter.setExceptionCaughtLogLevel( logLevel );
filter.setMessageReceivedLogLevel( logLevel );
filter.setMessageSentLogLevel( logLevel );
filter.setSessionClosedLogLevel( logLevel );
filter.setSessionCreatedLogLevel( logLevel );
filter.setSessionIdleLogLevel( logLevel );
filter.setSessionOpenedLogLevel( logLevel );
acceptor.getFilterChain().addLast( "logging", filter );
}
// TODO make this configurable instead of hardcoding like this
acceptor.setBacklog( 100 );
acceptor.setHandler( ioHandler );
if ( address != null )
{
acceptor.bind( new InetSocketAddress( address, port ) );
}
else
{
acceptor.bind( new InetSocketAddress( port ) );
}
success = true;
LOG.debug( "NIO HTTP Transport bound on port " + port );
}
catch ( IOException e )
{
throw new TransportException( "NIOTransport Failed to bind to port " + port, e );
}
finally
{
if ( ! success )
{
acceptor.dispose();
acceptor = null;
}
}
}