Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド

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

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

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

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

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

図7-154 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サーバランタイム定義ファイルの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「HCSCサーバランタイム定義ファイル」を参照してください。

注意
定義したフォーマット定義に対して妥当でない電文であるにもかかわらず,サービス部品呼び出しに成功していた電文の場合,電文の検証機能を使用することで,この機能によって妥当な形式でないと判断されると,サービスアダプタでエラーとなります。

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

表7-206 電文の検証機能が有効になるサービスアダプタ

アダプタ種別 方向 データ変換定義のパターン 検証するフォーマット定義 電文種類 検証機能の有効
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)−サービス部品(バイナリ)」の変換をした場合,要求電文に対して次の流れで変換と検証をします。
  1. 要求電文をリクエスタのフォーマット定義に対して検証します(バイナリ電文の機能がOFFの場合も同様です)。
  2. 手順1.で検証した結果が妥当であった場合,リクエスタの電文の形式から標準電文の形式に変換します。
  3. 変換後の電文を標準電文のフォーマット定義に対して検証します。
  4. 手順3.で検証した結果が妥当であった場合,標準電文の形式からサービス部品電文の形式に変換します。
  5. 変換後の電文をサービス部品電文のフォーマット定義に対して検証します(バイナリ電文の機能がOFFの場合も同様です)。
  6. 手順5.で検証した結果が妥当であった場合,サービス部品を呼び出します。

(3) ユーザ電文トレースの取得による調査

ユーザ電文トレースを取得することによって,設計したとおりの電文が流れているか,リクエスタ側やサービス側,ビジネスプロセスのアクティビティやデータ変換などの各ポイントを調査できます。

ユーザ電文トレースを取得するには,HCSCサーバランタイム定義ファイルの次のプロパティで設定します。

また,次のプロパティを設定し,正常処理時にユーザ電文トレースを出力するHCSCコンポーネントを指定して出力することで,リクエスタまたはサービスに送受信する電文を確認できます。

HCSCサーバランタイム定義ファイルの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「HCSCサーバランタイム定義ファイル」を参照してください。

ユーザ電文トレースの詳細については,「7.4.4 ユーザ電文トレース」または「7.4.5 デバッグ情報」を参照してください。

注意
  • ユーザ電文の内容をファイルに出力するため,セキュリティ上の問題(情報漏洩の懸念など)が発生します。したがって,出力したユーザ電文トレースファイルの取り扱いに注意してください。
  • 01-60以前の「<サービスプラットフォームのインストールディレクトリ>\CSC\lib\cscdba.ear」を使用して作成したDBアダプタでは,取得位置SVC,および取得位置CNVSTのユーザ電文トレースは取得できません。