My Axis 1.3 server operations throw MyException which is defined something like this (though in reality it's more complex):

public class MyException extends AxisFault implements Serializable
{
 private String mytext;
 public String getMytext() {return mytext;}
 public void setMytext(String mytext) {this.mytext = mytext;}
 // the normal wsdl2java generated stuff such
 // as constructor, getSerializer(), getDeserializer()
}

I see this serialized on the line as:

<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
  <faultcode>soapenv:Server.userException</faultcode>
  <faultstring>mypackage.MyException</faultstring>
  <detail>
   <faultData>
    <mytext>testing exceptions</mytext>
   </faultData>
   <ns1:stackTrace
   ... stack trace here ...
   </ns1:stackTrace>
<ns2:hostname xmlns:ns2="http://xml.apache.org/axis/";>myhostname</ns2:hostname>
   </detail>
</soapenv:Fault>

I'm not an expert here, obviously, but I'm pretty sure that this serialization is wrong. In particular:

1. the fault string is the name of the exception class, which is odd
2. it refers to <faultData> when I'd expect to see <ns1:MyException> or similar
3. it should not contain a server-side stack trace

As it stands, a client that attempts to deserialize this has no clue what type the contained exception is and thus fails.

My cubicle wall now has a large hole from me banging my head into it on a regular basis ;-) so could someone please offer a clue as to what could be going wrong. What could cause Axis to serialize my exception in this way?

Thanks.

_________________________________________________________________
On the road to retirement? Check out MSN Life Events for advice on how to get there! http://lifeevents.msn.com/category.aspx?cid=Retirement

Reply via email to