【发布时间】:2015-01-16 19:09:22
【问题描述】:
我想每 5 秒打印一次字符串“qui”。 我创建了一个 EJB 单例,并通过注释定义了一个超时方法。我预计字符串“qui”每 5 秒打印一次,但这不会发生。字符串“qui”继续打印。我的应用服务器是 Glassfish。 下面是我的代码:
import EJBData.AuctionFrontEndLocal;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;
/**
*
* @author melix
*/
@Startup
@Singleton
public class Timer{
@EJB
private AuctionFrontEndLocal auctionFrontEnd;
private Timer timer;
@Resource TimerService tservice;
@PostConstruct
public void initTimer(){
tservice.createIntervalTimer(0,5000,new TimerConfig());
}
@Timeout
public void timeout() {
System.out.println("QUI!");
}
}
【问题讨论】:
-
你能用应用服务器日志代替println吗?
-
尝试删除您的 AS 的 tmp 和 data 文件夹,因为您的计时器的早期版本可能会混淆。您也可以尝试使用新项目部署代码。我在 JBoss EAP 6.2 上看到过这个问题,虽然我不知道实际原因,但在一个部署中不起作用的相同代码在另一个部署中起作用。
-
亲爱的@Nunzio Meli,我有一个问题:当我使用
@Timeout时,即使我使用@Startup,我也无法在启动时加载调度程序。请看:stackoverflow.com/questions/42242037/…
标签: jakarta-ee ejb