Timer EJB@Timeout不工作

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

我想每两秒钟叫醒一次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.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.

有两件事可能会导致问题:

  • import语句似乎不正确,它是
    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
    也无法在启动时加载调度程序。请看一看: