WebSphere Extended Deployment バージョン 6.1 のバッチ・アプリケーションは、 単純な Plain Old Java Object (POJO) として実装され、 デプロイメント用に Enterprise JavaBeans (EJB) モジュールとして Enterprise Archive (EAR) ファイルの中にパッケージ化されています。POJO ベースのバッチ・アプリケーション の作成は、バッチ・アプリケーションの作成において推奨される方法です。
以下のセクションで、バッチ・アプリケーションのコンポーネントについて説明します。
バッチ・アプリケーションは、 1 つ以上のバッチ・ステップで構成されます。各バッチ・ステップは POJO であり、 インターフェース com.ibm.websphere.batch.BatchJobStepInterface を実装しています。このインターフェースの実装により、 バッチ・アプリケーションの実行のためにバッチ・ランタイムが呼び出すバッチ・ステップのビジネス・ロジックが提供されます。
バッチ・アプリケーションの パッケージ化時に、各バッチ・ステップは CMP エンティティー Bean として宣言され、 POJO のビジネス・ロジックは、EJB デプロイメント記述子の環境エントリーを使用してこの Bean に関連付けられます。CMP エンティティー Bean は、 バッチ・ジョブ・ステップ・ラッパーとして機能します。その実装は、WebSphere Extended Deployment ランタイムによって提供されます。したがって、この Bean は EJB デプロイメント記述子で宣言され、 実際にはパッケージ化はされません。単一のバッチ・アプリケーションで複数のステップが定義されます。
バッチ・アプリケーションには、 ステートレス・セッション Bean も含まれています。この Bean は、 ジョブ・ステップ・コントローラーとして機能する WebSphere Extended Deployment ランタイムによって提供されます。CMP エンティティー Bean と同様に、 コントローラー・ステートレス・セッション Bean は、 アプリケーション・デプロイメント記述子で宣言されます。コントローラー Bean は、バッチ・アプリケーションごとに 1 回宣言します。
各バッチ・ステップでは、データの入出力用にゼロ以上の バッチ・データ・ストリームを使用することができます。バッチ・データ・ストリームとは、 インターフェース com.ibm.websphere.batch.BatchDataStream を実装する POJO のことです。
チェックポイント・アルゴリズムは、 バッチ・ランタイムが、バッチ・ステップが呼び出されるグローバル・トランザクションをコミットする頻度を 決定する際に役立ちます。チェックポイント・アルゴリズムは、 インターフェース com.ibm.wsspi.batch.CheckpointAlgorithm を実装することによって POJO として構築されます。バッチ・ランタイムにも、 すぐに使用できる時間ベースおよび記録ベースのチェックポイント・アルゴリズムが用意されています。
バッチ・プログラミング・モデルの オプションの機能である結果アルゴリズムは、バッチ・ジョブの戻りコードを操作する場合に 使用されます。バッチ・ランタイムは、すべてのジョブ・ステップの中で 最大数値の戻りコードを返す単純な結果アルゴリズムを提供します。
コンポーネント | タイプ | 実装 | プロバイダー |
---|---|---|---|
バッチ・ジョブ・ステップ | POJO | com.ibm.websphere.BatchJobStepInterface | バッチ・アプリケーション |
バッチ・データ・ストリーム | POJO | com.ibm.websphere.batchDataStream | バッチ・アプリケーション |
チェックポイント・アルゴリズム | POJO | com.ibm.wsspi.batchCheckpointAlgorithm | バッチ・アプリケーション (実行時に提供される実装を使用可能) |
結果アルゴリズム | POJO | com.ibm.wsspi.batchResultsAlgorithm | バッチ・アプリケーション (実行時に提供される実装を使用可能) |
コンポーネント | タイプ | 実装 | プロバイダー |
---|---|---|---|
バッチ・ジョブ・コントローラー | セッション Bean | バッチ・ランタイム | |
バッチ・ジョブ・ステップ・ラッパー | CMP エンティティー Bean | バッチ・ランタイム | |
チェックポイント・アルゴリズム | POJO | バッチ・ランタイム (アプリケーションは独自のものを提供可能) | |
結果アルゴリズム | POJO | バッチ・ランタイム (アプリケーションは独自のものを提供可能) |
EJB デプロイメント記述子:
<ejb-jar id="ejb-jar_ID"> <display-name>POJOSampleEJBs</display-name> <enterprise-beans> <!--Batch Job Controller Bean --> <session id="POJOJob"> <ejb-name>POJOJob</ejb-name> <home>com.ibm.ws.batch.BatchJobControllerHome</home> <remote>com.ibm.ws.batch.BatchJobController</remote> <ejb-class>com.ibm.ws.batch.BatchJobControllerBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Bean</transaction-type> <ejb-local-ref id="EJBLocalRef_1168709876999"> <ejb-ref-name>ejb/POJOStep1</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home> <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local> <ejb-link>POJOStep1</ejb-link> </ejb-local-ref> <ejb-local-ref id="EJBLocalRef_1127247535990"> <ejb-ref-name>ejb/POJOStep2</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface</local-home> <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local> <ejb-link>POJOStep2</ejb-link> </ejb-local-ref> <resource-ref id="ResourceRef_1168711637701"> <!-- default Work Manager for Batch Jobs --> <res-ref-name>wm/BatchWorkManager</res-ref-name> <res-type>commonj.work.WorkManager</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> </session> <!-- Batch Job Step # 1 --> <entity id="POJOStep1"> <ejb-name>POJOStep1</ejb-name> <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home> <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local> <!-- Batch Job Step Wrapper --> <ejb-class>com.ibm.ws.batch.DefaultBatchJobStepBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>com.ibm.websphere.batch.BatchJobStepKey </prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>POJOStep1</abstract-schema-name> <cmp-field id="CMPAttribute_1168709093522"> <field-name>jobID</field-name> </cmp-field> <cmp-field id="CMPAttribute_1168709093542"> <field-name>stepID</field-name> </cmp-field> <!-- Environment Entry associating Step POJO to the Wrapper --> <env-entry> <description>POJO class name for the batch step</description> <env-entry-name>POJOclass</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <!-- POJO Job Step implementation --> <env-entry-value>com.ibm.websphere.samples.POJOStep1</env-entry-value> </env-entry> </entity> <!-- Batch Job Step # 2 --> <entity id="POJOStep2"> <ejb-name>POJOStep2</ejb-name> <local-home>com.ibm.websphere.batch.BatchJobStepLocalHomeInterface </local-home> <local>com.ibm.websphere.batch.BatchJobStepLocalInterface</local> <!-- Batch Job Step Wrapper --> <ejb-class>com.ibm.ws.batch.DefaultBatchJobStepBean</ejb-class> <persistence-type>Container</persistence-type> <prim-key-class>com.ibm.websphere.batch.BatchJobStepKey</prim-key-class> <reentrant>False</reentrant> <cmp-version>2.x</cmp-version> <abstract-schema-name>POJOStep2</abstract-schema-name> <cmp-field id="CMPAttribute_1127248451496"> <field-name>jobID</field-name> </cmp-field> <cmp-field id="CMPAttribute_1127248451497"> <field-name>stepID</field-name> </cmp-field> <!-- Environment Entry associating Step POJO to the Wrapper --> <env-entry> <description>POJO class name for the batch step</description> <env-entry-name>POJOclass</env-entry-name> <env-entry-type>java.lang.String</env-entry-type> <!-- POJO Job Step implementation --> <env-entry-value>com.ibm.websphere.samples.POJOStep2</env-entry-value> </env-entry> </entity> </enterprise-beans> <assembly-descriptor id="AssemblyDescriptor_1168711087550"> <container-transaction> <method> <ejb-name>POJOStep1</ejb-name> <method-name>*</method-name> </method> <method> <ejb-name>POJOStep2</ejb-name> <method-name>*</method-name> </method> <!-- TX REQUIRED--> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar>