Cosminexus サービスプラットフォーム システム構築・運用ガイド
7.7.1 Webサービス(SOAP通信)実行時の障害対策
(1) SOAP通信でのエラーの伝わり方
サービスリクエスタから標準受付を使用してサービス部品を呼び出す場合と,サービスリクエスタからユーザ定義受付を使用してサービス部品を呼び出す場合とで,エラーの伝わり方が異なります。それぞれのエラーの伝わり方を説明します。
(a) 標準受付の場合
エラーの伝わり方は,エラーの種類やビジネスプロセスの有無によって異なります。
- サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)
- サービス部品からユーザ定義例外のエラーがリターンした場合でビジネスプロセスを使用しないときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-19 サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)のSOAP通信でのエラーの伝わり方
- サービス部品で例外をスローするコーディングをしている場合,サービス部品のWSDLにはユーザ定義例外が定義されます。サービスリクエスタが使用するWSDLはHCSCサーバが提供するのWSDLです。
- サービス部品でユーザ定義例外が発生すると,サービスリクエスタは,HCSCサーバがリターンするCSCMsgServerFaultExceptionで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生した例外名やフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultExceptionの詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
- サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)
- サービス部品からユーザ定義例外以外のエラーがリターンした場合でビジネスプロセスを使用しないときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-20 サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)のSOAP通信でのエラーの伝わり方
- サービス部品で想定外の例外(システム例外)が発生した場合,RuntimeExceptionとしてSOAPメッセージが伝わります。サービスリクエスタは,HCSCサーバがリターンするCSCMsgServerFaultExceptionで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultExceptionの詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
- HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用しないとき)
- HCSCサーバからエラーがリターンした場合でビジネスプロセスを使用しないときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-21 HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用しないとき)のSOAP通信でのエラーの伝わり方
- 図中の各エラーには,次に示すケースが該当します。
- エラー1:要求パラメタ不正,指定文字コード不正,各種フォーマット不正など。
- エラー2:あて先(ロケーション)が見つからない,アダプタが停止しているなど。
- エラー3:データ変換に失敗したなど。
- エラー4:あて先不正,サービス部品が停止,通信障害など
- HCSCサーバで図中のエラー1〜エラー4のどれかを検知した場合,発生したエラーをサービスリクエスタにリターンします。サービスリクエスタは,HCSCサーバがリターンするCSCMsgServerFaultExceptionで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultExceptionの詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
- サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-22 サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
- サービス部品でユーザ定義例外が発生すると,そのエラーは,一度ビジネスプロセスでキャッチしてユーザ例外処理をします。サービスリクエスタは,HCSCサーバがリターンするCSCMsgServerFaultExceptionで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生した例外名やフォルト情報(エラーの詳細)を取得できます。ビジネスプロセスでフォルト名を定義することで,サービスリクエスタで発生した例外が切り分けやすくなります。CSCMsgServerFaultExceptionの詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
- サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外以外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-23 サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
- サービス部品で想定外の例外(システム例外)が発生した場合,RuntimeExceptionとしてSOAPメッセージが伝わり,一度ビジネスプロセスでキャッチします。ビジネスプロセスでは例外として処理して,標準受付にスローします。サービスリクエスタは,HCSCサーバがリターンするCSCMsgServerFaultExceptionで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultExceptionの詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
- HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)
- HCSCサーバからエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-24 HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
- 図中の各エラーには,次に示すケースが該当します。
- エラー1:要求パラメタ不正,指定文字コード不正,各種フォーマット不正など。
- エラー2:あて先(ロケーション)が見つからない,アダプタが停止しているなど。
- エラー3:データ変換に失敗したなど。
- エラー4:あて先不正,サービス部品が停止,通信障害など
- エラー5:ビジネスプロセス処理上での例外エラーなど。
- HCSCサーバで図中のエラー1〜エラー5のどれかを検知した場合,発生したエラーをサービスリクエスタにリターンします。サービスリクエスタは,HCSCサーバがリターンするCSCMsgServerFaultExceptionで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultExceptionの詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
- サービスリクエスタでエラーを検知した場合
- サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方を次の図に示します。
図7-25 サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方(標準受付の場合)
- サービスリクエスタからHCSCサーバを呼び出せなかった場合や,サービス部品の呼び出しは完了したが何らかの原因でHCSCサーバからサービスリクエスタへの応答が返らなかった場合などは,サービスリクエスタ側(クライアント側)のSOAP通信基盤がエラーをリターンします。サービスリクエスタは,Cosminexus SOAP通信基盤がスローするC4Faultで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
(b) ユーザ定義受付の場合
エラーの伝わり方は,エラーの種類やビジネスプロセスの有無によって異なります。
- サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-26 サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
- サービス部品で例外をスローするコーディングをしている場合,サービス部品のWSDLにはユーザ定義例外が定義されます。ビジネスプロセスで,サービス部品で発生したユーザ定義例外をキャッチし,そのままフォルトとしてサービスリクエスタに応答を返すようなプロセスにしている場合,ユーザ定義受付に定義するWSDLにも同様のユーザ定義例外を定義する必要があります。これによって,サービスリクエスタは,サービス部品がリターンするSOAP Faultと同名の例外でキャッチできます。キャッチした例外オブジェクトを解析するための情報は,サービス部品側のプログラムで作成する必要があります。
- なお,ビジネスプロセスでフォルト名を定義することで,サービスリクエスタで発生した例外が切り分けやすくなります。
- ユーザ定義受付(Webサービス)に要求を出すサービスリクエスタでエラー情報を取得する方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
- サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外以外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-27 サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
- サービス部品で想定外の例外(システム例外)が発生した場合,RuntimeExceptionとしてSOAPメッセージが伝わり,一度ビジネスプロセスでキャッチします。ビジネスプロセスでは例外として処理し,ユーザ定義受付にスローします。
- HCSCサーバはCSCMsgServerFaultExceptionのSOAP Faultでリターンしますが,サービスリクエスタが使用するWSDLにはCSCMsgServerFaultExceptionが定義されていないため,Cosminexus SOAP通信基盤が提供するC4Faultで例外をキャッチします。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
- HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)
- HCSCサーバからエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-28 HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
- 図中の各エラーには,次に示すケースが該当します。
- エラー1:指定文字コード不正,各種フォーマット不正など。
- エラー2:あて先(ロケーション)が見つからない,アダプタが停止しているなど。
- エラー3:データ変換に失敗したなど。
- エラー4:あて先不正,サービス部品が停止,通信障害など
- エラー5:ビジネスプロセス処理上での例外エラーなど。
- HCSCサーバで図中のエラー1〜エラー5のどれかを検知した場合,発生したエラーをサービスリクエスタにリターンします。HCSCサーバはCSCMsgServerFaultExceptionのSOAP Faultでリターンしますが,サービスリクエスタが使用するWSDLにはCSCMsgServerFaultExceptionが定義されていないため,Cosminexus SOAP通信基盤が提供するC4Faultで例外をキャッチします。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
- サービスリクエスタでエラーを検知した場合
- サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方を次の図に示します。
図7-29 サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方(ユーザ定義受付の場合)
- あて先不正,HCSCサーバが停止,通信障害などで,サービスリクエスタからHCSCサーバを呼び出せなかった場合や,サービス部品の呼び出しは完了したが何らかの原因でHCSCサーバからサービスリクエスタへの応答が返らなかった場合などでは,サービスリクエスタ側(クライアント側)のSOAP通信基盤がエラーをリターンします。サービスリクエスタは,Cosminexus SOAP通信基盤がスローするC4Faultで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
(2) 問題発生個所の切り分け方
標準受付の場合とユーザ定義受付の場合とで問題発生個所の切り分け方が異なります。なお,SOAPによる通信ができない場合の問題発生個所の切り分けについては,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
(a) 標準受付の場合
サービスリクエスタから標準受付(Webサービス)を使用してサービス部品を呼び出した場合の問題発生個所の切り分け方について次の図に示します。
図7-30 問題発生個所の切り分け方(サービスリクエスタから標準受付(Webサービス)を使用してサービス部品を呼び出した場合)
- (i)サービス部品に障害の要因がある場合(サービス部品で定義したユーザ定義例外の場合)
- サービス部品に障害の要因があるおそれがあります。次のメソッドを使用してサービス部品が返したSOAP Faultの内容を取得できます。
- getCscmsgFaultCode:FaultCode情報を取得します。
- getCscmsgFaultString:FaultString情報を取得します。
- getCscmsgFaultActor:FaultActor情報を取得します。
- getCscmsgFaultDetail:FaultDetail情報を取得します。
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- (ii)ビジネスプロセスに障害の要因がある場合(ビジネスプロセスで定義したフォルトの場合)
- ビジネスプロセスで実行したアクティビティの処理に障害の要因があるおそれがあります(サービス呼出アクティビティの場合,呼び出したサービス部品に障害の要因があるおそれがあります)。
- 次のメソッドを使用してビジネスプロセスまたはサービス部品が返したSOAP Faultの内容を取得できます。
- getCscmsgFaultCode:FaultCode情報を取得します。
- getCscmsgFaultString:FaultString情報を取得します。
- getCscmsgFaultActor:FaultActor情報を取得します。
- getCscmsgFaultDetail:FaultDetail情報を取得します。
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ビジネスプロセスの定義内容
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- また,ビジネスプロセスをどのようなプロセスに設計したかによって,再送(ビジネスプロセスの再実行)をするかどうかサービスリクエスタを含むシステム設計する必要があります。
- (iii)HCSCサーバでエラーを検知した場合(例外名が設定されていない場合)
- 次のメソッドを使用してエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処します。
- getErrorMessage:HCSCサーバ内で検知したエラーのエラーメッセージを取得します。
- getErrorCode:HCSCサーバ内で検知したエラーのエラーコードを取得します。
- また,Cosminexusサービスプラットフォームが出力するメッセージログも参照して,調査します。
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求した引数の内容
- HCSCサーバの設定または状態
- サービスアダプタの定義内容査
- ビジネスプロセスの定義内容
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスアダプタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはサービス部品稼働マシン(サーバ)のSOAPエンジンに届いているか。
- 3. サービス部品稼働マシン(サーバ)のサービス部品でメッセージが処理できているか。
- 4. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 5. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスアダプタ(クライアント)のSOAPエンジンに届いているか。
- 確認するときはCosminexus SOAPが出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) Cosminexus SOAPが出力する障害情報の取得方法」を参照してください。Cosminexus SOAPが出力する障害情報の形式については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
-
- なお,Cosminexus SOAPが出力するアプリケーションログを取得することで,サービスアダプタとサービス部品間で送受信している電文データを確認できます。ただし,サービス部品呼び出しの処理性能に影響するため,テストやデバッグ環境での使用を推奨します。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。
- 一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタから要求した引数の内容が誤っている場合
- HCSCサーバの設定に誤りがある場合
- サービスアダプタやビジネスプロセスの定義に誤りがある場合
- サービスリクエスタから要求したユーザ電文に誤りがある場合など
- (iv)通信基盤でエラーを検知した場合(C4Faultの場合)
- Cosminexus SOAP通信基盤が提供するC4Faultからエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処します。
- C4Faultの詳細については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
- 要因は,次の観点で調査してください。
- サービスリクエスタで使用しているWSDL
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定または状態
- HCSCサーバの設定または状態
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスリクエスタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはHCSCサーバ稼働マシン(サーバ)のSOAPエンジンに届いているか。
- 3. HCSCサーバ稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 4. HCSCサーバビス稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスリクエスタ(クライアント)のSOAPエンジンに届いているか。
- 確認するときはCosminexus SOAPが出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) Cosminexus SOAPが出力する障害情報の取得方法」を参照してください。Cosminexus SOAPが出力する障害情報の形式については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
-
- なお,Cosminexus SOAPが出力するアプリケーションログを取得することで,サービスリクエスタとHCSCサーバ間で送受信している電文データを確認できます。ただし,サービス部品呼び出しの処理性能に影響するため,テストやデバッグ環境での使用を推奨します。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタで使用しているWSDLが誤っている場合
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定に誤りがある場合
- HCSCサーバの設定に誤りがある場合
(b) ユーザ定義受付の場合
サービスリクエスタからユーザ定義受付(Webサービス)を使用してサービス部品呼び出した場合の問題発生個所の切り分け方について次の図に示します。
図7-31 問題発生個所の切り分け方(サービスリクエスタからユーザ定義受付(Webサービス)を使用してサービス部品呼び出した場合)
- (i)サービス部品に障害の要因がある場合(サービス部品で定義したユーザ定義例外の場合)
- サービス部品に障害の要因があるおそれがあります。エラーの情報は,サービス部品で定義した内容になります(キャッチした例外オブジェクトの解析するための情報は,サービス部品側のプログラムで作成する必要があります)。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- (ii)ビジネスプロセスに障害の要因がある場合(ビジネスプロセスで定義したフォルトの場合)
- ビジネスプロセスで実行したアクティビティの処理に障害の要因があるおそれがあります(サービス呼出アクティビティの場合,呼び出したサービス部品に障害の要因があるおそれがあります)。
- エラーの情報は,ビジネスプロセスで定義したフォルトの内容になります(キャッチした例外オブジェクトを解析するための情報は,ビジネスプロセスを定義するときに設定しておく必要があります)。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ビジネスプロセスの定義内容
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- また,ビジネスプロセスの設計内容によっても,再送(ビジネスプロセスの再実行)するかどうかシステム設計する必要があります。
- (iii)HCSCサーバでエラーを検知した場合(CSCMsgServerFaultExceptionの場合)
- Cosminexus SOAP通信基盤が提供するC4Faultからエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処します。サービスリクエスタでC4Faultからエラー情報を取得するときの実装方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。C4Faultの詳細については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。また,Cosminexusサービスプラットフォームが出力するメッセージログも参照して,調査します。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求した引数の内容
- HCSCサーバの設定または状態
- サービスアダプタの定義内容
- ビジネスプロセスの定義内容
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスアダプタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはサービス部品稼働マシン(サーバ)のSOAPエンジンに届いているか。
- 3. サービス部品稼働マシン(サーバ)のサービス部品でメッセージが処理できているか。
- 4. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 5. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスアダプタ(クライアント)のSOAPエンジンに届いているか。
- 確認するときはCosminexus SOAPが出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) Cosminexus SOAPが出力する障害情報の取得方法」を参照してください。Cosminexus SOAPが出力する障害情報の形式については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
-
- なお,Cosminexus SOAPが出力するアプリケーションログを取得することで,サービスアダプタとサービス部品間で送受信している電文データを確認できます。ただし,サービス部品呼び出しの処理性能に影響するため,テストやデバッグ環境での使用を推奨します。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタから要求した引数の内容が誤っている場合
- HCSCサーバの設定に誤りがある場合
- サービスアダプタやビジネスプロセスの定義に誤りがある場合
- サービスリクエスタから要求したユーザ電文に誤りがある場合など
- (iv)通信基盤でエラーを検知した場合((i)〜(iii)以外の場合)
- Cosminexus SOAP通信基盤が提供するC4Faultからエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処してください。
- サービスリクエスタでC4Faultからエラー情報を取得する際の実装方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。C4Faultの詳細については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。また,Cosminexusサービスプラットフォームが出力するメッセージログも参照して,調査します。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタで使用しているWSDL
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定または状態
- HCSCサーバの設定または状態
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスリクエスタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはHCSCサーバ稼働マシン(サーバ)のSOAPエンジンに届いているか。
- 3. HCSCサーバ稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 4. HCSCサーバビス稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスリクエスタ(クライアント)のSOAPエンジンに届いているか。
- 確認するときはCosminexus SOAPが出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) Cosminexus SOAPが出力する障害情報の取得方法」を参照してください。
- Cosminexus SOAPが出力する障害情報の形式については,マニュアル「Cosminexus SOAPアプリケーション開発ガイド」を参照してください。
-
- なお,Cosminexus SOAPが出力するアプリケーションログを取得することで,サービスリクエスタとHCSCサーバ間で送受信している電文データを確認できます。ただし,サービス部品呼び出しの処理性能に影響するため,テストやデバッグ環境での使用を推奨します。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタで使用しているWSDLが誤っている場合
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定に誤りがある場合
- HCSCサーバの設定に誤りがある場合など
(3) HCSCサーバから応答するSOAP Faultの内容
HCSCサーバから応答するSOAP Fault(SOAPメッセージ)について,どの要素に何の情報が設定されるかを次の表に示します。
エラーのケースの番号は「(2) 問題発生個所の切り分け方」で示す番号に相当します。
表7-40 HCSCサーバから応答するSOAP Faultの内容
HCSCサーバから応答するSOAP Fault |
エラーのケース |
SOAP Fault要素 |
SOAPFault名称 |
フォルト名 |
標準受付の(i),(ii)の場合 |
標準受付の(iii),ユーザ定義受付の(iii)の場合 |
faultcode |
Faultコード |
− |
SOAPエンジンに依存する値です。 message partのメッセージ型属性が参照するQCNameです。 |
faultstring |
Fault文字列 |
− |
SOAPエンジンに依存する値です。Cosminexus SOAP通信基盤では,KDCCP00015-Eを出力します。 |
faultactor |
Fault生成者 |
− |
SOAPエンジンに依存する値です。
Cosminexus SOAP通信基盤では,値はありません。 |
detail |
Fault詳細 |
errorMessage |
次に示すエラーの内容です。
- HCSCサーバ内で検知したエラー
- サービス部品,ビジネスプロセス,およびカスタムアダプタからのエラー
|
errorCode |
次に示す例外の内容に対応するエラーコードです。
- HCSCサーバ内で検知したエラー
- サービス部品,ビジネスプロセス,およびカスタムアダプタからのエラー
|
processInstanceID |
ビジネスプロセスのインスタンスIDの情報です。ビジネスプロセスでエラーが発生した場合に値が設定されます。 |
cscmsgFaultCode |
サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultCode情報です。 |
値はありません。 |
cscmsgFaultString |
サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultString情報です。 |
値はありません。 |
cscmsgFaultActor |
サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultActor情報です。 |
値はありません。 |
cscmsgFaultDetail |
サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのDetail情報です。 |
値はありません。 |
faultName |
サービス部品(WebサービスまたはSessionBean)またはビジネスプロセスからのフォルト名(例外名)情報です。次の場合に値が設定されます。
- サービス部品(WebサービスまたはSessionBean)からのユーザ定義例外のSOAP Faultの場合
- ビジネスプロセスからのフォルトの場合
|
値はありません。 |
- (凡例)
- −:該当しません。
- 注1 ユーザ定義受付の(i),(ii)の場合は,ユーザ定義例外のSOAP Faultとなります。
- 注2 標準受付の(iv),またはユーザ定義受付の(iv)の場合は,サービスリクエスタ側のCosminexus SOAP通信基盤からエラー通知します。
(4) そのほかの障害要因の特定方法(サービス部品呼び出し要求の実行履歴の追跡)
ビジネスプロセスを使用する場合には,サービスリクエスタへ応答した例外およびエラーメッセージから問題発生個所を切り分ける方法のほかに,サービスリクエスタ側で設定したクライアント相関IDや,ビジネスプロセスの相関セットを基に問題発生個所を特定する方法があります。ここでは,ビジネスプロセスを使用する場合に,クライアント相関IDや,ビジネスプロセスの相関セットを基にしてサービス部品呼び出し要求の実行履歴を追跡する手順について説明します。サービス部品呼び出し要求の実行履歴の追跡を次の図に示します。
図7-32 サービス部品呼び出し要求の実行履歴の追跡(Webサービスの場合)
実行履歴の追跡の基本的な流れは次のようになります。
- 要求時に,受付ごとに次の指定をします。
- 標準受付の場合
要求時のパラメタにクライアント相関IDを指定,または要求電文に相関セットを指定します。
- ユーザ定義受付の場合
要求電文に相関セットを指定します。
- エラーが発生したときのメッセージ共通IDを取得することで,障害が発生したビジネスプロセスのインスタンスを特定します。
- データベースに出力されているプロセスインスタンスの実行履歴を検索し,メッセージ共通IDと対応したビジネスプロセスのプロセスIDを取得します。
プロセスIDを使ってアクティビティの状態を知ることができ,それによってどこの処理で止まっているのかや,どこまで処理が進んでいるのかがわかります。
- メッセージ共通IDを使って,電文の実行履歴からユーザ電文を取得します。
電文の内容を確認でき,障害調査の原因究明に役立ちます。
サービス部品呼び出し要求の実行履歴を追跡するには,主に次の二つの方法があります。
- (a)サービスリクエスタから指定したクライアント相関IDからたどる方法
- (b)ユーザ電文に指定したビジネスプロセスの相関セットからたどる方法
(a) サービスリクエスタから指定したクライアント相関IDからたどる方法
サービスリクエスタから指定したクライアント相関IDからたどる手順を次に示します。
- クライアント相関IDを調査します。
クライアント相関IDは,サービス部品呼び出しを要求するサービスリクエスタ側のプログラムで,要求時(呼び出し時)に設定する情報です。サービスリクエスタからの要求電文と,HCSCサーバで管理している実行履歴や,ログおよびトレースとを対応づけるために使用します。そのため,HCSCサーバに送信した要求ごとに異なるIDを指定することを推奨します(サービスリクエスタ作成時に指定が必要です)。
サービス部品呼び出し要求の実行履歴を追跡する場合,サービスリクエスタ側の要求者からシステム管理者に障害調査を依頼するとき,クライアント相関IDを伝え,システム管理者はその情報を基に実行履歴を追跡します。
サービスリクエスタでのクライアント相関IDを指定するコーディングの例を次に示します。ここでは,標準受付(Webサービス)を呼び出すときの引数に,クライアント相関ID("ClientID0001")を設定しています。
- クライアント相関IDを基にリクエストトレースを調査し,エラーが発生したときのメッセージ共通IDを取得します。メッセージ共通IDによって,障害が発生したビジネスプロセスのインスタンスを特定できます。
なお,クライアント相関IDは重複しているおそれがあります。そのため,適宜実行時刻やビジネスプロセス名(サービス名)を取得しておくことで,該当個所を特定します。
リクエストトレースの例を次に示します。リクエストトレースの"message"列にクライアント相関IDやビジネスプロセス名(サービス名)があり,先頭にメッセージ共通IDが出力されています。
- 取得したメッセージ共通IDを基に,プロセスインスタンスの実行履歴を参照してビジネスプロセスのプロセスIDを取得します。プロセスIDを取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,開始日時とビジネスプロセス名(サービス名)を条件に,プロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"relation"を指定し,検索条件(where句)にSQL条件を指定して,該当するメッセージ関連情報を表示します。
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については「10. コマンド」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
- 取得したプロセスIDを基に,プロセスインスタンスの実行履歴を参照して,ビジネスプロセスのアクティビティとその状態を取得します。アクティビティの情報を取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,開始日時とビジネスプロセス名(サービス名)を条件に,プロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"activity"を指定し,検索条件(where句)にSQL条件を指定して,該当するアクティビティ情報を表示します。
状態が"Executing"となっている個所が現在実行中のアクティビティです。状態を確認することで,どのアクティビティで止まっているかがわかります。
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については「10. コマンド」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
- 電文の実行履歴を採取する設定をし,さらに電文の実行履歴の電文データ(ユーザ電文)を採取する設定をしている場合,ユーザ電文の内容を確認できます。
実行履歴の採取については,HCSCサーバランタイム定義で設定します。詳細は「9. 定義ファイル」の「HCSCサーバランタイム定義ファイル」を参照してください。
電文の実行履歴を取得するには,電文の実行履歴情報の表示(csmlshistory)コマンドを使用します。
csmlshistoryコマンドでは,メッセージ共通IDを条件として電文の実行履歴を検索します(クライアント相関IDや日時から検索することもできます)。
csmlshistoryコマンドの使い方については「6.2.3 電文の実行履歴を利用する」を,コマンドの文法については「10. コマンド」の「csmlshistory(電文の実行履歴情報の表示)」を参照してください。
(b) ユーザ電文に指定したビジネスプロセスの相関セットからたどる方法
ユーザ電文に指定したビジネスプロセスの相関セットからたどる手順を次に示します。
- 相関セットを調査します。
相関セットは,サービス部品呼び出しを要求するサービスリクエスタ側のプログラムで,要求時のユーザ電文に設定する情報です。サービスリクエスタからHCSCサーバを介してサービス部品に送信する要求電文を一意に識別するために利用する文字列です。
HCSCサーバからの応答は,相関セットを含んだ応答電文をサービスリクエスタに返信します。その結果,サービスリクエスタは受信した応答電文が,どの要求電文に対する応答であるのかを一意に識別できます。
相関セットを使用するには,開発環境でのビジネスプロセス定義時に定義する必要があります。詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」を参照してください。
サービス部品呼び出し要求の実行履歴を追跡する場合,サービスリクエスタ側の要求者からシステム管理者に障害調査を依頼するときに,相関セットと要求したビジネスプロセス名(サービス名)を伝え,システム管理者はその情報を基に実行履歴を追跡します。
サービスリクエスタ利用者が相関セットの値をとらえていない場合は,HCSCサーバにインポートしたリポジトリを開発環境で参照して,該当のビジネスプロセスの相関セットを調査する必要があります。相関セットの調査方法は次のとおりです。
1. ビジネスプロセス定義画面の[変数・相関セット]アイコンをダブルクリックします。
変数・相関セット一覧ダイアログが表示されます。
2. 変数・相関セット一覧ダイアログの「表示」ボタンをクリックします。
変数の表示ダイアログが表示されます。
3. ユーザ電文と変数表示ダイアログのXMLスキーマを突き合わせて,相関セットへのパスを取得します。
4. 変数・相関セット一覧ダイアログを使って,パス名から変数名や部分名を取得し,変数・相関セット一覧ダイアログから同じ変数名や部分名を持つ相関セットを探して相関セット名を取得します。
- 取得した相関セットを基に,プロセスインスタンスの実行履歴を参照して,ビジネスプロセスのプロセスIDを取得します。プロセスIDを取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,相関セットを条件としてプロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"process_set"を指定し,検索条件(where句)にSQL条件を指定し,該当するプロセス概要情報を表示します。
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については「10. コマンド」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
- 取得したプロセスIDを基に,プロセスインスタンスの実行履歴を参照して,ビジネスプロセスのアクティビティとその状態を取得します。アクティビティの情報を取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,開始日時とビジネスプロセス名(サービス名)を条件としてプロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"activity"を指定し,検索条件に該当するアクティビティ情報を表示します。
状態が"Executing"となっている個所が現在実行中のアクティビティです。状態を確認することで,どのアクティビティで止まっているかがわかります。
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については「10. コマンド」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.