7.7.19 ユーザ電文に誤りがある場合の障害対策
(1) ユーザ電文に誤りがある場合のエラー
標準受付からサービスアダプタのサービス部品を直接呼び出す場合,サービス部品側で要求するユーザ電文(XML文書)をサービスリクエスタで作成する必要があります。そのため,サービスリクエスタで作成するXMLに誤りがあると,正しくサービス部品を呼び出せません。SOAP通信でのSOAPメッセージとユーザ電文の関係を次の図に示します。
ユーザ電文に誤りがある(フォーマット定義の形式と異なる電文を実行した)場合,サービスアダプタのプロトコルの違いによって,エラーの内容が異なります。
また,電文の形式によっては,サービスアダプタでエラーとならないでサービス部品で例外になったり,サービス部品でエラーにならないで想定していない応答が返ったりすることがあります。
(a) Webサービス(SOAP通信)実行時にユーザ電文不正でエラーになる場合
SOAPアダプタから呼び出せるサービス部品の仕様は,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「2.6.1 Webサービスを利用したサービス部品の適用範囲」で示す適用範囲を満たしている必要があります。適用範囲以外のサービス部品の場合,動作の保障ができません。
(b) SessionBean実行時にユーザ電文不正でエラーになる場合
SessionBeanアダプタから呼び出せるサービス部品の仕様は,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「2.6.2 SessionBeanを利用したサービス部品の適用範囲」で示す適用範囲を満たしている必要があります。適用範囲以外のサービス部品の場合,動作の保障ができません。
(c) MDB(WS-R/DBキュー)実行時にユーザ電文不正でエラーになる場合
サービスリクエスタから要求したユーザ電文に誤りがある場合,MDB(WS-R/DBキュー)のサービスアダプタではエラーになりません。開発環境で定義するときにスキーマを定義しますが,通常,このスキーマで定義した形式でないユーザ電文でも,非同期キューに送信されます。サービス部品側でユーザ電文を受け取って検証するよう作成している場合は,サービス部品側でエラーを検知します。
(2) サービスアダプタでの電文の検証方法
サービスアダプタに指定したフォーマット定義(XMLスキーマ)とユーザ電文(XML文書)が,XMLスキーマの仕様に従い,妥当かどうか検証できます。
サービスアダプタでの電文の検証機能を使用するには,HCSCサーバランタイム定義ファイルのtelegram-validationプロパティで設定します。HCSCサーバランタイム定義ファイルの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.5.6 HCSCサーバランタイム定義ファイル」を参照してください。
- 注意事項
-
定義したフォーマット定義に対して妥当でない電文であるにもかかわらず,サービス部品呼び出しに成功していた電文の場合,電文の検証機能を使用することで,この機能によって妥当な形式でないと判断されると,サービスアダプタでエラーとなります。
電文の検証機能は,HCSCサーバ全体の次の表に示すサービスアダプタで有効となります。サービスアダプタごとには設定できません。また,サービス部品を呼び出す要求電文,または応答電文に対して有効となります。
アダプタ種別 |
方向 |
データ変換定義のパターン |
検証するフォーマット定義 |
電文種類 |
検証機能の有効 |
---|---|---|---|---|---|
SOAPアダプタ, SessionBeanアダプタ, MDB(WS-R)アダプタ, MDB(DBキュー)アダプタ |
要求 |
データ変換なし |
サービス部品電文 |
XML |
○ |
バイナリ |
×※1 |
||||
標準−サービス部品でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
XML |
○ |
|||
バイナリ |
×※1 |
||||
応答 |
データ変換なし |
サービス部品電文 |
XML |
○ |
|
バイナリ |
×※1 |
||||
サービス部品−標準でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
XML |
○ |
|||
バイナリ |
×※1 |
||||
フォルト |
データ変換なし |
× |
XML |
× |
|
DBアダプタ |
要求 |
データ変換なし |
サービス部品電文 |
XML |
×※2 |
標準−サービス部品でデータ変換 |
標準電文 |
XML |
× |
||
バイナリ |
× |
||||
サービス部品電文 |
XML |
×※2 |
|||
応答 |
データ変換なし |
サービス部品電文 |
XML |
×※2 |
|
サービス部品−標準でデータ変換 |
標準電文 |
XML |
× |
||
バイナリ |
× |
||||
サービス部品電文 |
XML |
×※2 |
|||
TP1アダプタ |
要求 |
データ変換なし |
サービス部品電文 |
バイナリ |
×※1 |
標準−サービス部品でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
バイナリ |
×※1 |
|||
応答 |
データ変換なし |
サービス部品電文 |
バイナリ |
×※1 |
|
サービス部品−標準でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
バイナリ |
×※1 |
|||
ファイルアダプタ |
要求 |
データ変換なし |
サービス部品電文 |
XML |
○ |
バイナリ |
×※1 |
||||
標準−サービス部品でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
XML |
○ |
|||
バイナリ |
×※1 |
||||
応答 |
データ変換なし |
サービス部品電文 |
XML |
○ |
|
バイナリ |
×※1 |
||||
サービス部品−標準でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
XML |
○ |
|||
バイナリ |
×※1 |
||||
Object Accessアダプタ |
要求 |
データ変換なし |
サービス部品電文 |
XML |
○ |
標準−サービス部品でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
XML |
○ |
|||
応答 |
データ変換なし |
サービス部品電文 |
XML |
○ |
|
サービス部品−標準でデータ変換 |
標準電文 |
XML |
○ |
||
バイナリ |
×※1 |
||||
サービス部品電文 |
XML |
○ |
- (凡例)
-
○:検証機能が有効になります。
×:検証機能が無効になります。
要求:サービスアダプタからサービス部品へ向かうことを示します。
応答:サービス部品からサービスアダプタへ向かうことを示します。
フォルト:エラー時にサービス部品からサービスアダプタへ向かうことを示します。
- 注※1
-
バイナリ電文のサービス部品呼び出し時は,設定したフォーマット定義を基にDOMに変換(パース処理)しています。そのため,バイナリ電文でフォーマット定義に対して妥当でない電文を送付した場合,例外が発生し,次のメッセージが表示されます。
KDEC05504-E An attempt to specify format definition settings has failed. (information1 = 保守情報, information2 = 保守情報)
フォーマット定義の設定に失敗しました。
- 注※2
-
DBアダプタは,telegram-validationプロパティ以外の機能で,電文形式を検証します。例えば,サービスアダプタで,要求時に,「リクエスタ(バイナリ)−標準(XML)−サービス部品(バイナリ)」の変換をした場合,要求電文に対して次の流れで変換と検証をします。
-
要求電文をリクエスタのフォーマット定義に対して検証します(バイナリ電文の機能がOFFの場合も同様です)。
-
手順1.で検証した結果が妥当であった場合,リクエスタの電文の形式から標準電文の形式に変換します。
-
変換後の電文を標準電文のフォーマット定義に対して検証します。
-
手順3.で検証した結果が妥当であった場合,標準電文の形式からサービス部品電文の形式に変換します。
-
変換後の電文をサービス部品電文のフォーマット定義に対して検証します(バイナリ電文の機能がOFFの場合も同様です)。
-
手順5.で検証した結果が妥当であった場合,サービス部品を呼び出します。
-
(3) ユーザ電文トレースの取得による調査
ユーザ電文トレースを取得することによって,設計したとおりの電文が流れているか,リクエスタ側やサービス側,ビジネスプロセスのアクティビティやデータ変換などの各ポイントを調査できます。
ユーザ電文トレースを取得するには,HCSCサーバランタイム定義ファイルの次のプロパティで設定します。
-
telegramtraceプロパティ
-
telegramtrace-filepathプロパティ
-
telegramtrace-filesizeプロパティ
-
telegramtrace-filenumプロパティ
-
telegramtrace-triggerプロパティ
また,次のプロパティを設定し,正常処理時にユーザ電文トレースを出力するHCSCコンポーネントを指定して出力することで,リクエスタまたはサービスに送受信する電文を確認できます。
-
telegramtrace-component-type-filepathプロパティ
-
telegramtrace-component-id-filepathプロパティ
HCSCサーバランタイム定義ファイルの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.5.6 HCSCサーバランタイム定義ファイル」を参照してください。
ユーザ電文トレースの詳細については,「7.4.4 ユーザ電文トレース」または「7.4.6 デバッグ情報」を参照してください。
- 注意事項
-
-
ユーザ電文の内容をファイルに出力するため,セキュリティ上の問題(情報漏洩の懸念など)が発生します。したがって,出力したユーザ電文トレースファイルの取り扱いに注意してください。
-
01-60以前の「<サービスプラットフォームのインストールディレクトリ>\CSC\lib\cscdba.ear」を使用して作成したDBアダプタでは,取得位置SVC,および取得位置CNVSTのユーザ電文トレースは取得できません。
-