我想每两秒唤醒一次ejb计时器。对于我创造ScheulerExpression如下面的代码...EJB @Timeout不能正常工作
package com.fks.nclp.ejb.timer.service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.LocalBean;
import javax.ejb.ScheduleExpression;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;
import com.sun.jersey.spi.resource.Singleton;
@LocalBean
@Singleton
@Startup
public class HelloWorldService {
@Resource
TimerService timerService;
@PostConstruct
public void initialize(){
System.out.println("EJB PRE CONSTRUCT");
ScheduleExpression expression = new ScheduleExpression();
//SET TIMER TO 2 SEC
expression.hour("*");
expression.minute("*");
expression.second("*/2");
timerService.createCalendarTimer(expression,new TimerConfig("TimerScheduler",false));
}
@Timeout
public void startTimer(){
System.out.println("THIS IS EJB TIMER PROGRAM");
}
}
但是...... EJB容器不是每两秒钟后醒来的调度。
对此有何建议? 我怎样才能让表达每两秒醒来。
谢谢, Gunjan。
您是否获取了正在调用的方法的任何日志/异常,或者根本没有被创建。 –
ScheduleExpression看起来很合适。 Timer.getNextTimeout()返回什么(通过createCalendarTimer的返回值)?你在使用什么应用程序服务器?你的标签说ejb-3.0,但ScheduleExpression是EJB 3.1;你的应用服务器版本是否支持EJB 3.1? –
我已经使用GlassFish 3.1并且很抱歉...我已经添加了GlassFish服务器库,它默认提供了EJB3.1 –