2011-12-15 104 views
3

我们正在WebSphere群集中部署应用程序。应用程序正在运行自己从来不会终止线程正在检查例如在一些条件:如何在WebSphere下停止应用程序的后台线程

while(true){ 
    logger.severe("Unterminated thread"); 
    Thread.sleep(10000); 
} 

问题是,后应用程序是停止(通过的wsadmin或管理控制台)在WebSphere中,只有Servlet是unregistrated但 这些线程不会被终止并仍在运行。当我停止应用程序时,有什么方法可以杀死这个问题?我们使用的是WebSphere 7

感谢

回答

4

根据您对其他答案的意见,我有一个建议。 (请注意,我同意奥列格的观点,你确实不应该这样做,但是如果你必须......)。

我认为在这段代码的常规Java应用程序中,这些后台线程以某种方式收到停止的信号。我建议使用ServletContextListener发送停止信号,当您的servlet已全部注销时。

请注意,如果您还没有某种方法可以告诉线程停止,那可能是另一个错误,并且这根本无济于事。

+0

真的很感谢,这看起来像最快的方式如何修复应用程序。 – HPCS 2011-12-15 16:13:27

6

你不应该手动创建JavaEE应用线程。线程管理应该由JavaEE容器提供。

WebSphere有一个WorkManager机制来协助您处理线程需求。请参阅this tutorial获取实施细节。

+0

你好,我明白的问题是,它不会期望它将在应用程序容器中运行,它已被写为一个正常的Java应用程序。 – HPCS 2011-12-15 14:35:53

相关问题