我正在尝试在IBM8.5.5.4版的IBMApplicationServerv.8.5.5.4上生产JavaEE应用程序。
如果web请求导致计算时间过长(由于任何原因,从意外的大量数据到导致无休止循环的编程错误),我想在一段时间后中止它们。
我在Web文档中找不到任何东西(我必须说,就像往常一样)。到目前为止,我在StackOverflow和其他地方发现的一切都不适合我的情况:
我会选择任何服务器端解决方案;它可能是一些正在设置的,也可能是一些我不知道的简单的JavaEE/Servlet配置。
这里有WebSphere专家吗?谢谢你的帮助!
编辑
实际上是How do you kill a thread in Java?和How to timeout a thread的复制。在提出这个问题时,我假设这在Java中是可能的,因此在WebSphere中必须有一些特性。
发布于 2015-06-05 11:06:17
在任何JVM中都无法(安全地)强制停止或“超时”正在运行的线程,无论JVM是否是像WebSphere这样的应用服务器。对于陷入纯“计算”的线程尤其如此(如果线程最终到达中断点,那么Thread.interrupt可能是可用的;例如,挂起的线程通知侦听器可能能够做到这一点,但在WebSphere中没有内置的支持)。您最好的选择是编写“协作”中断/取消;也就是说,您需要显式地编写代码,定期检查它是否运行得太久,并取消它本身。至于无意中的无限循环,您唯一的防御是健壮的/经过良好测试的代码。
https://stackoverflow.com/questions/30668578
复制