gpt4 book ai didi

Java - 在 Jboss 中调度任务且无需 EJB

转载 作者:行者123 更新时间:2023-11-30 05:28:41 25 4
gpt4 key购买 nike

我的java web应用程序使用spring进行依赖注入(inject),打包在EAR中并部署在Jboss 7中,但没有EJB。该应用程序安装在两台负载平衡机上。我需要安排一个方法每天运行,但该方法不能在两个实例上同时运行。我尝试使用Spring的Scheduling注释,但问题是,由于存在负载平衡,所以scheduled方法运行了两次(每个集群一次)。在 Jboss 7 中执行此操作的最佳方法是什么?有人可以帮助我吗?

要安排的方法如下所示。

public synchronized void processor() {

LOGGER.info("start");

//processing logic

LOGGER.info("the end");
}

非常感谢!!!

最佳答案

好吧,考虑到需求:两个或多个应用程序并且它们需要同步,您需要 @Singleton 或 @Stateless EJB,如here所述。 .

通过计时器服务调用它,那么它需要是一个在某个方法上带有 @Timer 的 EJB,如果您在某个方法上使用 @Scheduled 等,那么它将调用该方法

在这种情况下,建议使用单例,否则,您最终可能会运行同一计时器的多个实例。

示例

#Example
private void init()
{
ScheduleExpression Expression = new ScheduleExpression();
#This means twice per hour {0,2,4, ... 22} ~ since it ends on 23h:
expression.second(0).minute(0).hour(*/2).month(*).dayOfWeek(*);
stopTimer();
Timer timer = service.createCalendarTimer(exp);
}

任何其他建议似乎都会增加太多的复杂性。

关于Java - 在 Jboss 中调度任务且无需 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58012131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com