How create a JOB with EJB 3.0 inside JBOSS 4.3



如何创建一个每6秒运行一次的作业,并在执行应用程序部署时自动开始工作?

目前,我有一个使用计时器的类,但在启动部署时,进程不会自动启动。

所有这些都与JBoss4.3中的EJB 3.0和没有WAR的EAR有关,只有EJB

@Stateless
public class MyJobBean implements MyJob {
private static final long EJECUTION_INTERVAL=6000;
@Resource
private TimerService ts;
@PostConstruct // This not work in deploy, only when somebody calls the EJB
public void init() { 
    System.out.println("Post Constructor Method init() Invoked"); 
    ts.createTimer(EJECUTION_INTERVAL, null);
}
@Timeout // Fired by the timer 
public void myJOBProcess(Timer timer) {
    System.out.println("the job was invoked");
    ts.createTimer(EJECUTION_INTERVAL, null); //create another future ejecution
}
@PreDestroy
public void tidyUp() {
    System.out.println("Canceling scheduled Timers");
    for (Object obj : ts.getTimers()) {
        Timer timer = (Timer)obj;
        timer.cancel();
        System.out.println("Timer Canceled");
    }   
}
}

提前感谢

在JBoss中,您可以使用MBean,MBean是通过用@Service注释服务来定义的。如果存在public void start()方法,则在启动应用程序时将调用该方法。

Servlet侦听器或启动时加载Servlet是唯一一种javaee可移植的方式,可以在部署到EJB3.1时使用@Schedule注释自动运行一些代码。

最新更新