Cosminexus サービスプラットフォーム システム構築・運用ガイド

[目次][用語][索引][前へ][次へ]

5.4.3 SessionBeanを使ったサービス呼び出し

<この項の構成>
(1) Cosminexus(EJBコンテナ)との関係
(2) サービス部品呼び出し時のユーザ電文とサービス部品のスタブとの関係
(3) SessionBean使用時のトランザクション

(1) Cosminexus(EJBコンテナ)との関係

実行環境のHCSCサーバは,Cosminexus のEJBコンテナ上で動作します。

HCSCサーバのリクエスト受付は,EJB(Stateless Session Bean)のリモートインターフェースとして提供され,RMI-IIOPで接続します。

HCSCサーバのサービスアダプタからは,EJB(Stateless Session BeanまたはStatefull Session Bean)で作成されたサービス部品が実行されます。Cosminexus(EJBコンテナ)との関係を次の図に示します。

図5-24 Cosminexus(EJBコンテナ)との関係

[図データ]

(2) サービス部品呼び出し時のユーザ電文とサービス部品のスタブとの関係

SessionBean使用時のユーザ電文とスタブの関係を次の図に示します。

図5-25 SessionBean使用時のユーザ電文とスタブの関係

[図データ]

サービスアダプタを定義するときは,サービス部品のスタブを定義します(サービス部品のスタブには,作成したサービス部品のユーザクラスが含まれています。また,要求電文,応答電文および例外の形式が定義されています)。

サービス部品側のJ2EEサーバにCosminexusを使用している場合,サービス部品のスタブを取得するには,J2EEサーバのcjgetstubsjarコマンドを使用します。

サービスリクエスタからサービス部品を呼び出すときは,製品提供のスタブを使用します。製品提供のスタブは,標準受付のインターフェースになっています。サービスリクエスタから標準受付を呼び出すときには,サービス部品側の電文フォーマットに合わせた要求電文を事前に作成し,標準受付のパラメタ(ユーザ電文のパラメタ)に設定して実行します。

サービスリクエスタからビジネスプロセスを呼び出すときは,要求電文はビジネスプロセスの受付アクティビティに定義した電文フォーマットになります。サービスリクエスタ内で,ビジネスプロセスの受付アクティビティで定義されている要求電文の電文フォーマットに合わせた電文を作成し,作成した電文を標準受付のパラメタ(ユーザ電文のパラメタ)に設定して実行します。

サービスリクエスタへの応答は,サービスアダプタで定義した応答電文の電文フォーマットを使用します。

cjgetstubsjarコマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。

(3) SessionBean使用時のトランザクション

SessionBean使用時のトランザクションを次の図に示します。

図5-26 SessionBean使用時のトランザクション

[図データ]

SessionBean使用時,HCSCサーバ内はCMT(Container Managed Transaction)で動作します。また,標準受付のトランザクション属性はRequired属性です。そのため,サービスリクエスタがトランザクションスコープ内でHCSCサーバの標準受付を呼び出したとき,トランザクションコンテキストがHCSCサーバ側に引き継がれ,HCSCサーバ内の処理はサービスリクエスタ側のトランザクションスコープ内に入ります。また,サービスリクエスタがトランザクションスコープ外でHCSCサーバの標準受付を呼び出したとき,HCSCサーバ側で新しいトランザクションが開始されます。

なお,サービス部品のトランザクション属性はRequiresNewまたはNotSupportedでなければなりません。そのため,トランザクションは,サービス部品側には引き継がれません。SessionBeanを利用したサービス部品のトランザクション属性を指定できるかどうかについては,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。

ビジネスプロセスはBMT(Bean Managed Transaction)で動作します。ビジネスプロセス自体は新たなトランザクションで制御します。ビジネスプロセスを呼び出す場合は,ビジネスプロセスのサービス呼出アクティビティに定義したサービス部品呼び出し処理ごとに,新たなトランザクションで制御します。そのため,サービスリクエスタがトランザクションスコープ内でHCSCサーバの標準受付を呼び出したときでも,トランザクションはサービスアダプタまで引き継がれません。ビジネスプロセスを介した場合のトランザクションを次の図に示します。

図5-27 ビジネスプロセスを介した場合のトランザクション

[図データ]