AXIS2によって作成されたADBスタブを使用してSOAPサービスにアクセスします。サービスによって返されるAxisFaultの生のXML応答をログに記録したいと思います。これらのエラーを「ServiceError」としてキャッチできます。ただし、生のXMLを取得する方法が見つかりません(以下の例を参照)。
getOMElementを使用して、通常の処理のために生のXML要求/応答にアクセスする方法を見つけました(以下の例を参照)。ただし、これは障害に対しては機能しません。
ADBスタブを使用して生のXML障害を取得するにはどうすればよいですか?
Javaコードの例:
public void testRequest(String URL) throws AxisFault {
MyServiceStub myservice = new MyServiceStub(URL);
MyRequest req = new MyRequest();
try {
TypeMyFunctionResponse response = myservice.myFunction(req);
// logging full soap response
System.out.println("SOAP Response: "
+ response.getOMElement(null,
OMAbstractFactory.getOMFactory())
.toStringWithConsume());
} catch (RemoteException e) {
//...
} catch (ServiceError e) {
// how to get the raw xml?
}
}
取得してログに記録したい障害応答の例:
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<soapenv:Fault>
<soapenv:Code>
<soapenv:Value>soapenv:Receiver</soapenv:Value>
</soapenv:Code>
<soapenv:Reason>
<soapenv:Text xml:lang="en-US">service error</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail>
<ns1:error xmlns:ns1="http://www.somehost.com/webservices/someservice">
<ns1:code>500</ns1:code>
<ns1:messageText>some fault message</ns1:messageText>
</ns1:error>
</soapenv:Detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>