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

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

5.4.5 MDB(DBキュー)を使ったサービス部品呼び出し

<この項の構成>
(1) Cosminexus RMとの関係
(2) サービス部品呼び出し時のメッセージの流れ
(3) 同期のサービス部品を呼び出す場合の応答電文の扱い
(4) MDB(DBキュー)使用時のトランザクション
(5) デッドメッセージキュー
(6) MDB(DBキュー)で使用するキューの名称と個数

(1) Cosminexus RMとの関係

DBキューを使った非同期のサービス部品呼び出しでも,Cosminexus RMを使用します(通常は,TP1/EEと連携するために使用します。TP1/EE側ではDBキューという名前で呼びます)。

サービスリクエスタ側のTP1/EEとのインターフェースには受信用共用キューを,サービス部品側のTP1/EEとのインターフェースには送信用共用キューを使用します。

なお,非同期(MDB(DBキュー))の標準受付から,非同期(MDB(DBキュー))サービスアダプタを呼び出すことはできません。必ず異なるプロトコルのリクエスト受付またはサービスアダプタと組み合わせて使用する必要があります。Cosminexus RMとの関係を次の図に示します。

図5-36 Cosminexus RMとの関係

[図データ]

[図データ]

注意
実行環境内とHiRDBに別々のキューがそれぞれ作成されるわけではありません。データベース上のキューは同一のシステム上に作成されるため,実行環境内のキューとHiRDBのキューは同じものになります。TP1EE側のDBキューも同様です。

(2) サービス部品呼び出し時のメッセージの流れ

HCSCサーバのリクエスト受付は,MDB(Message Driven Bean)で動作し,HCSCサーバ側の受信用共用キューを監視しています。HCSCサーバ側の受信用共用キューにメッセージが送信されると,メッセージを取り出してサービス部品を呼び出します。

TP1/EE側のサービスリクエスタからは,受信用共用キューがあるデータベースに対して,直接アクセスしてメッセージを送信します。

サービスリクエスタ側の送信用共用キューには,あて先となるキュー名を設定します(開発環境のサービスアダプタ定義画面で設定します)。

あて先となるTP1/EE側のDBキュー(受信用共用キュー)は,TP1/EEのコマンドを使用して作成します。なお,TP1/EE側のDBキューは,送信用共用キューがある同一データベース内(同一のHiRDBシステム内)に作成する必要があります。非同期(MDB(DBキュー))の場合のあて先の指定について次の図に示します。

図5-37 非同期(MDB(DBキュー))の場合のあて先の指定

[図データ]

注意
実行環境内とHiRDBに別々のキューがそれぞれ作成されるわけではありません。データベース上のキューは同一のシステム上に作成されるため,実行環境内のキューとHiRDBのキューは同じものになります。TP1EE側のDBキューも同様です。

DBキューの作成の詳細については,マニュアル「TP1/Server Base Enterprise Option 使用の手引」のDBキューに関する内容を参照してください。

(a) TP1/EEからサービス部品を呼び出す場合

サービスリクエスタからサービス部品を呼び出すときに,受信用共用キューに送信するメッセージの形式は,BytesMessageです。

呼び出すサービス名やクライアント相関IDなどのパラメタを設定したHCSCサーバ用DBキューヘッダをバイナリ形式で作成し,そのあとに要求電文(バイナリ形式)を組み立てます。これによって,要求電文(バイナリ形式)の内容が,ユーザ電文としてサービス部品に伝わります。サービスリクエスタから標準受付を呼び出すとき,サービス部品側の電文フォーマットに合わせた要求電文を事前に作成し,ペイロードに設定してメッセージを送信します。TP1/EEからサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係を次の図に示します。

図5-38 TP1/EEからサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係

[図データ]

バイナリデータを作成する方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。

(b) TP1/EEのサービス部品を呼び出す場合

サービスアダプタからサービス部品を呼び出すときに送信用共用キューに送信するメッセージの形式は,BytesMessageです。

サービスアダプタに定義した電文フォーマットに合わせた要求電文をバイナリ電文としてメッセージに設定します。TP1/EEのサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係を次の図に示します。

図5-39 TP1/EEのサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係

[図データ]

(3) 同期のサービス部品を呼び出す場合の応答電文の扱い

標準の非同期受付(MDB(DBキュー))は,非同期の要求電文の標準受付で,基本的にサービス部品からの応答がない場合に使用します。しかし,非同期受付(MDB(DBキュー))から同期のサービス部品(WebサービスまたはSessionBeanなど)やビジネスプロセスを要求した場合,同期のサービス部品から応答が返るときがあります。

そのため,HCSCサーバでは応答をReplyToキューに送信する手段を提供しています。

ReplyToキューを利用するには,HCSCサーバの環境構築時にHCSCサーバ側に送信用共用キューを作成し,送信用共用キューに送信先のキュー名を指定しておきます。

サービスリクエスタから標準受付に対してサービス部品の呼び出しを要求する場合,標準受付のパラメタに作成した送信用共用キューのキュー名を指定すると,サービス部品からの応答が返ってきた際に指定されたキューにJMSメッセージが送信されます。

送信用共用キューからサービスリクエスタ側のDBキュー(受信用共用キュー)にメッセージが転送されるため,DBキュー(受信用共用キュー)からメッセージを取り出すことで,サービス部品からの応答電文を取得できます。

応答を取り出す方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。

同期サービス部品を呼び出した場合の応答の扱いを次の図に示します。

図5-40 同期サービス部品を呼び出した場合の応答の扱い

[図データ]

ReplyToキューへメッセージを出力するのは,次に示す場合です。

同期サービス部品でも応答があるかどうかによって,次のような形式でReplyToキューへメッセージを送信します。

なお,サービスリクエスタからReplyToキューのキュー名を指定していても,HCSCサーバ側に指定したキュー名のキューが作成されていない場合は,ReplyToキューにメッセージは送信できないで,サービス部品呼び出し処理がエラーになります。

表5-24 ReplyToキューへメッセージを出力するケース

項番 ReplyToキューへ出力するケース 応答電文の有無
応答電文がある場合 応答電文がない場合 サービス部品からのユーザ定義例外の場合 ユーザ定義例外以外のエラーの場合
1 呼び出し先のサービス部品が同期サービス部品の場合(WebService,SessionBeanおよびカスタムアダプタなど) ペイロードに応答電文を設定 ペイロードなしのメッセージ ペイロードに応答電文を設定 ×
2 呼び出し先のサービス部品が非同期サービス部品の場合
(MDB(WS-R)およびMDB(DBキュー)など)
× × ×
3 呼び出し先のサービス部品がビジネスプロセスの場合 ペイロードに応答電文を設定 ペイロードなしのメッセージ ペイロードに応答電文を設定 ×

(凡例)
×:メッセージを送信しません。
−:非同期のサービス部品からユーザ定義例外は存在しないため該当しません。

注※ エラーの情報はログ・トレースに出力します。

サービスリクエスタからの要求でReplyToキューのキュー名を指定していない場合,および電文の実行履歴を採取している場合は,応答電文の内容は破棄されます(応答電文を破棄したことを示すKDEC00031-Wメッセージが出力されます)。

なお,MDB(WS-R)の場合のように,JMSプロパティを引き継ぐことはできません。サービス部品呼び出しの相関関係を対応づける場合は,ユーザ電文内に相関関係を示す情報を埋め込みます。

(4) MDB(DBキュー)使用時のトランザクション

MDB(DBキュー)の場合,サービスリクエスタからHCSCサーバの間,そしてサービスアダプタからサービス部品の間は,異なるトランザクションになります。

標準受付でのローカルキューからのメッセージの取り出しとサービスアダプタでの転送キューへの送信は,一つのトランザクションで処理します。MDB(WS-R)の場合のトランザクションと同一です。

(5) デッドメッセージキュー

HCSCサーバ稼働マシンでのサービス部品の呼び出しをロールバックして,ロールバックの回数(メッセージの配送回数)が最大値に達した場合や,配送回数に無制限の設定をしている場合,そのメッセージはデッドメッセージキューに遷移します。

エラーが発生したときにデッドメッセージキューに遷移する仕組みについては,「7.7.3 MDB(WS-R)実行時の障害対策」を参照してください。

(6) MDB(DBキュー)で使用するキューの名称と個数

HCSCサーバの実行環境上では,次の表に示すキューの名称と個数を使用します。DB(DBキュー)で使用するキューの名称と個数を次の表に示します。

表5-25 DB(DBキュー)で使用するキューの名称と個数

項番 用途 説明 キューの種類 キューの名称 個数 備考
1 非同期受付
(MDB(DBキュー))用
サービスリクエスタ側のTP1/EEシステムから要求を受信するキュー。 受信用共用キュー
  • 単独構成およびロードバランスクラスタの場合
    CSC<HCSCサーバ名>ACPT_DBQ
  • HAクラスタの場合
    CSC<クラスタ名>ACPT_DBQ
1
2 サービスアダプタ(MDB(DBキュー))用 サービス部品側のDBキューへ転送するキュー。 送信用共用キュー CSC_<クラスタ名><アダプタ名> 非同期(MDB(DBキュー))サービスアダプタ数
3 デッドメッセージキュー MDB(WS-R)用のデッドメッセージキューと共用。 ローカルキューまたは転送キュー 任意の名称 システムに1個 WS-Rでのデッドメッセージキューと同一
4 ReplyToキュー サービス部品呼び出しの応答を受け取る場合に使用。 送信用共用キュー 任意の名称 任意

(凡例)
−:該当しません。