Timer EJB@Timeout不工作
我想每两秒钟叫醒一次ejb定时器。为此,我创建了ScheulerExpression,如下代码所示Timer EJB@Timeout不工作,timer,ejb-3.1,Timer,Ejb 3.1,我想每两秒钟叫醒一次ejb定时器。为此,我创建了ScheulerExpression,如下代码所示 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.Star
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.有两件事可能会导致问题:
com.sun.jersey.spi.resource.Singleton
,但应该是javax.ejb.Singleton
@LocalBean
注释正在调用或根本没有创建的方法是否有任何日志/异常。ScheduleExpression看起来正确。Timer.getNextTimeout()返回什么(通过createCalendarTimer的返回值)?您使用的是什么应用程序服务器?您的标记显示ejb-3.0,但ScheduleExpression是EJB3.1;您的应用程序服务器版本是否支持EJB3.1?我使用了GlassFish 3.1,很抱歉……我添加了GlassFish服务器库,默认情况下提供EJB3.1。日志中没有异常或警告。问题是根本没有初始化bean。所以不调用post构造。initialize()函数第一行中的sysout没有被调用..亲爱的@Gunjan Shah,我有一个问题:当我使用
@Timeout
时,即使我使用@startup
也无法在启动时加载调度程序。请看一下:#1几乎可以肯定问题出在一个方面,特别是因为OP澄清了根本没有调用@PostConstruct
#2是多余但无害的。亲爱的@Nayan Wadekar,我有一个问题:当我使用@Timeout
时,即使我使用@startup
也无法在启动时加载调度程序。请看一看: