我正在尝试在IBM WebSphere Application Server v.8.5.5.4上生成JavaEE应用程序。
如果网络请求导致计算时间太长(出于任何原因,从无意识的大量数据到导致无限循环的编程错误),我想在一段时间后中止它们。
我在Web Sphere文档中找不到任何内容(像往常一样,我必须说)。到目前为止,我在StackOverflow和其他地方找到的所有内容都不适合我的情况:
我会选择任何服务器端解决方案;它可能是一些WAS设置或一些我不知道的普通JavaEE / Servlet配置。
这里有任何WebSphere专家吗?谢谢你的帮助!
修改:
实际上是How do you kill a thread in Java?和How to timeout a thread的副本。在提出这个问题时,我认为这在Java中是可行的,因此在WebSphere中必须有一些功能。
答案 0 :(得分:1)
没有办法(安全地)强行停止或“超时”#34;无论JVM是否是像WebSphere这样的应用程序服务器,任何JVM中都有一个正在运行的线程。对于那些陷入纯粹"计算的线程来说尤其如此。 (如果线程最终命中一个中断点,那么Thread.interrupt可能是可用的;例如,一个挂起的线程通知监听器可能能够做到这一点,但在WebSphere中没有内置的支持)。你最好的选择是写#34;合作"中断/取消;也就是说,您需要显式编写代码,定期检查它是否已运行太长并取消自身。对于无意的无限循环,你唯一的防御是强大/经过良好测试的代码。