Servlets EJB或Servlet-如何添加';切断开关';强制进程/线程停止的步骤

Servlets EJB或Servlet-如何添加';切断开关';强制进程/线程停止的步骤,servlets,jakarta-ee,ejb,Servlets,Jakarta Ee,Ejb,我偶尔会遇到一个开放的问题——如果您有一个EJB有状态或无状态bean,或者可能有一个直接的servlet进程,它可能使用错误的参数在生产系统上长时间运行,如何有效地为管理员/个人添加手动“终止开关”以专门终止该线程/进程?您不能,或者至少不应该直接干扰应用程序服务器线程。所以在JavaEE环境中,“kill开关”看起来绝对不适合我 不过,我确实理解您存在的问题,但我更愿意建议您采用异步方法,将您的工作划分到更小的工作单元中 我使用EJB定时器实现了这一点,并对结果感到满意:为第一个工作单元创建

我偶尔会遇到一个开放的问题——如果您有一个EJB有状态或无状态bean,或者可能有一个直接的servlet进程,它可能使用错误的参数在生产系统上长时间运行,如何有效地为管理员/个人添加手动“终止开关”以专门终止该线程/进程?

您不能,或者至少不应该直接干扰应用程序服务器线程。所以在JavaEE环境中,“kill开关”看起来绝对不适合我

不过,我确实理解您存在的问题,但我更愿意建议您采用异步方法,将您的工作划分到更小的工作单元中

我使用EJB定时器实现了这一点,并对结果感到满意:为第一个工作单元创建了一个初始定时器。当应用程序启动时。服务器执行计时器,然后将其注册为与第二个工作单元相对应的第二个工作单元,等等。信息可以从一个工作单元传递到另一个工作单元,因为EJB计时器支持存储自定义信息。而且,计时器的执行和注册是事务性的,这对于处理数据库来说很好。您甚至可以使用这种方法关闭并重新启动应用服务器。在每个工作单元运行之前,我们在数据库中检查作业是否同时被取消