/** * Configures an HTTP grizzlyListener with the given request-processing config. */ private void configureThreadPool(NetworkListener networkListener, ThreadPool threadPool, final String transactionTimeoutSec) { if (threadPool == null) { return; } try { final int maxQueueSize = Integer.parseInt(threadPool.getMaxQueueSize()); final int minThreads = Integer.parseInt(threadPool.getMinThreadPoolSize()); final int maxThreads = Integer.parseInt(threadPool.getMaxThreadPoolSize()); final int keepAlive = Integer.parseInt(threadPool.getIdleThreadTimeoutSeconds()); final int ttSec = Integer.parseInt(transactionTimeoutSec); final String name = Utils.composeThreadPoolName(networkListener); setThreadPool(newThreadPool(name, minThreads, maxThreads, maxQueueSize, keepAlive < 0 ? Long.MAX_VALUE : keepAlive * 1000, TimeUnit.MILLISECONDS)); setCoreThreads(minThreads); setMaxThreads(maxThreads); if (!com.sun.grizzly.util.Utils.isDebugVM() && ttSec > 0) { // Idle Threads cannot be alive more than 15 minutes by default setTransactionTimeout(ttSec * 1000); } else { // Disable the mechanism setTransactionTimeout(-1); } } catch (NumberFormatException ex) { logger.log(Level.WARNING, " Invalid thread-pool attribute", ex); } }