从java web应用程序启动非常长的回溯过程的最佳方法是什么?

从java web应用程序启动非常长的回溯过程的最佳方法是什么?,java,multithreading,jakarta-ee,web,long-running-processes,Java,Multithreading,Jakarta Ee,Web,Long Running Processes,当您想要启动脚本(.sh,jar,.py,.pl…)时,只需点击一个用户界面(例如一个漂亮的jsf页面)即可运行数小时以上。 抛出流程的最佳方法是什么。 运行.exec()方法,使用线程还是其他什么? 谢谢。绝对不要在Java web应用程序中使用长时间运行的线程。将带有任务的消息(理想情况下通过队列(例如rabbitmq))发送到具有自己的线程池的单独应用程序,然后该应用程序将独立处理webapp用户请求的长时间运行的任务 如果您的系统没有安装消息传递系统,并且您发现管理消息传递系统的开销太大

当您想要启动脚本(.sh,jar,.py,.pl…)时,只需点击一个用户界面(例如一个漂亮的jsf页面)即可运行数小时以上。 抛出流程的最佳方法是什么。 运行.exec()方法,使用线程还是其他什么?
谢谢。

绝对不要在Java web应用程序中使用长时间运行的线程。将带有任务的消息(理想情况下通过队列(例如rabbitmq))发送到具有自己的线程池的单独应用程序,然后该应用程序将独立处理webapp用户请求的长时间运行的任务


如果您的系统没有安装消息传递系统,并且您发现管理消息传递系统的开销太大,并且您已经在使用一些sql或无sql或其他存储,您可能还可以调整此存储以用于webapp和新的单独的long requests runner应用程序之间的通信。

为什么不在服务器上运行一个单独的守护进程线程,作为等待信号启动的进程。当它收到启动通知(使用JMS?)时,它会进行后台工作。另一方面,对于短流程(发送电子邮件),您喜欢线程吗?即使对于发送电子邮件这样快的任务,如果我可以控制部署环境,我也会将任务委托给另一个应用程序。要避免每个应用程序有多个线程池管理,web服务器已经有了自己的任意复杂的线程池。