単純なトランザクション・バッチ・アプリケーションの開発
バッチ・ジョブ・コントローラーと Enterprise JavaBeans (EJB) データ・ストリーム、コマンド行、または Apache ANT ツールを使用して、単純なバッチ・アプリケーションを作成することができます。
このタスクについて

- バッチ・アプリケーションが開始される可能性があるすべてのマシンでデータを同等に使用できるようにします。例えば、ネットワーク・ファイル・システムを使用します。この処置では、アプリケーションのパフォーマンスが低下することがあります。
- ローカル・データが存在するマシン上でのみ稼動できるアプリケーション・サーバーにアプリケーションをデプロイします。この処置を実行するには、ノード・グループ内のメンバー・ノードが 1 つのみであるクラスターにアプリケーションをデプロイします。

コマンドは、表示の都合上、複数行に分割されています。
手順
- バッチ・ジョブ・コントローラーと EJB データ・ストリームを使用してバッチ・ジョブを作成します。
- バッチ・ジョブ・ステップを作成します。
- com.ibm.websphere.BatchJobStepInterface インターフェースを実装する Java™ クラスを作成します。
- ビジネス・ロジックを実装します。
ステップに 1 つの入力ストリームと 1 つの出力ストリームがある場合は、代わりに GenericXDBatchStep の汎用バッチ・ステップを使用することもできます。
- バッチ・データ・ストリームを作成します。
- com.ibm.websphere.batch.BatchDataStream インターフェースを実装する Java クラスを作成します。
バッチ・データ・ストリームにはビジネス・ロジックからアクセスします。例えば、jobID と stepID で BatchDataStreamMgr を呼び出すことによってバッチ・ジョブ・ステップからアクセスします。JobID と stepID は、キー BatchConstants.JOB_ID と BatchConstants.STEP_ID を使用して、ステップ Bean プロパティー・リストから取得します。
- BatchConstants.JOB_ID を com.ibm.websphere.batch.JobID にマップし、BatchConstants.STEP_ID を com.ibm.websphere.batch.StepID にマップします。
BatchConstants クラスへのアクセス権限を既に持っている必要があります。
バッチ・データ・ストリームのフレームワークには、ファイルやデータベースなどのさまざまなタイプのデータ・ストリームを処理するための、すぐに使えるいくつかのパターンが用意されています。バッチ・データ・ストリームのフレームワークを使用するには、次のステップを実行します。
- TextFile、ByteFile、JDBC、z/OS® のストリームなど、操作するデータ・ストリームのタイプを指定します。
- ストリームから読み取るか、ストリームに書き込むかを指定します。
- バッチ・データ・ストリームのフレームワークおよびパターンの表を参照してください。サポート・クラスの列から、データ・ストリームのタイプおよび操作と一致するクラスを選択します。例えば、テキスト・ファイルからデータを読み取るには、TextFileReader を選択します。
- パターン名の列に記載されている、前述のステップで選択したサポート・クラスに対応するインターフェースを実装します。サポート・クラスは、ストリームおよびバッチ・プログラミング・モデルに関連する記帳アクティビティーをすべて処理します。実装クラスでは、ストリーム処理ロジックに焦点が当てられています。
- xJCL でサポート・クラスおよび実装クラスを宣言します。
- ステップで必要なデータ・ストリームごとに、この手順を繰り返します。
- com.ibm.websphere.batch.BatchDataStream インターフェースを実装する Java クラスを作成します。
- オプション: ジョブ・ステップ・コンテキストを取得します。
JobStepContext ctx= JobStepContextMgr.getContext();
JobStepContextMgr サービス・クラスは、バッチ・ジョブ・ステップが JobStepContext オブジェクトへの参照を取得するのを可能にします。ジョブ・ステップ・コンテキストには、以下の機能があります。- 現行バッチ・ジョブ・ステップが実行されるコンテキストを一意的に識別する情報 (ジョブ ID など) へのアクセス
- バッチ・ジョブ・ステップの存続期間に、バッチ・プログラミング・フレームワーク・メソッドの間で アプリケーション固有情報を渡すことができる一時的なユーザー・データ域。
- ステップをまたがってアプリケーション固有情報を渡すことができるパーシスタント・ユーザー・データ域。
PersistentMap ヘルパー・クラスを使用して、ジョブ・ステップ・コンテキストのパーシスタント・ユーザー・データ域での基本的な型 (boolean や double など) の保管を単純化できます。
- xJCL でバッチ・データ・ストリームを定義します。
PATTERN_IMPL_CLASS クラスは BDS フレームワーク・パターンのユーザー実装を示し、impl-class プロパティーはサポート・クラスを示します。<batch-data-streams> <bds> <logical-name>inputStream</logical-name> <props> <prop name="PATTERN_IMPL_CLASS" value="MyBDSStreamImplementationClass"/> <prop name="file.encoding" value="8859_1"/> <prop name="FILENAME" value="${inputDataStream}" /> <prop name="PROCESS_HEADER" value="true"/> <prop name="AppendJobIdToFileName" value="true"/> </props> <impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.FileByteReader </impl-class> </bds>
- オプション: レベル・スキップ処理を有効にします。
トランザクションのバッチ・ジョブでレコードの読み取りエラーおよび書き込みエラーをスキップするには、レコード・スキップ処理を使用します。 レコード・スキップ・ポリシーは、xJCL で指定します。詳しくは、レコード・スキップ処理に関するトピックをお読みください。
- オプション: ステップ再試行処理を有効にします。
トランザクション・バッチ・ジョブにおいて processJobStep メソッドでエラーが発生したときは、ステップ再試行処理を使用してジョブ・ステップを再試行します。ステップ再試行ポリシーは xJCL で指定します。 詳しくは、ステップ再試行処理に関するトピックを参照してください。
- オプション: トランザクション・モードを構成します。
トランザクション・モードを使用して、ジョブ関連の成果物が、 グローバル・トランザクション・モードで呼び出されるか、ローカル・トランザクション・モードで呼び出されるかを定義します。詳しくは、構成可能なトランザクション・モードに関するトピックをお読みください。
- オプション: ジョブ・リスナーを用意します。
ジョブおよびステップに関して初期設定とクリーンアップを追加する com.ibm.websphere.batch.listener.JobListener インターフェースの実装を提供します。ジョブ・レベル・リスナー・エレメントを使用して、ジョブ・リスナーを xJCL に指定してください。
ジョブ・リスナー beforeJob() メソッドは、どのユーザー成果物の呼び出しよりも前に呼び出されます。ジョブ・リスナー afterJob() メソッドは、最後のユーザー成果物が呼び出された後で呼び出されます。ジョブ・リスナー beforeStep() メソッドは、ステップ関連のどのユーザー成果物よりも前に呼び出されます。ジョブ・リスナー afterStep() メソッドは、ステップ関連の最後のユーザー成果物として呼び出されます。ジョブ・リスナーは、呼び出されるたびに、ジョブ・ログにメッセージを記録します。
- バッチ・ジョブ・コントローラーを宣言します。
- ステートレス・セッション Bean をデプロイメント記述子に追加し、product が提供する実装クラスを参照します。これは、Bean クラスとして com.ibm.ws.batch.BatchJobControllerBean を指定することによって行います。この指定は、バッチ・アプリケーション当たり 1 回のみ実行します。
- リモート・ホーム・インターフェース・クラスに com.ibm.ws.batch.BatchJobControllerHome を使用し、リモート・インターフェース・クラスに com.ibm.ws.batch.BatchJobController を使用します。
- EJB デプロイメント記述子を構成します。
- タイプが commonj.work.WorkManager であるデフォルトの WorkManager wm/BatchWorkManager に対するコントローラー Bean のリソース参照を構成します。
トラブルの回避 (Avoid trouble): バッチ・アプリケーションの Enterprise JavaBeans (EJB) デプロイメント記述子でバッチ・コントローラー Bean のデプロイメント記述子を宣言する必要があります。バッチ・アプリケーション当たり、1 つのコントローラー Bean のみを定義できます。gotcha
- バッチ・ジョブ・ステップを作成します。
- コマンド行を使用してバッチ・ジョブを作成します。
- バッチ・ジョブ・ステップを作成します。
- com.ibm.websphere.BatchJobStepInterface インターフェースを実装する Java クラスを作成します。
- ビジネス・ロジックを実装します。
ステップに 1 つの入力ストリームと 1 つの出力ストリームがある場合は、代わりに GenericXDBatchStep の汎用バッチ・ステップを使用することもできます。
- バッチ・データ・ストリームを作成します。
- com.ibm.websphere.batch.BatchDataStream インターフェースを実装する Java クラスを作成します。
バッチ・データ・ストリームにはビジネス・ロジックからアクセスします。例えば、jobID と stepID で BatchDataStreamMgr を呼び出すことによってバッチ・ジョブ・ステップからアクセスします。JobID と stepID は、キー BatchConstants.JOB_ID と BatchConstants.STEP_ID を使用して、ステップ Bean プロパティー・リストから取得します。
- BatchConstants.JOB_ID を com.ibm.websphere.batch.JobID にマップし、BatchConstants.STEP_ID を com.ibm.websphere.batch.StepID にマップします。
BatchConstants クラスへのアクセス権限を既に持っている必要があります。
バッチ・データ・ストリームのフレームワークには、ファイルやデータベースなどのさまざまなタイプのデータ・ストリームを処理するための、すぐに使えるいくつかのパターンが用意されています。バッチ・データ・ストリームのフレームワークを使用するには、次のステップを実行します。
- TextFile、ByteFile、JDBC、z/OS のストリームなど、操作するデータ・ストリームのタイプを指定します。
- ストリームから読み取るか、ストリームに書き込むかを指定します。
- バッチ・データ・ストリームのフレームワークおよびパターンの表を参照してください。サポート・クラスの列から、データ・ストリームのタイプおよび操作と一致するクラスを選択します。例えば、テキスト・ファイルかデータを読み取るには、TextFileReader を選択します。
- パターン名の列に記載されている、前述のステップで選択したサポート・クラスに対応するインターフェースを実装します。サポート・クラスは、ストリームおよびバッチ・プログラミング・モデルに関連する記帳アクティビティーをすべて処理します。実装クラスでは、ストリーム処理ロジックに焦点が当てられています。
- xJCL でサポート・クラスおよび実装クラスを宣言します。
- ステップで必要なデータ・ストリームごとに、この手順を繰り返します。
- com.ibm.websphere.batch.BatchDataStream インターフェースを実装する Java クラスを作成します。
- ジョブ・ステップ・コンテキストを取得します。
JobStepContext ctx= JobStepContextMgr.getContext();
JobStepContextMgr サービス・クラスは、バッチ・ジョブ・ステップが JobStepContext オブジェクトへの参照を取得するのを可能にします。ジョブ・ステップ・コンテキストには、以下の機能があります。- 現行バッチ・ジョブ・ステップが実行されるコンテキストを一意的に識別する情報 (ジョブ ID など) へのアクセス
- バッチ・ジョブ・ステップの存続期間に、バッチ・プログラミング・フレームワーク・メソッドの間で アプリケーション固有情報を渡すことができる一時的なユーザー・データ域。
- ステップをまたがってアプリケーション固有情報を渡すことができるパーシスタント・ユーザー・データ域。
PersistentMap ヘルパー・クラスを使用して、ジョブ・ステップ・コンテキストのパーシスタント・ユーザー・データ域での基本的な型 (boolean や double など) の保管を単純化できます。
- コマンド・プロンプトを開き、Java がパス上にあることを確認します。
- 次のコマンドをすべて 1 行に入力して実行します。
java -cp ${WAS_INSTALL_ROOT}/plugins/com.ibm.ws.batch.runtime.jar com.ibm.ws.batch.packager.WSBatchPackager -appname=<Application_Name> -jarfile=<jarfile containing the POJO batch steps> -earfile=<name of the output EAR file without the .ear extension> [-utilityjars=<semicolon separated list of utility jars>] [-debug] [-gridJob]
例えば、バッチ・ジョブの場合、以下のコマンドを発行します。java -cp ${WAS_INSTALL_ROOT}/plugins/com.ibm.ws.batch.runtime.jar com.ibm.ws.batch.packager.WSBatchPackager -appname=XDCGIVT -jarfile=XDCGIVTEJBs.jar -earfile=XDCGIVT
例えばバッチ・ジョブの場合は、以下のように実行します。java -cp ${WAS_INSTALL_ROOT}/plugins/com.ibm.ws.batch.runtime.jar com.ibm.ws.batch.packager.WSBatchPackager -Dfile.encoding=ISO8859-1 -appname=<Application_Name> -jarfile=<jarfile containing the POJO batch steps> -earfile=<name of the output EAR file without the .ear extension> [-utilityjars=<semicolon separated list of utility jars>] [-debug] [-gridJob]
java -cp ${WAS_INSTALL_ROOT}/plugins/com.ibm.ws.batch.runtime.jar com.ibm.ws.batch.packager.WSBatchPackager -Dfile.encoding=ISO8859-1 -appname=XDCGIVT -jarfile=XDCGIVTEJBs.jar -earfile=XDCGIVT
トラブルの回避 (Avoid trouble): -Dfile.encoding=ISO8859-1 を含めない場合は、コード・ページの違いにより、EAR 記述子および Enterprise JavaBeans (EJB) Java アーカイブ (JAR) 記述子が無効になります。gotcha
- バッチ・アプリケーションをパッケージ化します。
以下の方法の 1 つを使用します。
- WSBatchPackager スクリプトを使用して、アプリケーションをパッケージ化してください。
<WASHOME>/stack_products/WCG/bin/WSBatchPackager.sh -appname=<application_name> -jarfile=<jar_file_containing_POJO_step_classes> -earfile=<output_ear_file_name> [-utilityjars=<semicolon_separated_utility_jars>] [-nonxadsjndiname=<non-xa_datasource_JNDI_name_for_CursorHoldableJDBCReader>;<non-XA_datasource_JNDI_name_2>;...] [-debug]
例えば、次のように実行します。./WSBatchPackager.sh -appname=XDCGIVT -jarfile=XDCGIVTEJBs.jar -earfile=XDCGIVT -utilityjars=myutility.jar -nonxadsjndiname=jdbc/ivtnonxa
<WASHOME>/stack_products/WCG/bin/WSBatchPackager.sh -Dfile.encoding=ISO8859-1 -appname=<application_name> -jarfile=<jar_file_containing_POJO_step_classes> -earfile=<output_ear_file_name> [-utilityjars=<semicolon_separated_utility_jars>] [-nonxadsjndiname=<non-xa_datasource_JNDI_name_for_CursorHoldableJDBCReader>;<non-XA_datasource_JNDI_name_2>;...] [-debug]
例えば、次のように実行します。./WSBatchPackager.sh -Dfile.encoding=ISO8859-1 -appname=XDCGIVT -jarfile=XDCGIVTEJBs.jar -earfile=XDCGIVT -utilityjars=myutility.jar -nonxadsjndiname=jdbc/ivtnonxa
トラブルの回避 (Avoid trouble): -Dfile.encoding=ISO8859-1 を含めない場合は、コード・ページの違いにより、EAR 記述子および Enterprise JavaBeans (EJB) Java アーカイブ (JAR) 記述子が無効になります。gotcha
- java コマンドを使用してアプリケーションをパッケージ化します。
コマンド・プロンプトを開き、パス上に java があることを確認します。
- WSBatchPackager スクリプトを使用して、アプリケーションをパッケージ化してください。
- バッチ・ジョブ・ステップを作成します。
- ANT を使用してバッチ・ジョブを作成します。
- バッチ・ジョブ・ステップを作成します。
- com.ibm.websphere.BatchJobStepInterface インターフェースを実装する Java クラスを作成します。
- ビジネス・ロジックを実装します。
ステップに 1 つの入力ストリームと 1 つの出力ストリームがある場合は、代わりに GenericXDBatchStep の汎用バッチ・ステップを使用することもできます。
- バッチ・データ・ストリームを作成します。
- com.ibm.websphere.batch.BatchDataStream インターフェースを実装する Java クラスを作成します。
バッチ・データ・ストリームにはビジネス・ロジックからアクセスします。例えば、jobID と stepID で BatchDataStreamMgr を呼び出すことによってバッチ・ジョブ・ステップからアクセスします。JobID と stepID は、キー BatchConstants.JOB_ID と BatchConstants.STEP_ID を使用して、ステップ Bean プロパティー・リストから取得します。
- BatchConstants.JOB_ID を com.ibm.websphere.batch.JobID にマップし、BatchConstants.STEP_ID を com.ibm.websphere.batch.StepID にマップします。
BatchConstants クラスへのアクセス権限を既に持っている必要があります。
バッチ・データ・ストリームのフレームワークには、ファイルやデータベースなどのさまざまなタイプのデータ・ストリームを処理するための、すぐに使えるいくつかのパターンが用意されています。バッチ・データ・ストリームのフレームワークを使用するには、次のステップを実行します。
- TextFile、ByteFile、JDBC、z/OS のストリームなど、操作するデータ・ストリームのタイプを指定します。
- ストリームから読み取るか、ストリームに書き込むかを指定します。
- バッチ・データ・ストリームのフレームワークおよびパターンの表を参照してください。サポート・クラスの列から、データ・ストリームのタイプおよび操作と一致するクラスを選択します。例えば、テキスト・ファイルからデータを読み取るには、TextFileReader を選択します。
- パターン名の列に記載されている、前述のステップで選択したサポート・クラスに対応するインターフェースを実装します。サポート・クラスは、ストリームおよびバッチ・プログラミング・モデルに関連する記帳アクティビティーをすべて処理します。実装クラスでは、ストリーム処理ロジックに焦点が当てられています。
- xJCL でサポート・クラスおよび実装クラスを宣言します。
- ステップで必要なデータ・ストリームごとに、この手順を繰り返します。
- com.ibm.websphere.batch.BatchDataStream インターフェースを実装する Java クラスを作成します。
- ジョブ・ステップ・コンテキストを取得します。
JobStepContext ctx= JobStepContextMgr.getContext();
JobStepContextMgr サービス・クラスは、バッチ・ジョブ・ステップが JobStepContext オブジェクトへの参照を取得するのを可能にします。ジョブ・ステップ・コンテキストには、以下の機能があります。- 現行バッチ・ジョブ・ステップが実行されるコンテキストを一意的に識別する情報 (ジョブ ID など) へのアクセス
- バッチ・ジョブ・ステップの存続期間に、バッチ・プログラミング・フレームワーク・メソッドの間で アプリケーション固有情報を渡すことができる一時的なユーザー・データ域。
- ステップをまたがってアプリケーション固有情報を渡すことができるパーシスタント・ユーザー・データ域。
PersistentMap ヘルパー・クラスを使用して、ジョブ・ステップ・コンテキストのパーシスタント・ユーザー・データ域での基本的な型 (boolean や double など) の保管を単純化できます。
- バッチ・ジョブでは、com.ibm.ws.batch.runtime.jar ファイルがクラスパス上にあることを確認します。
- タスクを宣言します。 次のコマンドを使用してタスクを宣言します。
<taskdef name="pgcpackager" classname="com.ibm.ws.batch.packager.PGCPackager" classpath="${WAS_INSTALL_ROOT}/plugins/com.ibm.ws.batch.runtime.jar" />
- Java ファイルをアプリケーションにコンパイルしたら、pgcpackager タスクを呼び出します。
<pgcpackager appname="<appname>" earFile="<location name of EAR file to generate>" jarfile="location of the POJO jar file"/>
- バッチ・ジョブ・ステップを作成します。
タスクの結果
次のタスク
サブトピック
バッチ・アプリケーションのコンポーネント
バッチ・アプリケーションの開発者およびバッチ・ランタイム環境によって、バッチ・アプリケーションのコンポーネントが提供されます。バッチ・プログラミング・モデル
バッチ・アプリケーションは、Enterprise JavaBeans (EJB) ベースの Java Platform Enterprise Edition (Java EE) アプリケーションです。 これらのアプリケーションは、アプリケーション用バッチ・ジョブの開始をバッチ・ランタイム環境で管理可能にする、いくつかの明確に定義されたインターフェースに従っています。レコード・スキップ処理
トランザクションのバッチ・ジョブでレコードの読み取りエラーおよび書き込みエラーをスキップするには、レコード・スキップ処理を使用します。 レコード・スキップ・ポリシーは xJCL で指定します。ステップ再試行処理
トランザクション・バッチ・ジョブにおいて processJobStep メソッドでエラーが発生したときは、ステップ再試行処理を使用してジョブ・ステップを再試行します。ステップ再試行ポリシーは xJCL で指定します。構成可能トランザクション・モード
トランザクション・モードを使用して、ジョブ関連の成果物が、 グローバル・トランザクション・モードで呼び出されるか、ローカル・トランザクション・モードで呼び出されるかを定義します。トランザクション・モードは xJCL で指定します。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tgrid_bgridtutorial2
ファイル名:tgrid_bgridtutorial2.html