如何在ejb中一个接一个地运行两个用@Schedule注释的方法

时间:2012-12-01 07:03:56

标签: java ejb-3.1

我必须使用ejb中的@schedule注释每10分钟一个接一个地运行两个方法。

我的代码就像:

@Schedule(minute="*/10")
public void mth1() { 
    System.out.println("welcome");
}

@Schedule(minute="*/10")    
public void mth2() {
    System.out.println("hello");
} 

如何进行?

感谢您的回复..但是,对于两个mthds,定时器设置为10分钟。在第1个mth完成后,mthd开始执行。如果我在第一个月的第二个mthd都在10分钟内运行..我想每个运行10分钟

2 个答案:

答案 0 :(得分:3)

如果你想在mth1之后执行mth2,你可以在mth1的末尾调用mth2并从mth2中删除Schedule注释。

答案 1 :(得分:0)

您可以尝试使用以下代码来定时执行一个接一个,延迟特定时间间隔。

@Schedule(minute="*/10")
public void mth1() { 
    System.out.println("welcome");

    //-- Creating a timer manually for mth2
    timerService.createTimer(duration, info);

}

在指定的间隔之后,将调用超时方法,使用@Timeout注释标记meth2()。因此,当meth1()退出时,将在x单位持续时间之后调用meth2()。

@Timeout
public void mth2(Timer timer){
    System.out.println("hello");
}