このトピックでは、単純なバッチ・アプリケーションの作成方法について説明します。
Before you begin
このタスクを開始する前に、環境をセットアップしておく必要があります。
Why and when to perform this task
このサンプル・タスクでは、ユーザーが Rational Application Developer (RAD)
を使用すると想定しています。その他の開発ツールも使用することができます。
- PostingsSample2 という新規エンタープライズ・アプリケーション・プロジェクトを作成します。
- 新規 Enterprise JavaBeans (EJB) プロジェクト・モジュールを追加します。 これにより、
新規 EAR ファイルおよび EJB プロジェクトが作成されます。
- BATCH_RUNTIME を
PostingsSample2EJB プロジェクトの Java ビルド・パスへ追加します。
- 既存の Java クラス AccountOp があると想定します。
このクラスは、2 つのパブリック・インターフェース・メソッド creditAccount(..) および debitAccount(..) を持つ
Java オブジェクトです。これらのメソッドは、必要に応じて、バッチ Bean から呼び出されます。
このクラスをワークスペースからインポートするか、
バッチ呼び出しクラスを作成します。
- BatchStep クラスを作成します。 バッチ Bean
は、抽象バッチ・ステップ・クラスから継承されるエンティティー Bean です。抽象ジョブ・ステップ PostingSample2Step を作成するには、
次の手順に従います。
- PostingsSample2EJB プロジェクトで、BatchJobStepInterface から継承される抽象 Java クラス PostingSample2Step を作成します。
- BatchJobStepInterface を追加します。
- クラス抽象を作成します。
- バッチ Bean (エンティティー EJB) を作成します。 次のステップでは、
バッチ 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 にします。
- 「Assembly」タブで、「Required」の 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 バインディング JNDI 名を編集して ejb/com/ibm/ws/batch/PostingsSample2Job
にします。
- タイプ EJB 参照の PostingsSample2Job に参照を追加します。
- PostingsSample2Data Bean を選択し、名前 ejb/PostingsSample2Data を追加します。
ローカル参照タイプを選択します。
- 作業マネージャー参照を作成します。
- 「references」タブの PostingSample2Job Bean で、「追加」をクリックします。
「Resource Reference」を選択して、「次へ」をクリックします。
- 名前: wm/BatchWorkManager
- タイプ: commonj.work.WorkManager を選択します。
- 認証: Container
- Sharing Scope: Shareable
- Java Naming and Directory Interface (JNDI) 名 wm/BatchWorkManger
を編集して、wm/default にします。
- ejb-jar.xml を保管してクローズします。
- 入力バッチ・データ・ストリームを作成します。 入力および出力ストリームは、
ゼロ、1 または n の場合があります。この例では、ファイルから読み取る InputStream が 1、
出力ストリームはなしです。出力はコンソールに表示されます。
BDS クラスは POJO です。入力ストリームを作成するには、次のようにします。
- com.ibm.ws.batch.sample パッケージに、PostingsSample2InputStream
という新規クラスを作成します。
- BatchDataStream インターフェースをインプリメントします。 これにより、
新規 PostingSample2Input ストリーム・クラスが作成されます。後でインプリメンテーションを追加することができます。
- Posting2 クラスを作成し、入力ストリームからのレコードを示します。
このクラスは、バッチ入力ストリームのレコードのオブジェクト表記です。入力 BDS からレコードを読み取っている間に構成され、
バッチ Bean に渡されます。このクラスは、
入力ストリームのフィールドの属性および対応する getter と setter を含むデータ Bean または cargo Bean に類似しています。
- シリアライズ可能インターフェースをインプリメントする Posting2 という名前の新規クラスを作成します。 後でインプリメンテーションを追加することができます。
- インプリメンテーションをクラスに追加します。
- ここで、付加クラス・ファイルのように、PostingSample2DataBean、PostingSample2Step
および PostingSample2InputStream にインプリメンテーションを追加します。この例では、
処理の観点から、簡潔になっており、
新規バッチ・アプリケーション開発に関係するステップが強調されています。
インプリメンテーション・クラスを追加したあと、EJB をデプロイすることができます。
What to do next
管理コンソールのナビゲーション・ツリーで、「Runtime Operations」を展開し、
「Job Management」を選択します。右側のパネルで、
エラー・メッセージのない空のジョブ・テーブルが表示されていることを確認します。