I am using CXF to generate a jaxb binded client that is talking to a service written in axis2. When I get a SOAP exception I need to get the value of the Subcode to determine what type of fault occurred, but I can't seem to figure out how to get the info from the jaxb objects.

Here is the xml returned from the service. I need to get the "3001" code out of the jaxb object.


<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
<soapenv:Body>
<soapenv:Fault xmlns:axis2ns17="http://www.w3.org/2003/05/soap-envelope";>
<soapenv:Code>
<soapenv:Value>axis2ns17:Sender</soapenv:Value>
<soapenv:Subcode>
<soapenv:Value xmlns:axis2ns18="http://www.mywebservice.com/games/";>axis2ns18:3001
</soapenv:Value>
</soapenv:Subcode>
</soapenv:Code>
<soapenv:Reason>
<soapenv:Text xml:lang="en-US">User not active.</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

My code looks like this

SOAPFault fault = soapException.getFault();

and from there I have tried

fault.getFaultCode() => "axis2ns17:Sender"
fault.getFaultSubCodes() => empty iterator

and a host of other things. I have also inspected the object from my debugger and can't seem to find anything. How do I get this SubCode out ? Am I going to have to switch to an Axis2 client ? Will an alternate binding help? Any other ideas?

I am using cxf2.2.4.


Daryl


Reply via email to