我(正在尝试)开发一个Web应用程序系统,它处理用户请求和计算,并通过扩展Threads和Runtime.exec()(在Linux和/或Windows上)将它们传递给服务器上的(定制的)可执行文件)。这些计算可能非常耗时,并且可能超过HttpSession的持续时间。如果发生这种情况,并且会话到期,则线程/进程也会与HttpSession一起消失(对吗?)。
我的问题:例如,有没有办法在会话中启动进程并将其切换到与会话无关的进程?
如果我无法跟踪进程ID并不重要,我只搜索在Web服务器上启动进程并让它们运行的方法,即使用户的会话到期也是如此。
我很感谢任何想法和提示!
答案 0 :(得分:1)
您应该使用像Quartz这样的作业调度库,这样您的作业就完全不依赖于Http Session
答案 1 :(得分:1)
我不建议通过Runtime.exec
启动进程或从Web服务器内部创建新线程。虽然技术上通常是可行的,但这不是一个好主意。基本上,您启动的线程不会受Web容器控制(它有许多工作线程来处理您的请求)。通过启动自己的线程,Web服务器无法再管理自己的负载,最终可能会产生一系列意想不到的后果。
我将做的是以下内容:
ID
?”的Web服务器。服务器可以检查数据库并查看状态是否仍处于“挂起”状态。 ID
)。使用JMS的优点:
将计算结果存储在DB中的优点:
希望有所帮助。