Java EE 5とWebsphere 7.0でwebprojectを持っています スケジューラを作成し、デプロイアプリケーションの後に起動する必要があります。私が試した何 : 私はインターフェイスでEJBを作成します。デプロイメント完了後の起動スケジューラ
@Local
public interface ISchedulerBean {
public void executeTimer(Timer timer);
public void createTimer();
}
ステートレスセッションBeanは、このインタフェースを実装しています。メソッドcreateTimerは、TimerServiceからtimerインスタンスを作成します。コードのこの部分は正常に動作します。 また、アプリケーションのデプロイ後にメソッドcreateTimer()を呼び出す必要があります。 私が試した:
は、リスナーのServletContextを追加します。
パブリッククラスSchedulerInitialiserContextListenerは、ejb プライベートWebServiceLocator webServiceLocatorをルックアップするためのServletContextListener {// サービスを実装します。 private SchedulerService schedulerService;
public SchedulerInitialiserContextListener(){ webServiceLocator = new WebServiceLocator(); schedulerService = webServiceLocator.getSchedulerService(); }
public void contextDestroyed(ServletContextEvent ctx) { } public void contextInitialized(ServletContextEvent ctx) { schedulerService.createTimer(); }
}
1 INITでSchedulerBeanを注入する場合()メソッドを使用してサーブレットを作成してのcreateTimerを呼び出します。
しかし、最初webspereで、Webアプリケーションを配備するリスナーを呼び出し、サーブレットを初期化し、だけにして、すべてのEJBが配置されているejb.jarなどを展開しているため、これは、動作しません。私はwebshpereログファイルでそれを見ることができます。だから、私がejbを取得しようとすると、@EJBアノテーションまたは参照が例外を取得し、beacause ejbが見つかりませんでした。 ejbモジュールをデプロイした後、またはデプロイ順を変更した後、タイマーを開始する方法は他にありますか?
はありがとう、あなたのビルドプロセスでそれをパッケージ化することを確認してください!あなたの意見が私を助けました。 – Balconsky