private static TCPNIOTransport createTransport( final boolean isOptimizedForMultiplexing) { return TCPNIOTransportBuilder .newInstance() .setOptimizedForMultiplexing(isOptimizedForMultiplexing) .build(); }
.setOptimizedForMultiplexing(true) .setIOStrategy(new ExecutorPerServerAddressIOStrategy(executorProvider));
public GrizzlyServerManager(ExecutorService selectorPool, ExecutorService workerPool, ExecutorService idleTimeoutExecutorService, HttpListenerRegistry httpListenerRegistry, TcpServerSocketProperties serverSocketProperties, int selectorCount) { this.httpListenerRegistry = httpListenerRegistry; requestHandlerFilter = new GrizzlyRequestDispatcherFilter(httpListenerRegistry); sslFilterDelegate = new GrizzlyAddressDelegateFilter<>(); httpServerFilterDelegate = new GrizzlyAddressDelegateFilter<>(); FilterChainBuilder serverFilterChainBuilder = FilterChainBuilder.stateless(); serverFilterChainBuilder.add(new TransportFilter()); serverFilterChainBuilder.add(sslFilterDelegate); serverFilterChainBuilder.add(httpServerFilterDelegate); serverFilterChainBuilder.add(requestHandlerFilter); // Initialize Transport executorProvider = new WorkManagerSourceExecutorProvider(); TCPNIOTransportBuilder transportBuilder = TCPNIOTransportBuilder.newInstance().setOptimizedForMultiplexing(true) .setIOStrategy(new ExecutorPerServerAddressIOStrategy(executorProvider)); configureServerSocketProperties(transportBuilder, serverSocketProperties); transport = transportBuilder.build(); transport .setNIOChannelDistributor(new RoundRobinConnectionDistributor(transport, selectorCount >= MIN_SELECTORS_FOR_DEDICATED_ACCEPTOR, true)); transport.setSelectorRunnersCount(selectorCount); transport.setWorkerThreadPool(workerPool); transport.setKernelThreadPool(selectorPool); // Set filterchain as a Transport Processor transport.setProcessor(serverFilterChainBuilder.build()); this.idleTimeoutExecutorService = idleTimeoutExecutorService; }