[jboss-user] [JBossWS] - JBossWS throws exception when receiving unbound soap header

Dennisk do-not-reply at jboss.com
Tue Aug 19 05:14:31 EDT 2008


I hope some one can help me with this problem, it's causing me headaches:

I use Jax-ws in my webservice client project deployed on JBoss4.2.2GA (with JBossWs patch) to communicate with a party through soap. When I receive a reply to my request I get the following exception:
2008-08-19 10:37:42,020 ERROR [org.jboss.ws.core.soap.SOAPMessageUnMarshaller] Cannot unmarshall SOAPMessage
  | javax.xml.soap.SOAPException: Invalid SOAPHeaderElement name: api-version
  | 	at org.jboss.ws.core.soap.SOAPHeaderImpl.addChildElement(SOAPHeaderImpl.java:64)
  | 	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.buildSOAPHeader(EnvelopeBuilderDOM.java:174)
  | 	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:138)
  | 	at org.jboss.ws.core.soap.EnvelopeBuilderDOM.build(EnvelopeBuilderDOM.java:96)
  | 	at org.jboss.ws.core.soap.MessageFactoryImpl.createMessage(MessageFactoryImpl.java:262)
  | 	at org.jboss.ws.core.soap.SOAPMessageUnMarshaller.read(SOAPMessageUnMarshaller.java:84)
  | 	at org.jboss.remoting.transport.http.HTTPClientInvoker.readResponse(HTTPClientInvoker.java:473)
  | 	at org.jboss.remoting.transport.http.HTTPClientInvoker.useHttpURLConnection(HTTPClientInvoker.java:305)
  | 	at org.jboss.remoting.transport.http.HTTPClientInvoker.transport(HTTPClientInvoker.java:135)
  | 	at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
  | 	at org.jboss.remoting.Client.invoke(Client.java:1634)
  | 	at org.jboss.remoting.Client.invoke(Client.java:548)
  | 	at org.jboss.ws.core.client.RemotingConnectionImpl.invoke(RemotingConnectionImpl.java:183)
  | 	at org.jboss.ws.core.client.SOAPRemotingConnection.invoke(SOAPRemotingConnection.java:77)
  | 	at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:337)
  | 	at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:243)
  | 	at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:164)
  | 	at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150)
  | 	at $Proxy389.getDatabases(Unknown Source)
  | 	at com.myorganize.services.mail.MailServiceBean.getDatabaseId(MailServiceBean.java:180)

It looks like the parsing of the unbound soap header element (api-version) causes an exception (I do not need this info anyway). Strangely enough in Eclipse I used the jaxws-rt implementation for testing these calls and there it worked perfectly and caused no exceptions. I looked at the jboss code (org.jboss.ws.core.soap.SOAPHeaderImpl.addChildElement) that trows the exception and it seems to throw it when the namespace or prefix is null, but I do not exactly know how or why these could be null.

Can anybody give me some info on what the exact problem could be and maybe what the best solution is? Or is there a setting or configuration item that can direct jboss to ignore soap header elements.

I already tried to use the jaxws-rt implementation in JBoss (4.2.2.GA) but I could not get a working set because the jbossws core seems to be tightly coupled with the jboss application server, and I keep getting compatibility and classloading issues with implementation classes of jbossws/saaj and jaxws-rt. 
ps. I cannot change the wsdl and define the header elements because the other party will not change the wsdl. 
pss. I hope to avoid having to write a raw soap msg handler to remove the element since it is a lot of work and I think it should not be necessary. 

The return message with the api-version soap header element that causes the problem:

  | <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  |   <soap:Header>
  |     <api-version>1.82</api-version>
  |   </soap:Header>
  |   <soap:Body>
  |     <ns1:getDatabasesResponse xmlns:ns1="http://tservice.services.xxxxxxxx.com/">
  |       <databaseInfos>
  |         <id>yDK</id>
  |         <name>_Expeditie</name>
  |         <subscriberFields>email</subscriberFields>
  |         ............deleted contents of message..................
  |         <subscriberFields>naam</subscriberFields>
  |       </databaseInfos>
  |     </ns1:getDatabasesResponse>
  |   </soap:Body>
  | </soap:Envelope>

Thanks in advance for looking at this problem...regards,


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

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

More information about the jboss-user mailing list