EJB と Enterprise Server の間で J2EE コネクタを使用するための、トランザクションおよび非トランザクションのシナリオの例を以下に示します。
- シナリオ 1:非トランザクション
-
EJB 通信 |
ステートレス |
Enterprise Server 通信 |
ステートレス |
- 使用法
- COBOL プロシージャを呼び出す際に、次の COBOL プロシージャ呼び出しとの間で EJB または SEP の状態を維持する必要がない場合に使用します。
- 例
- getInvoiceDetails(String invoiceNumber) は、指定された文字列に対応する請求書の詳細のみを返します。このプロシージャを複数回呼び出す場合にも状態は必要ありません。
- 実装
- IMTK から EJB を生成する際に、JNDI を使用して、サービス インターフェイス名に基づいて EJB を取得します。これにより、内部でリソース アダプターが呼び出され、さらに COBOL が呼び出されます。
- シナリオ 2:非トランザクション
-
EJB 通信 |
ステートフル |
Enterprise Server 通信 |
ステートフル |
- 使用法
- 1 つ以上の COBOL プロシージャを呼び出す際に、EJB および SEP で状態を維持する必要がある (各呼び出しで同じ SEP にアクセスする) 場合に使用します。非トランザクションのステートフルな呼び出しをステートレスな呼び出しに変換することもできます。そのためには、各呼び出しの状態をプログラムではなくデータベースに格納します。状態をプログラムで維持する必要があるかどうか、データベースで維持することもできるかどうかは、アプリケーションの設計によって決まります。
- 例
- ショッピング カートに商品を追加すると、その前に追加した商品が入っているカートに入れられます。ショッピング カート内のすべての商品を購入すると、販売が完了します。このシナリオでは、ショッピング カート内のすべての商品を作業記憶域に保管して、複数の呼び出しにわたって使用できます。
- 実装
- COBOL プロシージャを呼び出す際に、次の COBOL プロシージャ呼び出しとの間で EJB または SEP の状態を維持する必要がない場合に使用します。ただし、ステートフル Bean の使用後に削除プロシージャを呼び出して、EJB とのやり取りのためだけに作成された一時 SEP を破棄し、ステートフル EJB をコンテナーから削除する必要があります。
- シナリオ 3:トランザクション
-
EJB 通信 |
ステートフル |
Enterprise Server 通信 |
ステートレス |
- 使用法
- トランザクションが必要で、xa_commit/xa_rollback の実行以降に SEP を維持する必要がない場合に使用します。xa_commit/xa_rollback の実行後に SEP が自動的に破棄されます。
- 実装
- トランザクションごとに EJB を削除し、次のトランザクションのための新しい EJB を作成します。
- シナリオ 4:トランザクション
-
EJB 通信 |
ステートフル |
Enterprise Server 通信 |
ステートフル |
- 使用法
- トランザクションが必要で、xa_commit/xa_rollback の実行以降も SEP を維持する場合に使用します。
- 実装
- すべての作業が完了した後に EJB を削除します。