为什么Java EE计时器没有集群?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Java EE计时器没有集群?相关的知识,希望对你有一定的参考价值。
我正在使用Java EE EJB计时器和带有oracle数据库的Wildfly 8.2.1服务器。当我在集群环境中的应用程序中运行调度程序时工作不正常,即使在Wildfly中选择了事务隔离:TRANSACTION_SERIALIZABLE。我正在两个节点中部署它从两个节点,但我只需要一个节点。
在EJB中:
@Singleton
public class TimerSessionBean implements TimerSessionBeanRemote {
@Timeout
@Schedule(
hour="11",minute="0",second="00,30"
)
public void createTimer(){
System.out.println("timeoutHandler : "+new Date());
DAO.getInboxDaoImpl().updateStatus();
}
在DaoImpl:
@Override
public Boolean updateStatus(String chngCustStus){
int resVal = 0;
String sql = "INSERT INTO bonus SELECT ename, job, sal, comm FROM emp
WHERE comm > sal * 0.25";
}
}
在Wildfly服务器中:选为
Transaction Isolation: TRANSACTION_SERIALIZABLE
答案
这确实是预期的行为。
Java EE规范中没有集群的概念。因此,没有便携式解决方案。在JBoss上我曾经使用过Quartz计时器。特别是对于Wildfly 8,请检查this post是否回答了您的问题。
另一答案
集群EJB计时器在WildFly 9及更高版本中可用。
文档可在以下位置找到:
大多数Java E实现都支持这种或那种方式,但@ 38leinad确实是正确的,没有在任何地方指定此行为。
早期版本的JBossAS 7 - > WildFly 8.x错过了,因为它是一个全新的规范实现,重点是Java EE 6,然后是Java EE 7合规性。
以上是关于为什么Java EE计时器没有集群?的主要内容,如果未能解决你的问题,请参考以下文章