Java - 在 Jboss 中安排任务并且没有 EJB
Java - Scheduling tasks in Jboss & without EJB
我的 java Web 应用程序使用 spring 进行依赖注入,打包在 EAR 中并部署在 Jboss 7 中,但没有 EJB。该应用程序安装在两台负载平衡机上。我需要每天安排一个方法 运行,但该方法不能在两个实例上同时 运行。
我尝试使用 Spring 的调度注释,但问题是,由于存在负载平衡,调度方法 运行s 两次(每个集群一次)。
在 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 Web 应用程序使用 spring 进行依赖注入,打包在 EAR 中并部署在 Jboss 7 中,但没有 EJB。该应用程序安装在两台负载平衡机上。我需要每天安排一个方法 运行,但该方法不能在两个实例上同时 运行。 我尝试使用 Spring 的调度注释,但问题是,由于存在负载平衡,调度方法 运行s 两次(每个集群一次)。 在 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);
}
任何其他建议似乎都会增加太多的复杂性。