JAX-WSoverSOAPを使用してWebサービスクライアントを実装しています。そのエラーコードは次の方法で返されます。
<?xml version = '1.0' encoding = 'UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<env:Header>
<!-- header stuff goes here -->
</env:Header>
<env:Body>
<env:Fault>
<abc:fault xmlns:abc="http://example.com/abc">
<abc:faultcode>12345</abc:faultcode>
<abc:faultstring>Error message goes here</abc:faultstring>
</abc:fault>
</env:Fault>
</env:Body>
</env:Envelope>
私の知る限り、これはSOAP障害を実行する正しい方法ではありません。env:Faultのサブ要素は、別の名前空間ではなく、<faultcode>
とである必要があります。残念ながら、これをWebサービスに変更させる方法はありません。<faultstring>
<fault>
私の望みは、SOAPHandlerでこのメッセージを解析し、コードの残りの部分に渡す前に通常の障害に変換できることでしたが、以前のハンドラーにメッセージを記録すると、Fault要素が完全に表示されました。空。<abc:fault>
なくなった!
WebSphere 7でJAX-WSを使用しており、システムプロパティで「jaxws.payload.highFidelity」をtrueに設定してみました。元のメッセージを取得する方法についての手がかりはありますか?
これをそのままにしておくと、JAX-WSがフォールトコードを見つけることができないため、NullPointerExceptionを伴うWebServiceExceptionが発生します。