WebSphere WorkManager集群双重执行作业

时间:2018-04-24 13:01:50

标签: asynchronous websphere ejb-3.0 workmanagers

我在WebSphere 8.5上使用Java 1.7.1部署了一个Application,它由一个包含2个节点的集群定义。 在此应用程序中,有一个EJB,通过工作管理器提交异步作业。

问题是在WAS 8.5上,作业在群集的两个节点上执行两次。在WAS 6.1中,这没有发生。

工作由报警管理器提交。提取的代码下方:

 this.booksByStoreID = this.books.filter(
      book => book.store_id === this.store.id);

有人知道如果是8.5是否有其他配置可以避免所描述的问题?

1 个答案:

答案 0 :(得分:0)

WebSphere Application Server中的WorkManager,无论哪个版本都没有,并且从未具有跨远程JVM操作或协调的能力。 WorkManager的设计行为是它只能运行您在提交工作的同一JVM上提交的工作,并且它不知道您从不同的JVM提交的重复工作而没有机制协调跨JVM的工作。您从WorkManager获取的AlarmManager实例也是如此。 (WebSphere Application Server实际上有一种方法可以完成上述操作,即调度程序,但上面的代码没有使用它)。是否有可能应用程序中受版本更改影响的某些早期逻辑可能导致现在在两个成员上创建警报,而以前它只会在一个上创建?