[jboss-user] [JBossWS] - Getting ClassCast Exception in case of malformed webservice

gandulf.k do-not-reply at jboss.com
Mon May 18 04:22:13 EDT 2009


Hi, i'm using jbowss ws native with validation turned on to ensure the requests and responses are valid. In case of a xml-valid document the validation is working fine and I'm getting validation errors from the validator. But if i'm sending back a totally corrupt xml message, missing closing tags, etc. then i'm getting the following exception which is not very intuitive:


  | Caused by: javax.xml.ws.WebServiceException: java.lang.ClassCastException: org.jboss.ws.core.soap.TextImpl cannot be cast to org.jboss.ws.core.soap.SOAPElementI
  | mpl
  |         at org.jboss.ws.core.jaxws.client.ClientImpl.handleRemoteException(ClientImpl.java:404)
  |         at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:314)
  |         at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:172)
  |         at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:152)
  |         at $Proxy311.bookOrders(Unknown Source)
  |         at com.skidata.dta.server.co.v3_0.classic.impl.BookOrdersHelper.invoke(BookOrdersHelper.java:46)
  |         ... 12 more
  | Caused by: java.lang.ClassCastException: org.jboss.ws.core.soap.TextImpl cannot be cast to org.jboss.ws.core.soap.SOAPElementImpl
  |         at org.jboss.ws.core.CommonSOAPBinding.getParameterFromMessage(CommonSOAPBinding.java:894)
  |         at org.jboss.ws.core.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:634)
  |         at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:380)
  |         at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:302)
  |         ... 16 more
  | 

I digged into the code a little bit and found out that the actual XML parser exception which i'd like to get is ignored because the SOAPMessageUnMarshallerHTTP is creating a MessageFactory with ignoreParseErrors = true. (line 82 in 3.1.1 source)

  |    MimeHeaders mimeHeaders = getMimeHeaders(metadata);
  |             soapMsg = getMessageFactory().createMessage(mimeHeaders, inputStream, true);
  | 
Which catches the Parse Excpetion and simply returns null in case of a parse error. 

Is there another way than changing the source code to change this behaviour, because i'd like to use the original distribution and not apatched one which will be a mess to update later...

thanks gandulf


View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4231537#4231537

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4231537



More information about the jboss-user mailing list