Я хочу напечатать строку «qui» каждые 5 секунд. Я создал синглтон EJB и через аннотации я определил метод тайм-аута. Я ожидал, что строка «qui» печатается каждые 5 секунд, но этого не происходит. Строка «qui» печатается в продолжении. Мой сервер приложений - Glassfish. Ниже мой код:JavaEE - Singleton EJB Timer не работает
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? – iku
Попробуйте удалить папки tmp и data вашего AS, поскольку более ранняя версия вашего таймера может смешать ситуацию. Также вы можете попробовать развернуть свой код с помощью нового проекта. Я видел эту проблему на JBoss EAP 6.2, и хотя я не знаю, в чем причина того, что тот же код, который не работал в одном развертывании, работает в другом. –
Уважаемый @Nunzio Meli, у меня есть проблема: когда я использую '@ Timeout', я не могу загрузить планировщик при запуске, даже если я использую' @ Startup'. пожалуйста, посмотрите: http://stackoverflow.com/questions/42242037/parameterize-ejb-scheduler-with-schedule-expression –