自動的に作成される EJB パーシスタント・タイマーの管理

アプリケーションまたはモジュールは、javax.ejb.Schedule アノテーションを使用するか、 XML デプロイメント記述子の schedule エレメントを使用して、EJB タイマーを自動的に作成するようアプリケーション・サーバーに指示します。自動的に作成される EJB パーシスタント・タイマーの作成を管理するための MBean が提供されています。

このタスクについて

Liberty サーバーは、アプリケーションがサーバー・プロセス内で初めて開始されたときに、そのアプリケーション用の EJB 自動パーシスタント・タイマーを作成します。作成されたタイマーおよびタイマーが作成されたことを示す標識が、 EJB タイマー・サービス用に構成された、PersistentExecutor と関連付けられたデータベース内に保管されます。アプリケーション用の自動的に作成されるパーシスタント・タイマーは、 いったん作成されると、タイマーが作成されたことを示す標識を明確にデータベースから消去するアクションが実行されるまでは再作成されません。アプリケーション用の自動的に作成されるタイマーのすべてが削除された場合でも、 Liberty サーバーは、タイマーが作成されたことを示す標識も削除されるまでは、それらのタイマーのどれも再作成しません。

自動的に作成されるタイマーが作成されたことを示す標識の消去は、 手動でタイマー・データベースを消去することによって行われるか、または、EJB タイマー・サービス MBean を使用することによって行われます。EJB タイマー・サービス MBean は、 プログラマチックに使用するか、ツール (JConsole など) を通して使用できます。EJB タイマー・サービス MBean のインターフェースは、com.ibm.websphere.ejbcontainer.mbean.EJBPersistentTimerServiceMXBean です。

手順

  1. アプリケーション・サーバーを構成して、server.xml ファイルに、パーシスタント・タイマーをサポートする EJB フィーチャーおよび REST コネクターを含めます。
    <featureManager>
         <feature>servlet-3.1</feature>
         <feature>ejbPersistentTimer-3.2</feature>
         <feature>jdbc-4.1</feature>
         <feature>restConnector-1.0</feature>
    </featureManager>
  2. アプリケーション・サーバーを構成して、server.xml ファイルに、EJB タイマー・サービス用のデータ・ソースを含めます。
    <dataSource id="DefaultDataSource" jdbcDriverRef="DerbyEmbedded">
         <properties.derby.embeddedcreateDatabase="create" databaseName="${server.config.dir}/data/EJBTimerDB"/>
    </dataSource>
    <jdbcDriver id="DerbyEmbedded" libraryRef="DerbyLib"/>
    <library id="DerbyLib">
         <filename="${server.config.dir}/derby/derby.jar"/>
    </library>
  3. MBean サーバー接続を取得します。
  4. EJB パーシスタント・タイマー・サービス MBean を取得します。
    import javax.management.MBeanServerConnection;
    import avax.management.ObjectName;
    import com.ibm.websphere.ejbcontainer.mbean.EJBPersistentTimerServiceMXBean;
    ...
    MBeanServerConnection mbsc = <step #3>;
    ObjectName on = new
    ObjectName("WebSphere:feature=ejbPersistentTimer,type=EJBPersistentTimerService,name=EJBPersistentTimerService");
    EJBPersistentTimerServiceMXBean timerServiceMBean =
         JMX.newMXBeanProxy(mbsc, on, EJBPersistentTimerServiceMXBean.class);
  5. アプリケーション用の自動的に作成されるパーシスタント・タイマーを削除します。
    timerServiceMBean.removeAutomaticTimers("<application name>");

    Mbean の removeAutomaticTimers() メソッドは、自動的に作成されるタイマーと、タイマーが作成されたことを示す標識の両方を削除します。サーバーがこのアプリケーションを次に開始したときに、自動的に作成されるパーシスタント・タイマーが作成されます。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_ejb_perstimer_manage_auto
ファイル名: twlp_ejb_perstimer_manage_auto.html