如何在使用调度程序或公共同步void run()时避免在两个实例中运行并发

时间:2014-03-18 07:05:40

标签: java java-ee scheduled-tasks quartz-scheduler glassfish-3

我正在使用glassfish 3.1.2 build 5.我有两台服务器,每台服务器都有一个集群。每个群集有2个实例。在我的J2EE应用程序中,我有调度程序(Cron Quartx调度程序),它将在每天晚上12运行,并且只需在30000(毫秒)间隔下运行代码

public synchronized void run() {
 /** Some set of functions **/
/** Calling procedure **/
if count >0{
/** forming xml and updating web service**/
}else {
Thread.sleep(Integer.parseInt(30000));
}

我的问题是当我将我的应用程序部署为独立实例时,它运行正常。当我在上面的集群和负载均衡结构中部署相同的时候,我面临空指针异常或我的应用程序被处理了4次。但每个应用程序应该只发生一个?如何避免这种并发?

0 个答案:

没有答案