0 Replies Latest reply: Feb 27, 2007 9:55 AM by Bart Vanhaute RSS

Invalid element in SomeException - message

Bart Vanhaute Newbie

I recently upgraded from jboss-3.2.3 jboss.net to jboss-3.2.8SP1 jboss.net, and now I discovered an incompatibility between the latter and apache axis (1.4) clients. In apache axis, user exceptions thrown in the service methods do not have a 'message' element, while they do have this element in the latest 3.2.8 jboss version.

When the axis client calls that service and the service indeed throws the user exception, the result is (abbreviated):

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: org.xml.sax.SAXException: Invalid element in my.package.SomeException - message
 faultActor:
 faultNode:
 faultDetail:
 {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Invalid element in my.package.SomeException - message
 at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:258)
 at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
 at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1672)
 at org.apache.crimson.parser.Parser2.content(Parser2.java:1963)
 ....
 at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
 at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
 at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
 at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
 at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
 at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
 at org.apache.axis.client.Call.invoke(Call.java:2767)
 at org.apache.axis.client.Call.invoke(Call.java:2443)
 ....

The exceptions where declared in the web-service.xml to use the BeanSerializerFactory for encoding.

I found a workaround by using my own variant of the BeanSerializerFactory for encoding exceptions. That version filters out the 'message' property, but I am unsure if this is 'The Right Way' to fix this problem.