Cosminexus サービスプラットフォーム システム構築・運用ガイド
DBキューを使った非同期のサービス部品呼び出しでも,Cosminexus RMを使用します(通常は,TP1/EEと連携するために使用します。TP1/EE側ではDBキューという名前で呼びます)。
サービスリクエスタ側のTP1/EEとのインターフェースには受信用共用キューを,サービス部品側のTP1/EEとのインターフェースには送信用共用キューを使用します。
なお,非同期(MDB(DBキュー))の標準受付から,非同期(MDB(DBキュー))サービスアダプタを呼び出すことはできません。必ず異なるプロトコルのリクエスト受付またはサービスアダプタと組み合わせて使用する必要があります。Cosminexus RMとの関係を次の図に示します。
図5-36 Cosminexus RMとの関係
HCSCサーバのリクエスト受付は,MDB(Message Driven Bean)で動作し,HCSCサーバ側の受信用共用キューを監視しています。HCSCサーバ側の受信用共用キューにメッセージが送信されると,メッセージを取り出してサービス部品を呼び出します。
TP1/EE側のサービスリクエスタからは,受信用共用キューがあるデータベースに対して,直接アクセスしてメッセージを送信します。
サービスリクエスタ側の送信用共用キューには,あて先となるキュー名を設定します(開発環境のサービスアダプタ定義画面で設定します)。
あて先となるTP1/EE側のDBキュー(受信用共用キュー)は,TP1/EEのコマンドを使用して作成します。なお,TP1/EE側のDBキューは,送信用共用キューがある同一データベース内(同一のHiRDBシステム内)に作成する必要があります。非同期(MDB(DBキュー))の場合のあて先の指定について次の図に示します。
図5-37 非同期(MDB(DBキュー))の場合のあて先の指定
DBキューの作成の詳細については,マニュアル「TP1/Server Base Enterprise Option 使用の手引」のDBキューに関する内容を参照してください。
サービスリクエスタからサービス部品を呼び出すときに,受信用共用キューに送信するメッセージの形式は,BytesMessageです。
呼び出すサービス名やクライアント相関IDなどのパラメタを設定したHCSCサーバ用DBキューヘッダをバイナリ形式で作成し,そのあとに要求電文(バイナリ形式)を組み立てます。これによって,要求電文(バイナリ形式)の内容が,ユーザ電文としてサービス部品に伝わります。サービスリクエスタから標準受付を呼び出すとき,サービス部品側の電文フォーマットに合わせた要求電文を事前に作成し,ペイロードに設定してメッセージを送信します。TP1/EEからサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係を次の図に示します。
図5-38 TP1/EEからサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係
バイナリデータを作成する方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
サービスアダプタからサービス部品を呼び出すときに送信用共用キューに送信するメッセージの形式は,BytesMessageです。
サービスアダプタに定義した電文フォーマットに合わせた要求電文をバイナリ電文としてメッセージに設定します。TP1/EEのサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係を次の図に示します。
図5-39 TP1/EEのサービス部品を呼び出すときのユーザ電文と電文フォーマットの関係
標準の非同期受付(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プロパティを引き継ぐことはできません。サービス部品呼び出しの相関関係を対応づける場合は,ユーザ電文内に相関関係を示す情報を埋め込みます。
MDB(DBキュー)の場合,サービスリクエスタからHCSCサーバの間,そしてサービスアダプタからサービス部品の間は,異なるトランザクションになります。
標準受付でのローカルキューからのメッセージの取り出しとサービスアダプタでの転送キューへの送信は,一つのトランザクションで処理します。MDB(WS-R)の場合のトランザクションと同一です。
HCSCサーバ稼働マシンでのサービス部品の呼び出しをロールバックして,ロールバックの回数(メッセージの配送回数)が最大値に達した場合や,配送回数に無制限の設定をしている場合,そのメッセージはデッドメッセージキューに遷移します。
エラーが発生したときにデッドメッセージキューに遷移する仕組みについては,「7.7.3 MDB(WS-R)実行時の障害対策」を参照してください。
HCSCサーバの実行環境上では,次の表に示すキューの名称と個数を使用します。DB(DBキュー)で使用するキューの名称と個数を次の表に示します。
表5-25 DB(DBキュー)で使用するキューの名称と個数
項番 | 用途 | 説明 | キューの種類 | キューの名称 | 個数 | 備考 |
---|---|---|---|---|---|---|
1 | 非同期受付 (MDB(DBキュー))用 |
サービスリクエスタ側のTP1/EEシステムから要求を受信するキュー。 | 受信用共用キュー |
|
1 | − |
2 | サービスアダプタ(MDB(DBキュー))用 | サービス部品側のDBキューへ転送するキュー。 | 送信用共用キュー | CSC_<クラスタ名><アダプタ名> | 非同期(MDB(DBキュー))サービスアダプタ数 | − |
3 | デッドメッセージキュー | MDB(WS-R)用のデッドメッセージキューと共用。 | ローカルキューまたは転送キュー | 任意の名称 | システムに1個 | WS-Rでのデッドメッセージキューと同一 |
4 | ReplyToキュー | サービス部品呼び出しの応答を受け取る場合に使用。 | 送信用共用キュー | 任意の名称 | 任意 | − |
All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.