这不是servlet容器的目的。如果要使用基于标准的方法,则确实需要功能更完善的J2EE应用程序服务器。否则,您将拥有骇客,但它们可能足以完成您的任务。
我可能会尝试创建一个DaemonServlet。这只是一个普通的servlet,没有映射到URL(也许出于监视目的,可能是盲URL除外,尽管这种情况更喜欢JMX)。
init()加载Servlet时将调用该方法。您可以在其中启动线程。可以说,您可能需要创建两个:一个可以完成工作。另一个确保第一个正在运行,并在
destroy()被调用后正常终止它。
另外,如果您使用的是Spring(面对现实,什么样的whacko不使用Spring?),您可以在应用程序上下文中简单地创建一个具有相同功能的bean,但Spring生命周期事件除外(例如InitializingBean上的afterPropertiesSet())。
实际上,我有一个更好的建议。使用异步消息使用者,它将更加干净和可扩展,但这是基于基于JMS的解决方案的依据,而不是仅仅基于
linkedBlockingQueue(并且JMS可能是一个更好的主意)。但是,根据您的约束,可能没有JMS可供选择。



