2012-01-17 27 views
0

我在Java EE 5和Websphere 7.0上安裝了webproject 我需要創建調度程序並在部署應用程序之後啓動它。 我試了一下: 創建EJB與接口:完成部署後的啓動調度程序

@Local 
public interface ISchedulerBean { 

    public void executeTimer(Timer timer); 
    public void createTimer(); 
} 

無狀態會話bean實現了這個接口。方法createTimer從TimerService創建定時器實例。這部分代碼工作正常。 另外我需要在應用程序部署之後調用方法createTimer()。 我想:

  1. 添加監聽器參數servletContext:

    公共類SchedulerInitialiserContextListener實現了ServletContextListener {// 服務來查找EJB 私人WebServiceLocator webServiceLocator; private SchedulerService schedulerService;

    public Sc​​hedulerInitialiserContextListener(){ webServiceLocator = new WebServiceLocator(); schedulerService = webServiceLocator.getSchedulerService(); }

    public void contextDestroyed(ServletContextEvent ctx) { 
    } 
    
    public void contextInitialized(ServletContextEvent ctx) { 
        schedulerService.createTimer(); 
    } 
    

    }

  2. 創建的Servlet與1,其中在初始化注入SchedulerBean()方法和呼叫createTimer。

但是,這並不工作,因爲在第一次的WebSpere部署Web應用程序,調用監聽器,初始化servlet和才把部署ejb.jar其中所有EJB的位置。我可以在webshpere日誌文件中看到。所以,當我嘗試讓ejb扔@EJB註釋或查找時,我得到異常,因爲ejb尚未找到。 可能是部署ejb模塊或更改部署順序後啓動定時器的其他方法嗎?

回答

1

您可以設置模塊的啓動順序。

假設你使用Rational Application Developer開發執行以下操作:

右鍵點擊你的耳朵項目,然後單擊的Java EE - >打開WebSphere Application Server部署。

查找應用程序部分,您將看到所有模塊,並且可以爲每個模塊設置Start weight

確保包含Context Listener的Web項目具有最大的值,您應該沒問題。

  • 此操作下你的耳朵項目的META-INF創建一個ibmconfig目錄,請確保您在您的構建過程打包
+0

謝謝!你的答覆幫助了我。 – Balconsky 2012-01-17 09:50:18

相關問題