在Netbeans中自动创建Timer

时间:2014-11-19 19:15:57

标签: mysql netbeans timer

我正在创建一个从MySQL数据库获取信息的学校Web应用程序。我希望后端定期删除带有已在数据库中过期的时间戳的条目。

根据我的研究,我创建了一个TimerSessionBean,每小时都有一个Schedule annotation来删除数据库中的条目。为了测试,现在我只是想让豆子在5分钟内打印出来。这就是我到目前为止所做的:

import javax.ejb.Schedule;
import javax.ejb.Stateless;
import java.util.Date;

@Stateless
public class TimerSessionBean {

    @Schedule(minute = "*/5")
    public void PrintTime() {
        System.out.println("Current: " + new Date());
    }
}

但是,部署应用程序时没有任何反应。仅仅创建TimerSessionBean并包含Schedule注释是不够的?

1 个答案:

答案 0 :(得分:0)

TimerSessionBean是一个单例会话bean,它显示如何设置自动计时器和程序计时器。
在随后的TimerSessionBean的源代码清单中,setTimer和@Timeout方法用于设置编程计时器。
创建bean时,容器会注入TimerService实例。因为它是一个业务方法,所以setTimer会暴露给TimerSessionBean的本地无接口视图,并且可以由客户端调用。

在此示例中,客户端调用setTimer,间隔持续时间为30,000毫秒 setTimer方法通过调用TimerService的createTimer方法创建一个新的计时器 现在设置了计时器,EJB容器将在计时器到期时调用TimerSessionBean的programmaticTimeout方法,大约30秒。

Using the timer service

package timersession.ejb;

import java.util.Date;
import javax.annotation.Resource;
import javax.ejb.Schedule;
import javax.ejb.Stateless;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;

@Singleton
public class TimerSessionBean {
    @Resource
    TimerService timerService;

    private Date lastProgrammaticTimeout;
    private Date lastAutomaticTimeout;


    public void setTimer(long intervalDuration) {
        System.out.println("Setting a programmatic timeout for "
                + intervalDuration + " milliseconds from now.");
        Timer timer = timerService.createTimer(intervalDuration, 
                "Created new programmatic timer");
    }

    @Timeout
    public void programmaticTimeout(Timer timer) {
        this.setLastProgrammaticTimeout(new Date());
        System.out.println("Programmatic timeout occurred.");
    }

    @Schedule(minute="*/5", hour="*")
    public void automaticTimeout() {
        this.setLastAutomaticTimeout(new Date());
        System.out.println("Automatic timeout occured");
    }

    public void setLastProgrammaticTimeout(Date lastTimeout) {
    this.lastProgrammaticTimeout = lastTimeout;
    }

    public void setLastAutomaticTimeout(Date lastAutomaticTimeout) {
    this.lastAutomaticTimeout = lastAutomaticTimeout;
    }
 [...]

要查看输出JAVA Console必须打开。