CXF 2.6.2를 사용하여 외부 시스템에서 웹 서비스에 액세스하고 있습니다. 스텁은 WSDL 파일에서 생성됩니다. 웹 서비스가 제대로 응답 할 때 제대로 작동하지만 오류가 발생하지는 않습니다. org.w3c.dom.DOMException가 :에 의해 발생CXF에서 외부 시스템의 SOAP 오류를 처리하는 방법은 무엇입니까?
나는 웹 서비스에서 얻을 6,가 [ExceptionDetail : 널] org.jboss.ws에서의 동작은 노드 유형이 지원되지
그러면 I는 다음의 예외를 얻는다. (org.apache.cxf.jaxws.JaxWsClientProxy.createSoapFault (NodeImpl.java:459) )에서JaxWsClientProxy.java:234) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke (JaxWsClientProxy.java:152)
실제 응답은 다음과 같습니다
는ID: 6
Response-Code: 500
Encoding: UTF-8
Content-Type: text/xml; charset=utf-8
Headers: {Content-Length=[1925], content-type=[text/xml; charset=utf-8], Date=[Wed, 16 Oct 2013 05:40:21 GMT], Persistent-Auth=[true], Server=[Microsoft-IIS/7.5], X-Powered-By=[ASP.NET]}
Payload:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body><s:Fault>
<faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
<faultstring xml:lang="en-US">External Exception Message</faultstring>
<detail><ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><HelpLink i:nil="true"/><InnerException i:nil="true"/><Message>External Exception Message</Message><StackTrace>...stacktrace from external system...</StackTrace><Type>XXXException</Type></ExceptionDetail></detail>
</s:Fault></s:Body>
</s:Envelope>
그래서 제 질문은 내가 CXF 제대로 soapfaults을 처리 할 수있는 방법인가? 내가 필요한 것은 오류의 원인을 응답에서 제거하는 것입니다.
물론 반환 된 메시지를 구문 분석 할 수는 있지만 매우 귀찮은 작업입니다.
반환 된 soapmessage를 가져 오는 자체 인터셉터 (AbstractSoapInerceptor 확장)를 이미 등록했지만 메시지에 응답이있는 inputstream 만 포함되어 있으며 XML 내부를 인식하지 못하는 것 같습니다.
감사