このトピックでは、単純なバッチ・アプリケーションの作成方法について説明します。
始める前に
このタスクを開始する前に、環境をセットアップしておく必要があります。
場合によっては、Compute Grid バッチ・アプリケーションの開発前に、com.ibm.websphere.ejbcontainer.expandCMPCFJNDIName カスタム・プロパティーを構成する必要があります。
構成情報については、
Java 仮想マシンのカスタム・プロパティー
を参照してください。
このタスクについて
このサンプル・タスクでは、ユーザーが Rational Application Developer
を使用すると想定しています。その他の開発ツールも使用することができます。
プロシージャー
-
PostingsSample2 という新規エンタープライズ・アプリケーション・プロジェクトを作成します。
-
新規 Enterprise JavaBeans (EJB) プロジェクト・モジュールを追加します。
これによって、新規のエンタープライズ・アーカイブ (EAR) ファイルおよびエンタープライズ EJB プロジェクトが作成されます。
-
batchruntime.jar を
PostingsSample2EJB プロジェクトの Java ビルド・パスへ追加します。batchruntime.jar は、<WAS_HOME>/lib フォルダーにあります。
-
既存の Java クラス AccountOp があると想定します。
このクラスは、2 つのパブリック・インターフェース・メソッド creditAccount(..) および debitAccount(..) を持つ
Java オブジェクトです。これらのメソッドは、必要に応じて、バッチ Bean から呼び出されます。
このクラスをワークスペースからインポートするか、
バッチ呼び出しクラスを作成します。
-
BatchStep クラスを作成します。
バッチ Bean
は、抽象バッチ・ステップ・クラスから継承されるエンティティー Bean です。抽象ジョブ・ステップ PostingSample2Step を作成するには、
次のサブステップを実行します。
-
PostingsSample2EJB プロジェクトで、BatchJobStepInterface から継承される抽象 Java クラス PostingSample2Step を作成します。
-
BatchJobStepInterface を追加します。
-
クラス抽象を作成します。
-
バッチ Bean を作成します。
次のサブステップでは、バッチ Bean を手動で作成する方法について説明します。バッチ Bean では、
提供のプログラミング・モデルから BatchJobStepLocalInterface、BatchJobStepKey
および BatchJobStepLocalHome クラスを再使用します。これらのクラスは再作成されません。バッチ
Bean 実装のみ生成されます。
-
PostingSample2EJB プロジェクトで、PostingsSample2Data という新規 CMP EJB を作成します。
-
ローカル・ホーム・インターフェース・クラスの場合、「BatchJobStepLocalHomeInterface」を選択します。
-
ローカル・インターフェース・クラスの場合、「BatchJobStepLocalInterface」を選択します。
-
「Use single key attribute type for the key class」を選択解除します。
-
キー・クラスの場合、「BatchJobStepKey」を選択します。
-
CMP 属性 ID を削除します。
-
CMP 属性で、ストリング・タイプの 2 つの CMP 属性、jobID と stepID
を追加します。
-
名前として jobID、
タイプとして java.lang.String を追加します。「キー」を選択します。
-
同様に、stepID を追加して、「java.lang.String」と入力し、このタイプ名を「キー」フィールドに挿入します。
-
「BeanSuperclass」を選択します。マッチング・タイプ PostingStep2 を作成します。
この操作により、新規 EJB が作成されますが、プロジェクトには EJB Bean クラスのみ表示されます。プログラミング・モデル提供のクラスから、
ローカル・インターフェース、ホーム・インターフェースおよびキー・クラスが選択されます。
-
デプロイメント記述子を編集します。PostingSample2Data の ejb-jar.xml
ファイルを次のように変更します。
- 「Bean」タブで編集して、CMP 接続ファクトリー JNDI 名を jdbc/lree に、
コンテナー許可タイプを Per_Connection_Factory にします。
- 「アセンブリー」タブで、コンテナー・トランザクションについて、PostingsSample2Data の
すべてのメソッドを「必須」にします。
- WebSphere バインディング の JNDI 名を編集し、ejb/com/ibm/ws/batch/sample/PostingsSample2Data にします。
-
デプロイメント記述子を保存してクローズします。同様に、後で、EJB の実装を追加します。
-
バッチ・ジョブ・セッション Bean を作成します。
このバッチ・ジョブは、デプロイメント記述子で宣言されるセッション Bean ですが、ランタイムの全部分であるため、クラスは生成されません。
-
ejb-jar.xml ファイルから、「Bean」タブで「追加」をクリックして新規セッション EJB、PostingsJob2 を作成します。
-
トランザクション・タイプ を Bean に変更します。
-
Bean クラス、リモート・ホーム・インターフェース、およびリモート・インターフェース で、次のようにストリングを入力します。
- Bean クラス: com.ibm.ws.batch.BatchJobControllerBean
- リモート・インターフェース: com.ibm.ws.batch.BatchJobController
- リモート・ホーム・インターフェース: com.ibm.ws.batch.BatchJobControllerHome
ランタイム環境には、すべてのクラスが存在しているため、新規に生成されるクラスはありません。デプロイメント記述子でジョブ・セッション Bean を宣言するのみです。
-
WebSphere バインディング Java Naming and Directory Interface (JNDI) 名を編集して、ejb/com/ibm/ws/batch/PostingsSample2Job にします。
-
EJB 参照を PostingsSample2Job に追加します。
-
PostingsSample2Data Bean を選択し、名前 ejb/PostingsSample2Data を追加します。
ローカル参照タイプを選択します。
-
作業マネージャー参照を作成します。
- 「references」タブの PostingSample2Job Bean で、「追加」をクリックします。
「リソース参照」を選択し、「次へ」をクリックして、次の情報を指定します。
- 名前: wm/BatchWorkManager
- タイプ: commonj.work.WorkManager を選択します。
- 認証: Container
- Sharing Scope: Shareable
-
wm/BatchWorkManger の JNDI 名を編集して wm/default にします。
-
ejb-jar.xml ファイルを保存してクローズします。
-
入力バッチ・データ・ストリームを作成します。
入力および出力ストリームは、ゼロ、1、または n の場合があります。この例では、ファイルから読み取る入力ストリームが 1、
出力ストリームはなしです。出力はコンソールに表示されます。
バッチ・データ・ストリーム (BDS) クラスは、Plain Old Java Object (POJO) です。入力ストリームを作成するには、次のステップを実行します。
-
com.ibm.ws.batch.sample パッケージに、PostingsSample2InputStream
という新規クラスを作成します。
-
BatchDataStream インターフェースを実装します。
このアクションにより、
新規 PostingSample2Input ストリーム・クラスが作成されます。後で実装を追加することができます。
-
Posting2Class を作成し、入力ストリームからのレコードを示します。
このクラスは、バッチ入力ストリームにおけるレコードのオブジェクト表現です。
これは、入力 BDS からのレコードの読み取り時に構成され、バッチ Bean に受け渡されます。このクラスは、入力ストリームにおけるフィールドの、属性および対応する getter と setter を含むデータ Bean または cargo Bean に類似しています。
-
シリアライズ可能インターフェースを実装する Posting2 という名前の新規クラスを作成します。
後で実装を追加することができます。
-
実装をクラスに追加します。
-
ここで、付加クラス・ファイルのように、PostingSample2Data Bean、PostingSample2Step
および PostingSample2InputStream に実装を追加します。この例では、
処理の観点から、簡潔になっており、
新規バッチ・アプリケーション開発に関係するステップが強調されています。
実装クラスを追加したあと、EJB をデプロイすることができます。