計算主体プログラミング・モデル
計算主体のアプリケーションは、従来の Java™ Platform, Enterprise Edition (Java EE) の要求と応答のパラダイムにうまく適合しない計算主体の作業を実行するアプリケーションです。
計算主体アプリケーション
- 非同期に作業を実行依頼したり開始したりする必要がある
- 作業を長時間実行する必要がある
- オペレーターおよび管理者から個々の作業単位が可視かつ管理可能である必要がある
- 作業を非同期でサブミットおよび管理するジョブの使用
- 非同期 Bean プログラミング・モデルへの小規模な拡張による長時間実行作業のサポート
以下のセクションでは、非同期 Bean プログラミング・モデルへの拡張に関する追加情報を記載します。
コントローラー Bean
<session id="supply a suitable name here">
<ejb-name>CIController</ejb-name>
<home>com.ibm.ws.ci.CIControllerHome</home>
<remote>com.ibm.ws.ci.CIController</remote>
<ejb-class>com.ibm.ws.ci.CIControllerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
<resource-ref id="WorkManager_ResourceRef">
<description>
WorkManager that is used to execute jobs.
<res-ref-name>wm/CIWorkManager</res-ref-name>
<res-type>commonj.work.WorkManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
計算主体アプリケーションのパッケージ化
計算主体アプリケーションのロジック、いくつかの CIWork オブジェクト、およびそれらの CIWork オブジェクトをサポートするためのクラスが、Java EE アプリケーションのエンタープライズ・アーカイブ (EAR) ファイルのエンタープライズ Bean モジュール内にパッケージ化されます。 エンタープライズ Bean モジュールのデプロイメント記述子には、前述のステートレス・セッション Bean の定義が含まれている必要があります。 アプリケーション自体が他のエンタープライズ Bean またはリソースを使用する場合は、デプロイメント記述子内にはそれらの Bean およびリソースの定義も含まれている場合があります。 エンタープライズ Bean モジュールおよび非同期 Bean を含む Java EE アプリケーションの構成に使用する場合と同様の方法で IBM® Rational® Application Developer などの Java EE 開発ツールを使用して、計算主体アプリケーションを開発してパッケージ化することができます。 pgcpackager タスクを使用して計算主体アプリケーションをパッケージ化することもできます。
計算主体アプリケーションのライフサイクル
- CIWork クラスの引数なしコンストラクターを使用して、ジョブ・ステップの xJCL にあるクラス名エレメントで指定されたアプリケーション CIWork オブジェクトをインスタンス化します。
- CIWork オブジェクトの setProperties() メソッドを呼び出して、ジョブ・ステップの xJCL に定義されたすべてのプロパティーを渡します。
- エンタープライズ Bean モジュールのデプロイメント記述子に定義された作業マネージャーを検索し、それを使用して CIWork オブジェクトの run() メソッドを非同期に呼び出します。
run() メソッドが戻る前にジョブが取り消された場合、CIControllerBean は別のスレッドで CIWork オブジェクトの release() メソッドを呼び出します。 run() メソッドがすぐに戻るような release() メソッドのロジックを用意するのは、長時間実行アプリケーションの開発者です。 ジョブは、run() メソッドが戻るまで cancel pending の状態に置かれます。
ジョブが取り消されず、例外を返すことなく run() メソッドが戻った場合、ジョブは正常に完了したことになります。 run() メソッドが例外を返した場合、ジョブ状況は execution failed になります。 run() メソッドが正常に、または例外を返して戻った場合、CIWork オブジェクトはこれ以上呼び出されません。 run() メソッドに対する参照は、すべて除去されます。
計算主体ジョブ・ステップ
他のバッチ・ジョブとは異なり、計算主体ジョブを構成するのは 1 つのジョブ・ステップです。 このジョブ・ステップは、com.ibm.websphere.ci.CIWork インターフェースを実装するクラスのインスタンスによって表されます。 CIWork インターフェースは、アプリケーション・サーバーの非同期 Bean プログラミング・モデルおよび Java Specification Request (JSR) 237 から commonj.Work 作業インターフェースを拡張します。 これらの拡張は、ジョブに指定されたジョブ・ステップ固有のプロパティーを CIWork オブジェクトに渡すための手段を提供する 2 つのメソッドから構成されます。
詳しくは、API 資料を参照してください。
非同期 Bean については、『非同期 Bean の使用』を参照してください。