我在Java EE 5和Websphere 7.0上安裝了webproject 我需要創建調度程序並在部署應用程序之後啓動它。 我試了一下: 創建EJB與接口:完成部署後的啓動調度程序
@Local
public interface ISchedulerBean {
public void executeTimer(Timer timer);
public void createTimer();
}
無狀態會話bean實現了這個接口。方法createTimer從TimerService創建定時器實例。這部分代碼工作正常。 另外我需要在應用程序部署之後調用方法createTimer()。 我想:
添加監聽器參數servletContext:
公共類SchedulerInitialiserContextListener實現了ServletContextListener {// 服務來查找EJB 私人WebServiceLocator webServiceLocator; private SchedulerService schedulerService;
public SchedulerInitialiserContextListener(){ webServiceLocator = new WebServiceLocator(); schedulerService = webServiceLocator.getSchedulerService(); }
public void contextDestroyed(ServletContextEvent ctx) { } public void contextInitialized(ServletContextEvent ctx) { schedulerService.createTimer(); }
}
創建的Servlet與1,其中在初始化注入SchedulerBean()方法和呼叫createTimer。
但是,這並不工作,因爲在第一次的WebSpere部署Web應用程序,調用監聽器,初始化servlet和才把部署ejb.jar其中所有EJB的位置。我可以在webshpere日誌文件中看到。所以,當我嘗試讓ejb扔@EJB註釋或查找時,我得到異常,因爲ejb尚未找到。 可能是部署ejb模塊或更改部署順序後啓動定時器的其他方法嗎?
謝謝!你的答覆幫助了我。 – Balconsky 2012-01-17 09:50:18