ヘッダーをスキップ
Oracle Containers for J2EEジョブ・スケジューラ開発者ガイド
10g(10.1.3.1.0)
B31853-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

9 ジョブ・スケジューラ対応アプリケーションのデプロイ

この章では、デプロイ用ジョブ・スケジューラ対応アプリケーションを構成する方法について説明します。次のトピックについて説明します。

9.1 J2EEアプリケーションへのジョブ・スケジューラのバンドル

ジョブ・スケジューラは、ステートレス・セッションEnterprise JavaBeans(EJB)としてデプロイされます。標準的なEJBと異なり、ジョブ・スケジューラとともに実際のクラス・ファイルをデプロイする必要はありません。これらのファイルは、Oracle Containers for J2EE(OC4J)の一部です。

9.1.1 scheduler-ejb.jarファイルの生成

すべてのEJBと同様、デプロイ記述子が必要です。ジョブ・スケジューラでは次の2つの記述子を使用します。

  1. ejb-jar.xml(ジョブ・スケジューラのデプロイ記述子)

  2. orion-ejb-jar.xml(OC4J固有のジョブ・スケジューラのデプロイ記述子)

ジョブ・スケジューラを正しく機能させるには、両方のファイルがscheduler-ejb.jarアーカイブ・ファイルに含まれている必要があります。

アプリケーションとともにジョブ・スケジューラをデプロイするには、アプリケーションのデプロイ担当者は、scheduler-ejb.jarアーカイブを含める必要があります。ejb-jar.xmlファイルとorion-ejb-jar.xmlファイルに加えて、このアーカイブには次のものが必要です。

  • すべてのジョブ実装

  • すべてのイベント・リスナー実装

ジョブ・スケジューラがジョブ実装とイベント・リスナー実装にアクセスするには、scheduler-ejb.jarアーカイブにクラス・ファイルが含まれている必要があります。このファイルを生成してアプリケーションにバンドルする作業は、アプリケーションのデプロイ担当者が行います。

例9-1は、サンプルのscheduler-ejb.jarファイルです。ジョブ・スケジューラ対応アプリケーションは、アプリケーションの一部としてtest.jobジョブ実装とtest.watchイベント・リスナー実装を使用しています。

例9-1 サンプルscheduler-ejb.jarファイル

test/job.class
test/watch.class
META-INF/ejb-jar.xml
META-INF/orion-ejb-jar.xml

9.1.2 Enterprise Archive(EAR)ファイルでのscheduler-ejb.jarのバンドル

scheduler-ejb.jarファイルが生成されたら、アプリケーションのEARファイルでバンドルする必要があります。さらに、アーカイブのapplication.xmlファイルには、ジョブ・スケジューラのモジュール・エントリが含まれている必要があります。

例9-2では、ジョブ・スケジューラはJ2EEアプリケーションとともにデプロイされます。アプリケーションにジョブ・スケジューラを追加するには、例9-2に示すように<module>要素を追加します。

例9-2 application.xmlファイルへのジョブ・スケジューラの追加

<module>
   <ejb>scheduler-ejb.jar</ejb>
</module>

9.2 ジョブ・スケジューラの永続性の構成

ジョブ・スケジューラには、3種類の永続ジョブ記憶域があります。

JMS永続性を構成するには、jobStoreProviderClassName <env-entry>oracle.ias.scheduler.core.jobstore.jdbc.ProvderImplに設定します。メモリー内またはファイルベースの永続性は、JMSキューをそれぞれメモリー内またはファイルベースとして構成することで実現します。

データベース支援の永続性を構成するには、J2EE_HOME/database/scheduler_jobstore.sqlスクリプトを実行してデータベース・テーブルを作成し、jobStoreProviderClassName <env-entry>oracle.ias.scheduler.core.jobstore.jdbc.ProviderImplに設定します。

次の項では、JDBC永続性とJMS永続性の構成例を示します。

9.2.1 JDBC永続性の構成

JDBC永続性を構成する手順を次に示します。

  1. scheduler_jobstore.sql SQLスクリプトを実行して、データベース・テーブルを作成します。

  2. ejb-jar.xmlファイルで、jobStoreProviderClassName <env-entry>の値を次のように設定します。

    <env-entry>
       <env-entry-name>jobStoreProviderClassName</env-entry-name>
       <env-entry-type>java.lang.String</env-entry-type>
       <env-entry-value>
          oracle.ias.scheduler.core.jobstore.jdbc.ProviderImpl</env-entry-value>
    </env-entry>
    
    
  3. data-sources.xmlで、新しい<managed-data-source>エントリを作成し、指定された接続プールが既存の<connection-pool>を参照するようにします。

    <managed-data-source name="SchedulerJobstore"
                          connection-pool-name="Example Connection Pool"
                          jndi-name="scheduler/jobstore" />
    
    

JDBC永続性の詳細な構成例は、OTNで次のHow-Toを参照してください。

http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-scheduler-db/doc/readme.html

9.2.2 JMS永続性の構成

JMS永続性を構成する手順を次に示します。

  1. ejb-jar.xmlファイルで、jobStoreProviderClassName <env-entry>の値を次のように設定します。

    <env-entry>
       <env-entry-name>jobStoreProviderClassName</env-entry-name>
       <env-entry-type>java.lang.String</env-entry-type>
       <env-entry-value>
          oracle.ias.scheduler.core.jobstore.jms.ProviderImpl
       </env-entry-value>
    </env-entry>
    
    
  2. jms.xmlファイルで、次のように新しい<queue>エントリを作成します。

    <queue name="jms/scheduler_jobstore"
            persistence file="scheduler_jobstore">
       <description>scheduler job store queue</description>
    </queue>
    
    

jms.xmlで定義されたキューの宛先は、各キューの宛先でpersistence-file属性が設定されている場合のみ永続的になります。永続的なキューの宛先を作成する詳細な手順は、JMSのドキュメントを参照してください。

JMS永続性の詳細な構成例は、OTNで次のHow-Toを参照してください。

http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-scheduler-jms/doc/readme.html

9.3 ジョブ・スケジューラのセキュリティの構成

ジョブ・スケジューラのejb-jar.xmlデプロイ記述子ファイルには、ジョブ・スケジューラのセキュリティ構成に関する情報が含まれています。この情報を変更して、1つまたは複数のジョブ・スケジューラAPIへのアクセスを特定のロールに制限することができます。たとえば、ジョブの削除を、管理者権限を持つユーザーに限定することができます。

例9-3では、アプリケーション・ユーザーは、ユーザーと管理者という2つの一般的なカテゴリに分けられます。ユーザーにはジョブの発行のみが許可され、管理者はジョブの発行、一時停止、再開、取消しおよび削除が可能です。

例9-3 2層のセキュリティ・モデル

<!-- role declarations -->
<security-role>
  <role-name>user</role-name>
</security-role>

<security-role>
  <role-name>administrator</role-name>
</security-role>


<!—- methods that can be invoked by the group 'user' -->
<method-permission>
  <role-name>user</role-name>

  <method>
    <ejb-name>scheduler</ejb-name>
    <method-name>add</method-name>
  </method>
</method-permission>


<!—- methods that can be invoked by the group 'administrator' -->
<method-permission>
  <role-name>administrator</role-name>
  <method>
    <ejb-name>scheduler</ejb-name>
    <method-name>remove</method-name>
  </method>

  <method>
    <ejb-name>scheduler</ejb-name>
    <method-name>pause</method-name>
  </method>

  <method>
    <ejb-name>scheduler</ejb-name>
    <method-name>resume</method-name>
  </method>

  <method>
    <ejb-name>scheduler</ejb-name>
    <method-name>cancel</method-name>
  </method>
</method-permission>

9.4 ジョブ・スケジューラのロギングの構成

ここでは、ジョブ・スケジューラに使用できるログ・レベルの設定について説明します。ルート・ログ出力のデフォルトのログ・レベルはLevel.WARNINGに設定されています。これは、予測しないエラーや致命的なエラーが、ルート・ログ出力により記録されるためです。ただし、例9-4に示すように、ejb-jar.xmlファイルのglobalLogLevelと呼ばれる<env-entry>の文字列の値を設定することで、ログ・レベルの変更が可能です。

例9-4 ログ・レベルの変更

<env-entry>
   <env-entry-name>globalLogLevel</env-entry-name>
   <env-entry-type>java.lang.String</env-entry-type>
   <env-entry-value>FINEST</env-entry-value>
</env-entry>

表9-1に、<env-entry>の値とそれぞれに対応するログ・レベルを示します。

表9-1 <env-entry>の値とログ・レベル

<env-entry>の値 ログ・レベル

OFF

Level.OFF

FINEST

Level.FINEST

FINER

Level.FINER

FINE

Level.FINE

CONFIG

Level.CONFIG

INFO

Level.INFO

WARNING

Level.WARNING

SEVERE

Level.SEVERE

ALL

Level.ALL


9.5 ジョブ・スケジューラのDMSの構成

DMS統計を公開するかどうかを設定するには、例9-5に示すように、ejb-jar.xmlファイルの<env-entry>値を設定します。

例9-5 DMSの構成

<env-entry>
   <env-entry-name>oracle.ias.scheduler.dms</env-entry-name>
   <env-entry-type>java.lang.String</env-entry-type>
   <env-entry-value>true</env-entry-value>
</env-entry>

<env-entry-value>がtrueに設定されている場合、DMS統計が公開されます。DMS統計を公開しない場合は、この値をfalseに設定します。

9.6 ジョブ・スケジューラのJMXの構成

JMX MBeanを公開するかどうかを設定するには、例9-6に示すように、ejb-jar.xmlファイルの<env-entry>値を設定します。

例9-6 JMXの構成

<env-entry>
   <env-entry-name>oracle.ias.scheduler.jmx</env-entry-name>
   <env-entry-type>java.lang.String</env-entry-type>
   <env-entry-value>true</env-entry-value>
</env-entry>

<env-entry-value>がtrueに設定されている場合、JMX MBeanが公開されます。JMX MBeanを公開しない場合は、この値をfalseに設定します。

9.7 ジョブ・スケジューラの実行間隔しきい値リカバリの構成

一部のジョブが、コンテナのシャットダウン中にスケジュールされている場合があります。ジョブ・スケジューラでは、これらの失われた実行を復元できます。コンテナのダウン中にスケジュールされていた1つまたは複数の実行は、コンテナの起動時に1つのジョブの実行にまとめられます。

固定間隔および固定遅延スケジュールの場合、繰返しの間隔が設定可能な実行リカバリしきい値期間より長いジョブの実行リカバリを有効にすることができます。

それには、例9-7に示すように、<env-entry>の値を希望のしきい値(分)に設定します。この値を設定しない場合、値は30分に設定されます。間隔が30分より長い固定間隔および固定遅延ジョブのみジョブの実行リカバリが行われます。

例9-7 実行しきい値リカバリの構成

<env-entry>
   <env-entry-name>intervalThresholdMinutes</env-entry-name>
   <env-entry-type>java.lang.Long</env-entry-type>
   <env-entry-value>35</env-entry-value>
</env-entry>