我的目標是設置一個在啓動時開始運行的預定作業。在EJB 3.0上模擬@Startup(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
,注射用豆我,覆蓋init
方法和web.xml
文件放在<load-on-startup>
。 我不能使用這個方法,因爲我的項目是一個EJB模塊,我沒有web上下文。
到目前爲止我唯一想到的其他解決方案是將Bean更改爲@MessageDriven
,並在啓動後在隊列中放置消息,但這需要在每次部署時採取額外的操作。
有什麼方法可以複製@Startup
註釋?最佳選擇是在啓動時自動啓動Bean,但我也可以考慮將腳本添加到StartWebLogic.cmd
或任何其他「自動」方式。
謝謝。