我必须让Web应用程序侦听套接字( ServerSocket ),并处理套接字流。
但是该应用程序只是部署在Tomcat中,而Tomcat只是一个servlet容器,它不支持JCA。并且在servlet线程中建立服务器套接字是不合理的。
解决方案1:
丑陋的解决方案是编写一个 独立的Java应用程序 以侦听套接字,然后与Web服务器通信。但这不是一个好的解决方案。
解决方案2:
我写了一个 ServletContextListener ,当contextInitialized()开始接收套接字时,它将开始由线程处理。这意味着线程池位于ServletContext中。当然,我在contextDestroyed时销毁了线程池。
您如何看待解决方案?
“独立Java应用程序”可以从中执行ServletContextListener。您可以使用来管理线程池ExecutorService。
ServletContextListener
ExecutorService