2012-01-17 6 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からtimerインスタンスを作成します。コードのこの部分は正常に動作します。 また、アプリケーションのデプロイ後にメソッドcreateTimer()を呼び出す必要があります。 私が試した:

  1. は、リスナーのServletContextを追加します。

    パブリッククラスSchedulerInitialiserContextListenerは、ejb プライベートWebServiceLocator webServiceLocatorをルックアップするためのServletContextListener {// サービスを実装します。 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. 1 INITでSchedulerBeanを注入する場合()メソッドを使用してサーブレットを作成してのcreateTimerを呼び出します。

しかし、最初webspereで、Webアプリケーションを配備するリスナーを呼び出し、サーブレットを初期化し、だけにして、すべてのEJBが配置されているejb.jarなどを展開しているため、これは、動作しません。私はwebshpereログファイルでそれを見ることができます。だから、私がejbを取得しようとすると、@EJBアノテーションまたは参照が例外を取得し、beacause ejbが見つかりませんでした。 ejbモジュールをデプロイした後、またはデプロイ順を変更した後、タイマーを開始する方法は他にありますか?

答えて

1

モジュールの起動順序を設定できます。 - >開くのWebSphere Application Serverデプロイメント

を右耳のプロジェクトをクリックし、Java EEをクリックしてください:あなたはRational Application Developerのは、次の手順を実行して開発と仮定すると、

アプリケーションセクションを確認すると、すべてのモジュールが表示され、それぞれのモジュールにStart weightを設定できます。

コンテキストリスナーを含むWebプロジェクトの値が最大であることを確認してください。

  • この操作では、あなたの耳プロジェクトのMETA-INFの下ibmconfigディレクトリを作成し、
+0

はありがとう、あなたのビルドプロセスでそれをパッケージ化することを確認してください!あなたの意見が私を助けました。 – Balconsky

関連する問題