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

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

7.7.5 ユーザ電文に誤りがある場合の障害対策

<この項の構成>
(1) ユーザ電文に誤りがある場合のエラー
(2) サービスアダプタでの電文の検証方法

(1) ユーザ電文に誤りがある場合のエラー

標準受付からサービスアダプタのサービス部品を直接呼び出す場合,サービス部品側で要求するユーザ電文(XML文書)をサービスリクエスタで作成する必要があります。そのため,サービスリクエスタで作成するXMLに誤りがあると,正しくサービス部品を呼び出せません。SOAP通信でのSOAPメッセージとユーザ電文の関係を次の図に示します。

図7-65 SOAP通信でのSOAPメッセージとユーザ電文の関係

[図データ]

ユーザ電文に誤りがある(フォーマット定義の形式と異なる電文を実行した)場合,サービスアダプタのプロトコルの違いによって,エラーの内容が異なります。

また,電文の形式によっては,サービスアダプタでエラーとならないでサービス部品で例外になったり,サービス部品でエラーにならないで想定していない応答が返ったりすることがあります。

(a) Webサービス(SOAP通信)実行時にユーザ電文不正でエラーになる場合

サービスアダプタ(Webサービス)から呼び出せるサービス部品の仕様は,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」のWebサービスを利用したサービス部品の適用範囲で示す適用範囲を満たしている必要があります。適用範囲以外のサービス部品の場合,動作の保障ができません。

(b) SessionBean実行時にユーザ電文不正でエラーになる場合

サービスアダプタ(SessionBean)から呼び出せるサービス部品の仕様は,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」のSessionBeanを利用したサービス部品の適用範囲で示す適用範囲を満たしている必要があります。適用範囲以外のサービス部品の場合,動作の保障ができません。

(c) MDB(WS-R/DBキュー)実行時にユーザ電文不正でエラーになる場合

サービスリクエスタから要求したユーザ電文に誤りがある場合,MDB(WS-R/DBキュー)のサービスアダプタではエラーになりません。開発環境で定義するときにスキーマを定義しますが,通常,このスキーマで定義した形式でないユーザ電文でも,非同期キューに送信されます。サービス部品側でユーザ電文を受け取って検証するよう作成している場合は,サービス部品側でエラーを検知します。

(2) サービスアダプタでの電文の検証方法

サービスアダプタに指定したフォーマット定義(XMLスキーマ)とユーザ電文(XML文書)が,XMLスキーマの仕様に従い,妥当かどうか検証できます。

サービスアダプタでの電文の検証機能を使用するには,HCSCサーバランタイム定義ファイルのtelegram-validationプロパティで設定します。HCSCサーバランタイム定義ファイルの詳細については,「9. 定義ファイル」の「HCSCサーバランタイム定義ファイル」を参照してください。

注意
  • 電文の検証機能を使用する場合,妥当性をチェックするため,サービス部品呼び出しの処理性能に影響があります。そのため,テストやデバッグ環境での使用を推奨します。
  • 定義したフォーマット定義に対して妥当でない電文であるにもかかわらず,サービス部品呼び出しに成功していた電文の場合,電文の検証機能を使用することで,この機能によって妥当な形式でないと判断されると,サービスアダプタでエラーとなります。

電文の検証機能は,HCSCサーバ全体の次の表に示すアダプタで有効となります。サービスアダプタごとには設定できません。また,サービス部品を呼び出す要求電文,または応答電文に対して有効となります。

表7-42 電文の検証機能が有効になるアダプタ

アダプタ種別 プロトコル種類 方向 データ変換定義のパターン 検証するフォーマット定義 電文種類 検証機能の有効
サービスアダプタ Webサービス,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
Object Accessアダプタ 要求 データ変換なし サービス部品電文 XML
標準−サービス部品でデータ変換 標準電文 XML
バイナリ ×※1
サービス部品電文 XML
応答 データ変換なし サービス部品電文 XML
サービス部品−標準でデータ変換 標準電文 XML
バイナリ ×※1
サービス部品電文 XML
ファイルアダプタ 要求 データ変換なし サービス部品電文 XML
バイナリ ×※1
標準−サービス部品でデータ変換 標準電文 XML
バイナリ ×※1
サービス部品電文 XML
バイナリ ×※1
応答 データ変換なし サービス部品電文 XML
バイナリ ×※1
サービス部品−標準でデータ変換 標準電文 XML
バイナリ ×※1
サービス部品電文 XML
バイナリ ×※1
iWayアダプタ 要求 データ変換なし サービス部品電文 XML ×
応答 データ変換なし サービス部品電文 XML ×

(凡例)
○:検証機能が有効になります。
×:検証機能が無効になります。
要求:サービスアダプタからサービス部品へ向かうことを示します。
応答:サービス部品からサービスアダプタへ向かうことを示します。
フォルト:エラー時にサービス部品からサービスアダプタへ向かうことを示します。

注※1 バイナリ電文のサービス部品呼び出し時は,設定したフォーマット定義を基にDOMに変換(パース処理)しています。そのため,バイナリ電文でフォーマット定義に対して妥当でない電文を送付した場合,例外が発生し,次のメッセージが表示されます。

KDEC05504-E An attempt to specify format definition settings has failed. (information1 = 保守情報, information2 = 保守情報)

フォーマット定義の設定に失敗しました。

注※2 DBアダプタは,telegram-validationプロパティ以外の機能で,電文形式を検証します。例えば,サービスアダプタで,要求時に,「リクエスタ(バイナリ)−標準(XML)−サービス部品(バイナリ)」の変換をした場合,要求電文に対して次の流れで変換と検証をします。


  1. 要求電文をリクエスタのフォーマット定義に対して検証します(バイナリ電文の機能がOFFの場合も同様です)。
  2. 1.が妥当であった場合,リクエスタの電文の形式から標準電文の形式に変換します。
  3. 変換後の電文を標準電文のフォーマット定義に対して検証します。
  4. 2.が妥当であった場合,標準電文の形式からサービス部品電文の形式に変換します。
  5. 変換後の電文をサービス部品電文のフォーマット定義に対して検証します(バイナリ電文の機能がOFFの場合も同様です)。
  6. 4.が妥当であった場合,サービス部品を呼び出します。