public void start() {
        Log.info( "Starting instance" );

        this.sessionManager = SessionManager.getInstance();

        stanzaWorkerPool = new ThreadPoolExecutor(MIN_POOL_SIZE.getValue(), MAX_POOL_SIZE.getValue(), POOL_KEEP_ALIVE.getValue().toSeconds(), TimeUnit.SECONDS,
                new LinkedBlockingQueue<>(), // unbounded task queue
                new NamedThreadFactory( "httpbind-worker-", true, null, Thread.currentThread().getThreadGroup(), null )
        );

        if (JMXManager.isEnabled()) {
            final ThreadPoolExecutorDelegateMBean mBean = new ThreadPoolExecutorDelegate(stanzaWorkerPool);
            workerThreadPoolObjectName = JMXManager.tryRegister(mBean, ThreadPoolExecutorDelegateMBean.BASE_OBJECT_NAME + "bosh");
        }
        stanzaWorkerPool.prestartCoreThread();

        // Periodically check for Sessions that need a cleanup.
        inactivityTask = new HttpSessionReaper();
        TaskEngine.getInstance().schedule( inactivityTask, Duration.ofSeconds(30), SESSION_CLEANUP_INTERVAL.getValue() );
    }
Starts the services used by the HttpSessionManager.

(Re)creates and configures a pooled executor to handle async routing for stanzas with a configurable
(through property "xmpp.httpbind.worker.threads") amount of threads; also uses an unbounded task queue and
configurable ("xmpp.httpbind.worker.timeout") keep-alive.

Note: Apart from the processing threads configured in this class, the server also uses a thread pool to perform
the network IO (as configured in ({@link HttpBindManager#HTTP_BIND_THREADS}). BOSH installations expecting heavy
loads may want to allocate additional threads to this worker pool to ensure timely delivery of inbound packets
xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSessionManager.java