Web サービス SOAP の障害コードおよび障害ストリングでの振る舞いの変更を確認する

この規則は、SOAP の障害コードおよび障害ストリングを取得するメソッドの呼び出しにフラグを立てます。 Web サービスのランタイム環境によって戻されるデフォルトの障害コードおよび障害ストリングは、WebSphere Application Server V8 で変更されました。

特に以下のメソッドにフラグが立てられます。

デフォルトの障害コードおよび障害ストリングに対する変更は、XML 暗号化を使用する Web サービスに関連した機密漏れの可能性を修正するために行われました。修正の一部として、Web サービス・ランタイム環境によって生成される SOAP 障害から詳細情報が除去されました。バージョン 8 のデフォルトでは、Web サービス・ランタイム環境は、ランタイム環境によって生成されるすべての障害を soapenv:Server という障害コードと Internal Error という障害ストリングを含む単一タイプの障害に統一します。

アプリケーションがランタイム環境の障害コードまたは障害ストリングからの詳細情報を必要とする場合、アプリケーションを変更する必要がある可能性があります。 webservices.unify.faults という Java 仮想マシンのカスタム・プロパティーを使用して、デフォルトの振る舞いを変更することもできます。 前のリリースの振る舞いに戻すには、webservices.unify.faultsfalse に設定します。

WebSphere Application Server V8 より前のデフォルトの振る舞いでは、障害コードまたは障害ストリングに詳細情報が戻されました。この問題は、6.0.2、6.1、7.0 などの一連のサービスでも修正されていますが、これらのリリースではデフォルトの振る舞いは未変更のままです。 これらのサービス・リリースでは、webservices.unify.faults には false というデフォルト値があります。これらのリリースでバージョン 8 と同じ振る舞いを得るには、この値を true に変更します。

JAX-WS の例:
import javax.xml.ws.soap.SOAPFaultException;
import javax.xml.ws.soap.SOAPFault;

try {
// some code that causes a fault
...
} catch (SOAPFaultException e) {
SOAPFault soapFault = e.getFault();
String faultCode = soapFault.getFaultCode();
String faultString = soapFault.getFaultString();
...
}


JAX-RPC の例:
import javax.xml.rpc.soap.SOAPFaultException;
import javax.xml.namespace.QName;

try {
// some code that causes a fault
...
} catch (SOAPFaultException e) {
QName faultCode = e.getFaultCode();
String faultString = e.getFaultString();
...
}

これらの両方の例とも、getFaultCode() メソッドおよび getFaultString() メソッドの呼び出しにフラグが立てられます。

追加情報については、以下を参照してください。