7.7.1 Webサービス(SOAP通信)実行時の障害対策
(1) SOAP通信でのエラーの伝わり方
サービスリクエスタから標準受付を使用してサービス部品を呼び出す場合と,サービスリクエスタからユーザ定義受付を使用してサービス部品を呼び出す場合とで,エラーの伝わり方が異なります。それぞれのエラーの伝わり方を説明します。
(a) 標準受付の場合
エラーの伝わり方は,エラーの種類やビジネスプロセスの有無によって異なります。
- サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)
- サービス部品からユーザ定義例外のエラーがリターンした場合でビジネスプロセスを使用しないときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-27 サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc073500.gif)
- サービス部品側の通信基盤にCosminexusが提供しているSOAP通信基盤またはJAX-WSエンジンを使用している場合で,サービス部品で例外をスローするコーディングをしているとき,サービス部品のWSDLにはユーザ定義例外がSOAPフォルトで定義されます。サービス部品でユーザ定義例外が発生すると,SOAPフォルトの内容が標準受付からサービスリクエスタに応答されます。
- サービスリクエスタが使用するWSDLはCosminexus サービスプラットフォームが提供するWSDLで,このWSDLにはCSCMsgServerFaultException※がSOAPフォルトとして定義されています。サービスリクエスタは,HCSCサーバがリターンするSOAPフォルトをCSCMsgServerFaultException※オブジェクトでキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,サービス部品側で発生した例外名やフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultException※の詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.3.8 エラー情報を取得する」を参照してください。
- 注※
- SOAP1.2の場合は,CSCMsgServerFault12Exceptionとなります。
- サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)
- サービス部品からユーザ定義例外以外のエラーがリターンした場合でビジネスプロセスを使用しないときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-28 サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用しないとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc073600.gif)
- サービス部品側の通信基盤にCosminexusが提供しているSOAP通信基盤またはJAX-WSエンジンを使用している場合で,サービス部品でWSDLに定義していない想定外の例外(システム例外)が発生したときは,RuntimeExceptionとしてSOAPメッセージが伝わります。また,サービス部品側の通信基盤にJAX-WSエンジンを使用している場合や,Cosminexusが提供しているSOAP通信基盤を使用していない場合は,WSDLにSOAPフォルトを定義していてもHCSCサーバ内では例外として扱われます。
- サービスアダプタからサービス部品を呼び出したときに発生したシステム例外は,サービスアダプタでフォルト電文に変換することもできます。システム例外をフォルト電文に変換する方法については,「7.11 例外発生時に取得するエラーの選択」を参照してください。
- サービスリクエスタが使用するWSDLはCosminexus サービスプラットフォームが提供するWSDLで,このWSDLにはCSCMsgServerFaultException※がSOAPフォルトとして定義されています。サービスリクエスタは,HCSCサーバがリターンするSOAPフォルトをCSCMsgServerFaultException※オブジェクトでキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultException※の詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.3.8 エラー情報を取得する」を参照してください。
- なお,サービス部品が応答したSOAPフォルトをHCSCサーバ内で例外ではなくSOAPフォルトのまま伝えたい場合は,SOAP Fault動作定義ファイルで定義します。SOAP Fault動作定義ファイルの詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「SOAP Fault動作定義ファイル」を参照してください。
- 注※
- SOAP1.2の場合は,CSCMsgServerFault12Exceptionとなります。
- HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用しないとき)
- HCSCサーバからエラーがリターンした場合でビジネスプロセスを使用しないときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-29 HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用しないとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc073700.gif)
- 図中の各エラーには,次に示すケースが該当します。
- エラー1:要求パラメタ不正,指定文字コード不正,各種フォーマット不正など
- エラー2:あて先(ロケーション)が見つからない,アダプタが停止しているなど
- エラー3:データ変換に失敗したなど
- エラー4:あて先不正,サービス部品が停止,通信障害など
- HCSCサーバで図中のエラー1~エラー3のどれかを検知した場合,発生したエラーの例外をサービスリクエスタにリターンします。図中のエラー4を検知した場合,発生したエラーの例外をサービスリクエスタにそのままリターンするか,サービスアダプタでエラーの例外をフォルト電文に変換するか選択できます。例外発生時に取得するエラーの選択方法については,「7.11 例外発生時に取得するエラーの選択」を参照してください。
- サービスリクエスタは,HCSCサーバがリターンするSOAPフォルトをCSCMsgServerFaultException※オブジェクトでキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultException※の詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.3.8 エラー情報を取得する」を参照してください。
- 注※
- SOAP1.2の場合は,CSCMsgServerFault12Exceptionとなります。
- サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-30 サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc073800.gif)
- サービス部品側の通信基盤にCosminexusが提供しているSOAP通信基盤またはJAX-WSエンジンを使用している場合で,サービス部品で例外をスローするコーディングをしているとき,サービス部品のWSDLにはユーザ定義例外がSOAPフォルトで定義されます。サービス部品でユーザ定義例外が発生すると,そのエラーは,一度ビジネスプロセスでキャッチできます。
- サービスリクエスタは,HCSCサーバがリターンするSOAPフォルトをCSCMsgServerFaultException※オブジェクトでキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生した例外名やフォルト情報(エラーの詳細)を取得できます。ビジネスプロセスでフォルト名を定義することで,サービスリクエスタで発生した例外が切り分けやすくなります。CSCMsgServerFaultException※の詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.3.8 エラー情報を取得する」を参照してください。
- 注※
- SOAP1.2の場合は,CSCMsgServerFault12Exceptionとなります。
- サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外以外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-31 サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc073900.gif)
- サービス部品側の通信基盤にCosminexusが提供しているSOAP通信基盤またはJAX-WSエンジンを使用している場合で,サービス部品でWSDLに定義していない想定外の例外(システム例外)が発生したときは,RuntimeExceptionとしてSOAPメッセージが伝わります。また,サービス部品側の通信基盤にJAX-WSエンジンを使用している場合や,Cosminexusが提供しているSOAP通信基盤を使用していない場合は,WSDLにSOAPフォルトを定義していてもHCSCサーバ内では例外として扱われます。
- サービスアダプタからサービス部品を呼び出したときに発生したシステム例外は,サービスアダプタでフォルト電文に変換することもできます。
- 例外をフォルト電文に変換しない場合,ビジネスプロセスでは例外として処理して,標準受付にスローします。例外をフォルト電文に変換した場合,フォルトとしてビジネスプロセスでキャッチできます。システム例外をフォルト電文に変換する方法については,「7.11 例外発生時に取得するエラーの選択」を参照してください。
- サービスリクエスタは,HCSCサーバがリターンするSOAPフォルトをCSCMsgServerFaultException※オブジェクトでキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultException※の詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.3.8 エラー情報を取得する」を参照してください。
- なお,サービス部品が応答したSOAPフォルトをHCSCサーバ内で例外ではなくSOAPフォルトのまま伝えたい場合は,SOAP Fault動作定義ファイルで定義します。SOAP Fault動作定義ファイルの詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「SOAP Fault動作定義ファイル」を参照してください。
- 注※
- SOAP1.2の場合は,CSCMsgServerFault12Exceptionとなります。
- HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)
- HCSCサーバからエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-32 HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc074000.gif)
- 図中の各エラーには,次に示すケースが該当します。
- エラー1:要求パラメタ不正,指定文字コード不正,各種フォーマット不正など
- エラー2:あて先(ロケーション)が見つからない,アダプタが停止しているなど
- エラー3:データ変換に失敗したなど
- エラー4:あて先不正,サービス部品が停止,通信障害など
- エラー5:ビジネスプロセス処理上での例外エラーなど
- HCSCサーバで図中のエラー1~エラー3およびエラー5のどれかを検知した場合,発生したエラーの例外をサービスリクエスタにリターンします。図中のエラー4を検知した場合,発生したエラーの例外をサービスリクエスタにそのままリターンするか,サービスアダプタでエラーの例外をフォルト電文に変換するか選択できます。例外発生時に取得するエラーの選択方法については,「7.11 例外発生時に取得するエラーの選択」を参照してください。
- サービスリクエスタは,HCSCサーバがリターンするSOAPフォルトをCSCMsgServerFaultException※オブジェクトでキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。CSCMsgServerFaultException※の詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.3.8 エラー情報を取得する」を参照してください。
- 注※
- SOAP1.2の場合は,CSCMsgServerFault12Exceptionとなります。
- サービスリクエスタでエラーを検知した場合
- サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方を次の図に示します。
図7-33 サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方(標準受付の場合)
![[図データ]](figure/zc074100.gif)
- サービスリクエスタからHCSCサーバを呼び出せなかった場合や,サービス部品の呼び出しは完了したが何らかの原因でHCSCサーバからサービスリクエスタへの応答が返らなかった場合などは,サービスリクエスタ側(クライアント側)のSOAP通信基盤またはJAX-WSエンジンがエラーをリターンします。
- サービスリクエスタ側の通信基盤にCosminexusが提供しているSOAP通信基盤を使用している場合は,C4Faultオブジェクトで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「13.3 C4Faultクラス(SOAP Fault情報の保持)」を参照してください。
- なお,サービスリクエスタ側の通信基盤にJAX-WSエンジンを使用している場合は,SOAPFaultExceptionオブジェクトで例外をキャッチできます。また,Cosminexusが提供しているSOAP通信基盤を使用していない場合は,それぞれの通信基盤の実装に依存します。
(b) ユーザ定義受付の場合
エラーの伝わり方は,エラーの種類やビジネスプロセスの有無によって異なります。
- サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-34 サービス部品からユーザ定義例外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc074200.gif)
- サービス部品側の通信基盤にCosminexusが提供しているSOAP通信基盤またはJAX-WSエンジンを使用している場合で,サービス部品で例外をスローするコーディングをしている場合,サービス部品のWSDLにはユーザ定義例外が定義されます。サービス部品でユーザ定義例外が発生すると,そのエラーは,一度ビジネスプロセスでキャッチできます。
- サービスリクエスタは,ユーザ定義受付に定義したWSDLを使用しますが,ビジネスプロセスから応答するフォルトをWSDLに定義することで,サービスリクエスタでもユーザ定義例外のSOAPフォルトとしてキャッチできます。これによって,サービスリクエスタでもサービス部品がリターンするSOAPフォルトと同じ名称および形式でキャッチすることができます。
- キャッチした例外オブジェクトを解析するための情報は,サービス部品側のプログラムで作成する必要があります。なお,ビジネスプロセスでフォルト名を定義することで,サービスリクエスタで発生した例外が切り分けやすくなります。
- ユーザ定義受付(Webサービス)に要求を出すサービスリクエスタでエラー情報を取得する方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.7.6 エラー情報を取得する」を参照してください。
- サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)
- サービス部品からユーザ定義例外以外のエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-35 サービス部品からユーザ定義例外以外のエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc074300.gif)
- サービス部品側の通信基盤にCosminexusが提供しているSOAP通信基盤を使用している場合で,サービス部品でWSDLに定義していない想定外の例外(システム例外)が発生したときは,RuntimeExceptionとしてSOAPメッセージが伝わります。また,サービス部品側の通信基盤にJAX-WSエンジンを使用している場合や, Cosminexusが提供しているSOAP通信基盤を使用していない場合は,WSDLにSOAPフォルトを定義していてもHCSCサーバ内では例外として扱われます。
- サービスアダプタからサービス部品を呼び出したときに発生したシステム例外は,サービスアダプタでフォルト電文に変換することもできます。
- 例外をフォルト電文に変換しない場合,ビジネスプロセスでは例外として処理して,ユーザ定義受付にスローします。例外をフォルト電文に変換した場合,フォルトとしてビジネスプロセスでキャッチできます。システム例外をフォルト電文に変換する方法については,「7.11 例外発生時に取得するエラーの選択」を参照してください。
- HCSCサーバはCSCMsgServerFaultExceptionのSOAPフォルトでサービスリクエスタにリターンしますが,サービスリクエスタが使用するWSDLはユーザ定義受付に定義したWSDLで,このWSDLにはCSCMsgServerFaultExceptionが定義されていません。そのため,サービスリクエスタ側の通信基盤にCosminexusが提供しているSOAP通信基盤を使用している場合は,C4Faultオブジェクトで例外をキャッチします。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「13.3 C4Faultクラス(SOAP Fault情報の保持)」を参照してください。
- なお,サービスリクエスタ側の通信基盤にJAX-WSエンジンを使用している場合は,SOAPFaultExceptionオブジェクトで例外をキャッチできます。また,Cosminexusが提供しているSOAP通信基盤を使用していない場合は,それぞれの通信基盤の実装に依存します。
- サービス部品が応答したSOAPフォルトをHCSCサーバ内で例外ではなくSOAPフォルトのままで伝え,ビジネスプロセスでフォルトをキャッチしたい場合は,SOAP Fault動作定義ファイルで定義します。SOAP Fault動作定義ファイルの詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「SOAP Fault動作定義ファイル」を参照してください。
- HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)
- HCSCサーバからエラーがリターンした場合でビジネスプロセスを使用するときのSOAP通信でのエラーの伝わり方を次の図に示します。
図7-36 HCSCサーバからエラーがリターンした場合(ビジネスプロセスを使用するとき)のSOAP通信でのエラーの伝わり方
![[図データ]](figure/zc074400.gif)
- 図中の各エラーには,次に示すケースが該当します。
- エラー1:指定文字コード不正,各種フォーマット不正など
- エラー2:あて先(ロケーション)が見つからない,アダプタが停止しているなど
- エラー3:データ変換に失敗したなど
- エラー4:あて先不正,サービス部品が停止,通信障害など
- エラー5:ビジネスプロセス処理上での例外エラーなど
- HCSCサーバで図中のエラー1~エラー3およびエラー5のどれかを検知した場合,発生したエラーの例外をサービスリクエスタにリターンします。図中のエラー4を検知した場合,発生したエラーの例外をサービスリクエスタにそのままリターンするか,サービスアダプタでエラーの例外をフォルト電文に変換するか選択できます。例外発生時に取得するエラーの選択方法については,「7.11 例外発生時に取得するエラーの選択」を参照してください。
- HCSCサーバはCSCMsgServerFaultExceptionのSOAPフォルトでサービスリクエスタにリターンしますが,サービスリクエスタが使用するWSDLはユーザ定義受付に定義したWSDLで,このWSDLにはCSCMsgServerFaultExceptionが定義されていません。そのため,サービスリクエスタ側の通信基盤にCosminexusが提供しているSOAP通信基盤を使用している場合は,C4Faultオブジェクトで例外をキャッチします。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「13.3 C4Faultクラス(SOAP Fault情報の保持)」を参照してください。
- なお,サービスリクエスタ側の通信基盤にJAX-WSエンジンを使用している場合は,SOAPFaultExceptionオブジェクトで例外をキャッチできます。また,Cosminexusが提供しているSOAP通信基盤を使用していない場合は,それぞれの通信基盤の実装に依存します。
- サービスリクエスタでエラーを検知した場合
- サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方を次の図に示します。
図7-37 サービスリクエスタでエラーを検知した場合のSOAP通信でのエラーの伝わり方(ユーザ定義受付の場合)
![[図データ]](figure/zc074500.gif)
- あて先不正,HCSCサーバが停止,通信障害などで,サービスリクエスタからHCSCサーバを呼び出せなかった場合や,サービス部品の呼び出しは完了したが何らかの原因でHCSCサーバからサービスリクエスタへの応答が返らなかった場合などでは,サービスリクエスタ側(クライアント側)のSOAP通信基盤またはJAX-WSエンジンがエラーをリターンします。
- サービスリクエスタ側の通信基盤にCosminexusが提供しているSOAP通信基盤を使用している場合は,C4Faultオブジェクトで例外をキャッチできます。キャッチした例外オブジェクトのgetterを使用することで,発生したフォルト情報(エラーの詳細)を取得できます。C4Faultの詳細については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「13.3 C4Faultクラス(SOAP Fault情報の保持)」を参照してください。
- なお,サービスリクエスタ側の通信基盤にJAX-WSエンジンを使用している場合は,SOAPFaultExceptionオブジェクトで例外をキャッチできます。また,Cosminexusが提供しているSOAP通信基盤を使用していない場合は,それぞれの通信基盤の実装に依存します。
(2) 問題発生個所の切り分け方
標準受付の場合とユーザ定義受付の場合とで問題発生個所の切り分け方が異なります。なお,SOAPによる通信ができない場合の問題発生個所の切り分けについては,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「14.3 問題発生個所の切り分け」を参照してください。
(a) 標準受付の場合
サービスリクエスタから標準受付(Webサービス)を使用してサービス部品を呼び出した場合の問題発生個所の切り分け方について次の図に示します。
図7-38 問題発生個所の切り分け方(サービスリクエスタから標準受付(Webサービス)を使用してサービス部品を呼び出した場合)
![[図データ]](figure/zc074600.gif)
- (i)サービス部品に障害の要因がある場合(サービス部品で定義したユーザ定義例外の場合)
- サービス部品に障害の要因があるおそれがあります。次のメソッドを使用してサービス部品が返したSOAP Faultの内容を取得できます。
- <SOAP1.1の場合>
- getCscmsgFaultCode:FaultCode情報を取得します。
- getCscmsgFaultString:FaultString情報を取得します。
- getCscmsgFaultActor:FaultActor情報を取得します。
- getCscmsgFaultDetail:FaultDetail情報を取得します。
- <SOAP1.2の場合>
- getCscmsgFaultCode:Code情報を取得します。
- getCscmsgFaultReason:Reason情報を取得します。
- getCscmsgFaultRole:Role情報を取得します。
- getCscmsgFaultNode:Node情報を取得します。
- getCscmsgFaultDetail:Detail情報を取得します。
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- (ii)ビジネスプロセスに障害の要因がある場合(ビジネスプロセスで定義したフォルトの場合)
- ビジネスプロセスで実行したアクティビティの処理に障害の要因があるおそれがあります(サービス呼出アクティビティの場合,呼び出したサービス部品に障害の要因があるおそれがあります)。
- 次のメソッドを使用してビジネスプロセスまたはサービス部品が返したSOAP Faultの内容を取得できます。
- <SOAP1.1の場合>
- getCscmsgFaultCode:FaultCode情報を取得します。
- getCscmsgFaultString:FaultString情報を取得します。
- getCscmsgFaultActor:FaultActor情報を取得します。
- getCscmsgFaultDetail:FaultDetail情報を取得します。
- <SOAP1.2の場合>
- getCscmsgFaultCode:Code情報を取得します。
- getCscmsgFaultReason:Reason情報を取得します。
- getCscmsgFaultRole:Role情報を取得します。
- getCscmsgFaultNode:Node情報を取得します。
- getCscmsgFaultDetail :Detail情報を取得します。
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ビジネスプロセスの定義内容
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- また,ビジネスプロセスをどのようなプロセスに設計したかによって,再送(ビジネスプロセスの再実行)をするかどうかサービスリクエスタを含むシステム設計する必要があります。
- (iii)HCSCサーバでエラーを検知した場合(例外名が設定されていない場合)
- 次のメソッドを使用してエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処します。
- getErrorMessage:HCSCサーバ内で検知したエラーのエラーメッセージを取得します。
- getErrorCode:HCSCサーバ内で検知したエラーのエラーコードを取得します。
- また,Cosminexus サービスプラットフォームが出力するメッセージログも参照して,調査します。
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求した引数の内容
- HCSCサーバの設定または状態
- サービスアダプタの定義内容査
- ビジネスプロセスの定義内容
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスアダプタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはサービス部品稼働マシン(サーバ)のSOAP通信基盤またはJAX-WSエンジンに届いているか。
- 3. サービス部品稼働マシン(サーバ)のサービス部品でメッセージが処理できているか。
- 4. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 5. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスアダプタ(クライアント)のSOAP通信基盤またはJAX-WSエンジンに届いているか。
- 確認するときはSOAP通信基盤またはJAX-WSエンジンが出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) SOAP通信基盤またはJAX-WSエンジンが出力する障害情報の取得方法」を参照してください。
- SOAP通信基盤が出力する障害情報の形式については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「14. 障害対策」を参照してください。JAX-WSエンジンが出力する障害情報の形式については,マニュアル「Cosminexus アプリケーションサーバ Webサービス開発の手引」の「29. 障害対策」を参照してください。
-
- なお,SOAP通信基盤またはJAX-WSエンジンが出力するアプリケーションログを取得することで,サービスアダプタとサービス部品間で送受信している電文データを確認できます。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。
- 一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタから要求した引数の内容が誤っている場合
- HCSCサーバの設定に誤りがある場合
- サービスアダプタやビジネスプロセスの定義に誤りがある場合
- サービスリクエスタから要求したユーザ電文に誤りがある場合など
- (iv)通信基盤でエラーを検知した場合(C4Faultの場合)
- SOAP通信基盤が提供するC4Faultからエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処します。
- C4Faultの詳細については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「13.3 C4Faultクラス(SOAP Fault情報の保持)」を参照してください。
- 要因は,次の観点で調査してください。
- サービスリクエスタで使用しているWSDL
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定または状態
- HCSCサーバの設定または状態
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスリクエスタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはHCSCサーバ稼働マシン(サーバ)のSOAP通信基盤に届いているか。
- 3. HCSCサーバ稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 4. HCSCサーバ稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスリクエスタ(クライアント)のSOAP通信基盤に届いているか。
- 確認するときはSOAP通信基盤が出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) SOAP通信基盤またはJAX-WSエンジンが出力する障害情報の取得方法」を参照してください。
- SOAP通信基盤が出力する障害情報の形式については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「14. 障害対策」を参照してください。
-
- なお,SOAP通信基盤が出力するアプリケーションログを取得することで,サービスリクエスタとHCSCサーバ間で送受信している電文データを確認できます。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタで使用しているWSDLが誤っている場合
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定に誤りがある場合
- HCSCサーバの設定に誤りがある場合
(b) ユーザ定義受付の場合
サービスリクエスタからユーザ定義受付(Webサービス)を使用してサービス部品呼び出した場合の問題発生個所の切り分け方について次の図に示します。
図7-39 問題発生個所の切り分け方(サービスリクエスタからユーザ定義受付(Webサービス)を使用してサービス部品呼び出した場合)
![[図データ]](figure/zc074700.gif)
- (i)サービス部品に障害の要因がある場合(サービス部品で定義したユーザ定義例外の場合)
- サービス部品に障害の要因があるおそれがあります。エラーの情報は,サービス部品で定義した内容になります(キャッチした例外オブジェクトの解析するための情報は,サービス部品側のプログラムで作成する必要があります)。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- (ii)ビジネスプロセスに障害の要因がある場合(ビジネスプロセスで定義したフォルトの場合)
- ビジネスプロセスで実行したアクティビティの処理に障害の要因があるおそれがあります(サービス呼出アクティビティの場合,呼び出したサービス部品に障害の要因があるおそれがあります)。
- エラーの情報は,ビジネスプロセスで定義したフォルトの内容になります(キャッチした例外オブジェクトを解析するための情報は,ビジネスプロセスを定義するときに設定しておく必要があります)。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ビジネスプロセスの定義内容
- サービス部品の呼び出しを再送するかどうかは,HCSCサーバを介したサービスリクエスタとサービス部品間(エンドツーエンド)の取り決めとなります。
- また,ビジネスプロセスの設計内容によっても,再送(ビジネスプロセスの再実行)するかどうかシステム設計する必要があります。
- (iii)HCSCサーバでエラーを検知した場合(CSCMsgServerFaultExceptionの場合)
- SOAP通信基盤が提供するC4Faultからエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処します。サービスリクエスタでC4Faultからエラー情報を取得するときの実装方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.7.6 エラー情報を取得する」を参照してください。C4Faultの詳細については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「13.3 C4Faultクラス(SOAP Fault情報の保持)」を参照してください。また,Cosminexus サービスプラットフォームが出力するメッセージログも参照して,調査します。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタから要求した引数の内容
- HCSCサーバの設定または状態
- サービスアダプタの定義内容
- ビジネスプロセスの定義内容
- サービスリクエスタから要求したユーザ電文
- サービス部品稼働マシン
- サービス部品のプログラム
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスアダプタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはサービス部品稼働マシン(サーバ)のSOAP通信基盤に届いているか。
- 3. サービス部品稼働マシン(サーバ)のサービス部品でメッセージが処理できているか。
- 4. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 5. サービス部品稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスアダプタ(クライアント)のSOAP通信基盤に届いているか。
- 確認するときはSOAP通信基盤が出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) SOAP通信基盤またはJAX-WSエンジンが出力する障害情報の取得方法」を参照してください。
- SOAP通信基盤が出力する障害情報の形式については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「14. 障害対策」を参照してください。
-
- なお,SOAP通信基盤が出力するアプリケーションログを取得することで,サービスアダプタとサービス部品間で送受信している電文データを確認できます。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタから要求した引数の内容が誤っている場合
- HCSCサーバの設定に誤りがある場合
- サービスアダプタやビジネスプロセスの定義に誤りがある場合
- サービスリクエスタから要求したユーザ電文に誤りがある場合など
- (iv)通信基盤でエラーを検知した場合((i)~(iii)以外の場合)
- SOAP通信基盤が提供するC4Faultからエラーの内容を取得できます。取得したエラーコードおよびエラーメッセージの対策に従って対処してください。
- サービスリクエスタでC4Faultからエラー情報を取得するときの実装方法については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「10.7.6 エラー情報を取得する」を参照してください。C4Faultの詳細については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「13.3 C4Faultクラス(SOAP Fault情報の保持)」を参照してください。また,Cosminexus サービスプラットフォームが出力するメッセージログも参照して,調査します。
-
- 要因は,次の観点で調査してください。
- サービスリクエスタで使用しているWSDL
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定または状態
- HCSCサーバの設定または状態
- ネットワークの状態
- 次に示す処理が常に実行されているかを確認することで,問題発生個所を絞り込めます。
- 1. サービスリクエスタ(クライアント)からSOAPメッセージが正しく出力されているか。
- 2. SOAPメッセージはHCSCサーバ稼働マシン(サーバ)のSOAP通信基盤に届いているか。
- 3. HCSCサーバ稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージは正しく出力されているか。
- 4. HCSCサーバ稼働マシン(サーバ)のサービス部品からの返信用SOAPメッセージはサービスリクエスタ(クライアント)のSOAP通信基盤に届いているか。
- 確認するときはSOAP通信基盤が出力する障害情報を参照します。障害情報の取得方法については,「7.3.2(3) SOAP通信基盤またはJAX-WSエンジンが出力する障害情報の取得方法」を参照してください。
- SOAP通信基盤が出力する障害情報の形式については,マニュアル「Cosminexus アプリケーションサーバ SOAPアプリケーション開発の手引」の「14. 障害対策」を参照してください。
-
- なお,SOAP通信基盤が出力するアプリケーションログを取得することで,サービスリクエスタとHCSCサーバ間で送受信している電文データを確認できます。
- サービス部品の呼び出しを再送するかどうかは,エラーの内容によって異なります。一時的な障害の場合は,再送を試みることで成功することがありますが,次に示すエラーの場合は,再送を試みてもエラーとなります。
- サービスリクエスタで使用しているWSDLが誤っている場合
- サービスリクエスタ稼働マシンのSOAP通信基盤の設定に誤りがある場合
- HCSCサーバの設定に誤りがある場合など
(3) HCSCサーバから応答するSOAP Faultの内容
HCSCサーバから応答するSOAPメッセージについて,SOAP Faultの要素と,エラー時に設定される情報の対応を示します。
(a) SOAP1.1の場合
SOAP1.1を利用している場合のSOAP Faultの要素と,エラー時に設定される情報の対応を次の表に示します。
エラーのケースの番号は「7.7.1(2) 問題発生個所の切り分け方」で示す番号に相当します。
表7-53 HCSCサーバから応答するSOAP Faultの内容(SOAP1.1の場合)
HCSCサーバから応答するSOAP Fault | エラーのケース |
---|
SOAP Fault要素 | SOAP Fault名称 | フォルト名 | 標準受付の(i),(ii)の場合 | 標準受付の(iii),ユーザ定義受付の(iii)の場合 |
---|
faultcode | Faultコード | - | SOAP通信基盤およびJAX-WSエンジンに依存する値です。 SOAP通信基盤では,message partのメッセージ型属性が参照するQCNameを出力します。 JAX-WSエンジンでは,違反コードを出力します。 |
faultstring | Fault文字列 | - | エラーメッセージを出力します。 |
faultactor | Fault生成者 | - | SOAP通信基盤およびJAX-WSエンジンに依存する値です。 SOAP通信基盤,JAX-WSエンジンともに値はありません。 |
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)の場合は,サービスリクエスタ側のSOAP通信基盤またはJAX-WSエンジンからエラー通知します。
(b) SOAP1.2の場合
SOAP1.2を利用している場合のSOAP Faultの要素と,エラー時に設定される情報の対応を次の表に示します。
エラーのケースの番号は「7.7.1(2) 問題発生個所の切り分け方」で示す番号に相当します。
表7-54 HCSCサーバから応答するSOAP Faultの内容(SOAP1.2の場合)
HCSCサーバから応答するSOAP Fault | エラーのケース |
---|
SOAP Fault要素 | SOAP Fault名称 | フォルト名 | 標準受付の(i),(ii)の場合 | 標準受付の(iii),ユーザ定義受付の(iii)の場合 |
---|
Code | Faultコード | - | 違反コードを出力します。 |
Reason | Fault理由 | - | エラーメッセージを出力します。 |
Role | Fault生成者 | - | 値はありません。 |
Node | Faultノード | - | 値はありません。 |
Detail | Fault詳細 | errorMessage | 次に示すエラーの内容です。
- HCSCサーバ内で検知したエラー
- サービス部品,ビジネスプロセス,およびカスタムアダプタからのエラー
|
errorCode | 次に示す例外の内容に対応するエラーコードです。
- HCSCサーバ内で検知したエラー
- サービス部品,ビジネスプロセス,およびカスタムアダプタからのエラー
|
processInstanceID | ビジネスプロセスのインスタンスIDの情報です。ビジネスプロセスでエラーが発生した場合に値が設定されます。 |
cscmsgFaultCode | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのCode情報です。 | 値はありません。 |
cscmsgFaultReason | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのReason情報です。 | 値はありません。 |
cscmsgFaultRole | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのRole情報です。 | 値はありません。 |
cscmsgFaultNode | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのNode情報です。 | 値はありません。 |
cscmsgFaultDetail | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのDetail情報です。 | 値はありません。 |
faultName | サービス部品(WebサービスまたはSessionBean)またはビジネスプロセスからのフォルト名(例外名)情報です。次の場合に値が設定されます。
- サービス部品(WebサービスまたはSessionBean)からのユーザ定義例外のSOAP Faultの場合
- ビジネスプロセスからのフォルトの場合
| 値はありません。 |
- (凡例)
- -:該当しません。
- 注1 ユーザ定義受付の(i),(ii)の場合は,ユーザ定義例外のSOAP Faultとなります。
- 注2 標準受付の(iv),またはユーザ定義受付の(iv)の場合は,サービスリクエスタ側のJAX-WSエンジンからエラー通知します。
(4) そのほかの障害要因の特定方法(サービス部品呼び出し要求の実行履歴の追跡)
ビジネスプロセスを使用する場合には,サービスリクエスタへ応答した例外およびエラーメッセージから問題発生個所を切り分ける方法のほかに,サービスリクエスタ側で設定したクライアント相関IDや,ビジネスプロセスの相関セットを基に問題発生個所を特定する方法があります。ここでは,ビジネスプロセスを使用する場合に,クライアント相関IDや,ビジネスプロセスの相関セットを基にしてサービス部品呼び出し要求の実行履歴を追跡する手順について説明します。サービス部品呼び出し要求の実行履歴の追跡を次の図に示します。
図7-40 サービス部品呼び出し要求の実行履歴の追跡(Webサービスの場合)
![[図データ]](figure/zc074800.gif)
実行履歴の追跡の基本的な流れは次のようになります。
- 要求時に,受付ごとに次の指定をします。
- 標準受付の場合
要求時のパラメタにクライアント相関IDを指定,または要求電文に相関セットを指定します。
- ユーザ定義受付の場合
要求電文に相関セットを指定します。
- エラーが発生したときのメッセージ共通IDを取得することで,障害が発生したビジネスプロセスのインスタンスを特定します。
- データベースに出力されているプロセスインスタンスの実行履歴を検索し,メッセージ共通IDと対応したビジネスプロセスのプロセスIDを取得します。
プロセスIDを使ってアクティビティの状態を知ることができ,それによってどこの処理で止まっているのかや,どこまで処理が進んでいるのかがわかります。
- メッセージ共通IDを使って,電文の実行履歴からユーザ電文を取得します。
電文の内容を確認でき,障害調査の原因究明に役立ちます。
サービス部品呼び出し要求の実行履歴を追跡するには,主に次の二つの方法があります。
- (a)サービスリクエスタから指定したクライアント相関IDからたどる方法
- (b)ユーザ電文に指定したビジネスプロセスの相関セットからたどる方法
(a) サービスリクエスタから指定したクライアント相関IDからたどる方法
サービスリクエスタから指定したクライアント相関IDからたどる手順を次に示します。
- クライアント相関IDを調査します。
クライアント相関IDは,サービス部品呼び出しを要求するサービスリクエスタ側のプログラムで,要求時(呼び出し時)に設定する情報です。サービスリクエスタからの要求電文と,HCSCサーバで管理している実行履歴や,ログおよびトレースとを対応づけるために使用します。そのため,HCSCサーバに送信した要求ごとに異なるIDを指定することを推奨します(サービスリクエスタ作成時に指定が必要です)。
サービス部品呼び出し要求の実行履歴を追跡する場合,サービスリクエスタ側の要求者からシステム管理者に障害調査を依頼するとき,クライアント相関IDを伝え,システム管理者はその情報を基に実行履歴を追跡します。
サービスリクエスタでのクライアント相関IDを指定するコーディングの例を次に示します。ここでは,標準受付(Webサービス)を呼び出すときの引数に,クライアント相関ID("ClientID0001")を設定しています。
![[図データ]](figure/zc074900.gif)
- クライアント相関IDを基にリクエストトレースを調査し,エラーが発生したときのメッセージ共通IDを取得します。メッセージ共通IDによって,障害が発生したビジネスプロセスのインスタンスを特定できます。
なお,クライアント相関IDは重複しているおそれがあります。そのため,適宜実行時刻やビジネスプロセス名(サービス名)を取得しておくことで,該当個所を特定します。
リクエストトレースの例を次に示します。リクエストトレースの"message"列にクライアント相関IDやビジネスプロセス名(サービス名)があり,先頭にメッセージ共通IDが出力されています。
![[図データ]](figure/zc075000.gif)
- 取得したメッセージ共通IDを基に,プロセスインスタンスの実行履歴を参照してビジネスプロセスのプロセスIDを取得します。プロセスIDを取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,開始日時とビジネスプロセス名(サービス名)を条件に,プロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"relation"を指定し,検索条件(where句)にSQL条件を指定して,該当するメッセージ関連情報を表示します。
![[図データ]](figure/zc075100.gif)
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
- 取得したプロセスIDを基に,プロセスインスタンスの実行履歴を参照して,ビジネスプロセスのアクティビティとその状態を取得します。アクティビティの情報を取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,開始日時とビジネスプロセス名(サービス名)を条件に,プロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"activity"を指定し,検索条件(where句)にSQL条件を指定して,該当するアクティビティ情報を表示します。
状態が"Executing"となっている個所が現在実行中のアクティビティです。状態を確認することで,どのアクティビティで止まっているかがわかります。
![[図データ]](figure/zc075200.gif)
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
- 電文の実行履歴を採取する設定をし,さらに電文の実行履歴の電文データ(ユーザ電文)を採取する設定をしている場合,ユーザ電文の内容を確認できます。
実行履歴の採取については,HCSCサーバランタイム定義で設定します。詳細については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「HCSCサーバランタイム定義ファイル」を参照してください。
電文の実行履歴を取得するには,電文の実行履歴情報の表示(csmlshistory)コマンドを使用します。
csmlshistoryコマンドでは,メッセージ共通IDを条件として電文の実行履歴を検索します(クライアント相関IDや日時から検索することもできます)。
csmlshistoryコマンドの使い方については「6.2.3 電文の実行履歴を利用する」を,コマンドの文法についてはマニュアル「Cosminexus サービスプラットフォーム リファレンス」の「csmlshistory(電文の実行履歴情報の表示)」を参照してください。
(b) ユーザ電文に指定したビジネスプロセスの相関セットからたどる方法
ユーザ電文に指定したビジネスプロセスの相関セットからたどる手順を次に示します。
- 相関セットを調査します。
相関セットは,サービス部品呼び出しを要求するサービスリクエスタ側のプログラムで,要求時のユーザ電文に設定する情報です。サービスリクエスタからHCSCサーバを介してサービス部品に送信する要求電文を一意に識別するために利用する文字列です。
HCSCサーバからの応答は,相関セットを含んだ応答電文をサービスリクエスタに返信します。その結果,サービスリクエスタは受信した応答電文が,どの要求電文に対する応答であるのかを一意に識別できます。
相関セットを使用するには,開発環境でのビジネスプロセス定義時に定義する必要があります。詳細については,マニュアル「Cosminexus サービスプラットフォーム 開発ガイド」の「6.5.2 相関セットの定義」を参照してください。
サービス部品呼び出し要求の実行履歴を追跡する場合,サービスリクエスタ側の要求者からシステム管理者に障害調査を依頼するときに,相関セットと要求したビジネスプロセス名(サービス名)を伝え,システム管理者はその情報を基に実行履歴を追跡します。
サービスリクエスタ利用者が相関セットの値をとらえていない場合は,HCSCサーバにインポートしたリポジトリを開発環境で参照して,該当のビジネスプロセスの相関セットを調査する必要があります。相関セットの調査方法は次のとおりです。
1. ビジネスプロセス定義画面の[変数・相関セット]アイコンをダブルクリックします。
変数・相関セット一覧ダイアログが表示されます。
2. 変数・相関セット一覧ダイアログの「表示」ボタンをクリックします。
変数の表示ダイアログが表示されます。
3. ユーザ電文と変数表示ダイアログのXMLスキーマを突き合わせて,相関セットへのパスを取得します。
4. 変数・相関セット一覧ダイアログを使って,パス名から変数名や部分名を取得し,変数・相関セット一覧ダイアログから同じ変数名や部分名を持つ相関セットを探して相関セット名を取得します。
- 取得した相関セットを基に,プロセスインスタンスの実行履歴を参照して,ビジネスプロセスのプロセスIDを取得します。プロセスIDを取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,相関セットを条件としてプロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"process_set"を指定し,検索条件(where句)にSQL条件を指定し,該当するプロセス概要情報を表示します。
![[図データ]](figure/zc075300.gif)
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
- 取得したプロセスIDを基に,プロセスインスタンスの実行履歴を参照して,ビジネスプロセスのアクティビティとその状態を取得します。アクティビティの情報を取得するには,プロセスインスタンスの検索(cscpiselect)コマンドを使用します。
cscpiselectコマンドでは,開始日時とビジネスプロセス名(サービス名)を条件としてプロセスインスタンスの実行履歴を検索します。
また,-tableオプションに"activity"を指定し,検索条件に該当するアクティビティ情報を表示します。
状態が"Executing"となっている個所が現在実行中のアクティビティです。状態を確認することで,どのアクティビティで止まっているかがわかります。
![[図データ]](figure/zc075400.gif)
cscpiselectコマンドの使い方については「6.1.2 プロセスインスタンスの実行履歴を検索する」を,コマンドの文法については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「cscpiselect(プロセスインスタンスの検索)」を参照してください。
(5) SOAP1.2のWebサービスを使用する際の注意事項
SOAP1.1のSOAP FaultとSOAP1.2のSOAP Faultでは形式に違いがあります。そのため,SOAP1.2のWebサービスがエラー応答を返したときに,リクエスト受付がEJBやSOAP1.1だと情報が欠落します。
SOAP1.2のWebサービスが返すすべてのSOAP Fault情報を確認するには,次に示す手段のどれかが必要になります。
- SOAP1.2のリクエスト受付を使用し,サービスリクエスタを実装する。
- DBで保持されている情報をcsmlshistoryコマンドで確認する。
- HCSCサーバのメッセージログを確認する(Detail情報を除いたFault情報が出力される)。