Моя цель - настроить запланированное задание, которое запускается при запуске.Simulate @Startup на EJB 3.0 (WebLogic 11gR1)
на EJB 3.1, я мог бы сделать что-то вроде:
@Startup
@Stateless
public class SchedulePoller {
@Resource
TimerService timerService;
@PostConstruct
public void defineScheduler() {
timerService.createTimer(60000, 60000, null);
}
@Timeout
public void checkSchedule(Timer timer) {
System.out.println("time: " + new Date());
}
}
Теперь моя проблема заключается в том, что @Startup
не доступен в EJB 3.0, которая является самой последней версии поддерживается на WebLogic 11gR1 (10.3.5). Это означает, что Bean не сконструирован, поэтому не вызывается метод defineScheduler
.
Я прочитал, что возможное решение заключается в определении HttpServlet
, с закачиваемой мой Bean, переопределить метод init
и положить <load-on-startup>
в web.xml
файле. Я не могу использовать этот метод, потому что мой проект является модулем EJB, и у меня нет веб-контекста.
Единственное другое решение, о котором я думал до сих пор, заключается в том, чтобы изменить Bean на @MessageDriven
и поместить сообщение в очередь после запуска, но для каждого развертывания это потребует дополнительных действий.
Есть ли способ воспроизвести аннотацию @Startup
? Лучший вариант заключается в том, что Bean автоматически запускается при запуске, но я могу рассмотреть также сценарий для добавления в StartWebLogic.cmd
или любой другой «автоматический» способ.
спасибо.