Cosminexus ビジネスプロセス管理/エンタープライズサービスバス V8 サービスプラットフォーム 開発ガイド
要求先のサービス部品,HCSCサーバ,およびJAX-WSエンジンでエラーが発生した場合,エラー情報を取得し,その情報に従って対処します。
JAX-WSエンジンを使用して通信するサービスリクエスタの場合,情報がラップされた例外(SOAP1.1の場合はCSCMsgServerFaultException_Exception,SOAP1.2の場合はCSCMsgServerFault12Exception_Exception)※がキャッチされます。そのため,getFaultInfo()メソッドを使用してフォルト情報の格納クラスを取得する必要があります。
getFaultInfo()メソッドを使用して,フォルト情報の格納クラスを取得する場合の,サービスリクエスタ側の実装の例を次に示します。
/**
* Sample Program
*/
{
try {
:
// Webサービス呼び出し
:
} catch (CSCMsgServerFaultException_Exception e) {
// CSC内部で例外またはユーザ定義例外が発生
// CSCで定義している例外オブジェクトを取得
CSCMsgServerFaultException faultInfo = e.getFaultInfo();
// 例外情報を出力
System.err.println("errorCode="
+ faultInfo.getErrorCode());
System.err.println("errorMessage="
+ faultInfo.getErrorMessage());
System.err.println("processInstanceID="
+ faultInfo.getProcessInstanceID());
System.err.println("faultCode="
+ faultInfo.getCscmsgFaultCode());
System.err.println("faultActor="
+ faultInfo.getCscmsgFaultActor());
System.err.println("faultString="
+ faultInfo.getCscmsgFaultString());
System.err.println("faultName="
+ faultInfo.getFaultName());
byte[] faultDetail = faultInfo.getCscmsgFaultDetail();
try {
if(faultDetail != null) {
System.err.println("faultDetail="
+ new String(faultDetail, "UTF-8"));
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
} catch (SOAPFaultException e) {
:
}
}
|
/**
* Sample Program
*/
{
try {
:
// Webサービス呼び出し
:
} catch (CSCMsgServerFault12Exception_Exception e) {
// CSC内部で例外またはユーザ定義例外が発生
// CSCで定義しているフォルト情報のオブジェクトを取得
CSCMsgServerFault12Exception faultInfo = e.getFaultInfo();
// 例外情報を出力
System.err.println("errorCode="
+ faultInfo.getErrorCode());
System.err.println("errorMessage="
+ faultInfo.getErrorMessage());
System.err.println("processInstanceID="
+ faultInfo.getProcessInstanceID());
CscmsgFaultCode code = faultInfo.getCscmsgFaultCode();
if (code == null) {
System.err.println("Code=" + code);
} else {
List<String> values = code.getValues();
for(String value : values) {
System.err.println("Code Value=" + value);
}
}
CscmsgFaultReason reason = faultInfo.getCscmsgFaultReason();
if (reason == null) {
System.err.println("Reason=" + reason);
} else {
List<CscmsgFaultReasonText> texts =
reason.getCscmsgFaultReasonText();
Locale locale = Locale.getDefault();
for(CscmsgFaultReasonText text : texts) {
if(locale.equals(text.getLocale())) {
System.err.println("Reason=" + text.getText());
}
}
}
System.err.println("Role="
+ faultInfo.getCscmsgFaultRole());
System.err.println("Node="
+ faultInfo.getCscmsgFaultNode());
System.err.println("faultName="
+ faultInfo.getFaultName());
byte[] faultDetail = faultInfo.getCscmsgFaultDetail();
try {
if(faultDetail != null) {
System.err.println("faultDetail="
+ new String(faultDetail, "UTF-8"));
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
} catch (SOAPFaultException e) {
:
}
}
|
SOAPエンベロープのdetail情報には,Webサービスからの例外(SOAP Fault)の場合には,サービス(SOAP Fault発行元)が返してきたSOAP Faultの情報とHCSC-Messagingが設定したエラーメッセージ,およびエラーコードが含まれます。
HCSC-Messagingで検出した例外(Exception)の場合や,Webサービス以外のサービスからの例外(Exception)の場合には,HCSC-Messagingで検出したエラーのエラーコードとエラー情報が含まれます。
各メソッドについて,次に説明します。
エラー情報(SOAP Fault)の形式を次の表に示します。
表10-9 エラー情報(SOAP Fault)の形式
| 要素 | 名称 | 内容 | |
|---|---|---|---|
| SOAP1.1 | SOAP1.2 | ||
| faultcode | Code | Faultコード | JAX-WSエンジンに依存する値です。 違反コードを出力します。 |
| faultstring | − | Fault文字列 | JAX-WSエンジンに依存する値です。 エラーメッセージを出力します。 |
| − | Reason | Fault理由 | JAX-WSエンジンに依存する値です。 エラーメッセージを出力します。 |
| faultactor | Role | Fault生成者 | JAX-WSエンジンに依存する値です。値はありません。 |
| − | Node | Faultノード | JAX-WSエンジンに依存する値です。値はありません。 |
| detail※1 | Detail※2 | Fault詳細 | wsdl:faultに対応する内容です。 |
表10-10 エラー情報(SOAP Fault)の詳細(SOAP1.1)
| フィールド名 | 説明 | |
|---|---|---|
| サービス部品,ビジネスプロセス,カスタムアダプタ,または連携するHCSCサーバからのエラー(フォルト) | HCSCサーバで検知したエラー(例外) | |
| errorMessage | 次に示すエラーの内容です。
|
|
| errorCode | 次に示す例外の内容に対応するエラーコードです。
|
|
| processInstanceID | ビジネスプロセスのインスタンスIDの情報です。 ビジネスプロセスでエラーが発生した場合に値が設定されます。 |
|
| cscmsgFaultCode | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultCode情報です。 | − |
| cscmsgFaultString | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultString情報です。 | − |
| cscmsgFaultActor | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultActor情報です。 | − |
| cscmsgFaultDetail | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのDetail情報です。 | − |
| faultName | サービス部品(WebサービスまたはSessionBean)またはビジネスプロセスからのフォルト名(例外名)情報です。 次の場合に値が設定されます。
|
− |
表10-11 エラー情報(SOAP Fault)の詳細(SOAP1.2)
| フィールド名 | 説明 | |
|---|---|---|
| サービス部品,ビジネスプロセス,カスタムアダプタ,または連携するHCSCサーバからのエラー(フォルト) | HCSCサーバで検知したエラー(例外) | |
| errorMessage | 次に示すエラーの内容です。
|
|
| errorCode | 次に示す例外の内容に対応するエラーコードです。
|
|
| processInstanceID | ビジネスプロセスのインスタンスIDの情報です。 ビジネスプロセスでエラーが発生した場合に値が設定されます。 |
|
| cscmsgFaultCode | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultCode情報です。 | − |
| cscmsgFaultReason | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのFaultReason情報です。 | − |
| cscmsgFaultRole | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのRole情報です。 | − |
| cscmsgFaultDetail | サービス部品(Webサービス),ビジネスプロセス,またはカスタムアダプタからのDetail情報です。 | − |
| faultName | サービス部品(WebサービスまたはSessionBean)またはビジネスプロセスからのフォルト名(例外名)情報です。 次の場合に値が設定されます。
|
− |
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.