如何在WebSphere 7下安排定期Java任务?

时间:2014-04-05 18:06:39

标签: java java-ee ejb scheduled-tasks websphere-7

我需要在WebSphere 7集群环境中每30秒运行一次Java方法(两个盒子,每个盒子有1个服务器) - 在避免并发问题的同时,最好的做法是什么?

更多细节: 我们在Oracle数据库中有记录需要完全翻转一次。如果他们得到双重缠身,就会发生不好的事情。

所以我想象这样的事情:

public synchronized void BatchTwiddle() {

    List myList = findRecordsToBeTwiddled();
    twiddleRecords(myList);
}


public void twiddleRecords(myRecords myList) {

    ListIterator<myRecord> myRecordsIterator = myList.listIterator();

    while (myRecordsIterator.hasNext()) {
         myRecordsIterator.next().twiddleRecord();
    }
}

当涉及多台服务器(共2台)时,如何每30秒调用一次BatchTwiddle()?最好只在一台服务器上运行它

到目前为止,我一直在使用ScheduledExecutorService或使用EJB计时器深入研究WebSphere Scheduler概念,但似乎没有什么是明显的赢家。

1 个答案:

答案 0 :(得分:0)

使用节点配置来了解哪个节点必须运行您的任务,哪些节点不运行。然后创建这样的结构:

if(shouldRun(THIS_NODE_NAME)) {
   //do job...
}