I am using spring-ws-2.3.1, While creating client for webservices sometime i am getting SoapFaultClientException like below,
<SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>There was a problem with the server so the message could not proceed</faultstring> <faultactor>InvalidAPI</faultactor> <detail> <ns0:serviceException xmlns:ns0="http://www.books.com/interface/v1"> <ns1:messageId xmlns:ns1="http://www.books.org/schema/common/v3_1">5411</ns1:messageId> <ns1:text xmlns:ns1="http://www.books.org/schema/common/v3_1">Locale is invalid.</ns1:text> </ns0:serviceException> </detail> </SOAP-ENV:Fault> I am trying to get the "messageId" and "Text" of the ServiceException but i couldn't.Please find the code below,
catch (SoapFaultClientException ex) { SoapFaultDetail soapFaultDetail = ex.getSoapFault().getFaultDetail(); // <soapFaultDetail> node // if there is no fault soapFaultDetail ... if (soapFaultDetail == null) { throw ex; } SoapFaultDetailElement detailElementChild = soapFaultDetail.getDetailEntries().next(); Source detailSource = detailElementChild.getSource(); Object detail = webServiceTemplate.getUnmarshaller().unmarshal(detailSource); System.out.println("Detail"+detail.toString());//This object prints the jaxb element } The "detail" object returns the JaxbElement.Is there any elegant way to parse the soap fault.
Any help should be appreciated.