Back Forum Reply New

Adding wsa header causes NullPointerException

Hi!
I have a web service which usually works well. However, if I add a wsa header to the request message I get a NullPointerException. Do I have to register the wsa namespace or SOAP headers or something in the Spring configuration before I can use them?

This is the message. If I remove the red part it works fine:

Code:
lt;?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?gt;
lt;soap:Envelope xmlns:soap=quot;2003/05/soap-envelopequot;   xmlns:app=quot;/  lt;soap:Headergt;       lt;wsa:MessageIdgt;urn:uuid:0837b38d-194d-44fa-8a7f-b01087a11861lt;/wsa:MessageIdgt;   lt;/soap:Headergt;   lt;soap:Bodygt;       lt;appueryByDesignationgt;lt;designationgt;X_21lt;/designationgt;       lt;/appueryByDesignationgt;  lt;/soap:Bodygt;
lt;/soap:Envelopegt;
This is the stack trace:

Code:
DEBUG Endpoint invocation resulted in exception - responding with Fault at org..ws.server.MessageDispatcher.processEndpointException(MessageDispatcher.java:313)
java.lang.NullPointerException
at org..ws.soap.saaj.Saaj13Implementation.getName(Saaj13Implementation.java:67)
at org..ws.soap.saaj.SaajSoapEnvelope.getBody(SaajSoapEnvelope.java:50)
at org..ws.soap.AbstractSoapMessage.getSoapBody(AbstractSoapMessage.java:36)
at org..ws.soap.AbstractSoapMessage.getPayloadSource(AbstractSoapMessage.java:46)
at org..ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping.resolveQName(PayloadRootQNameEndpointMapping.java:57)
at org..ws.server.endpoint.mapping.AbstractQNameEndpointMapping.getLookupKeyForMessage(AbstractQNameEndpointMapping.java:33)
at org..ws.server.endpoint.mapping.AbstractMapBasedEndpointMapping.getEndpointInternal(AbstractMapBasedEndpointMapping.java:106)
at org..ws.server.endpoint.mapping.AbstractEndpointMapping.getEndpoint(AbstractEndpointMapping.java:83)
at org..ws.server.MessageDispatcher.getEndpoint(MessageDispatcher.java:248)
at org..ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:201)
at org..ws.server.MessageDispatcher.receive(MessageDispatcher.java:168)
at org..ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:88)
at org..ws.transport.support.SimpleWebServiceMessageReceiverObjectSupport.handleConnection(SimpleWebServiceMessageReceiverObjectSupport.java:56)
at org..ws.transport.jms.JmsMessageReceiver.handleMessage(JmsMessageReceiver.java:70)
at org..ws.transport.jms.WebServiceMessageListener.onMessage(WebServiceMessageListener.java:45)
at org..jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:506)
at org..jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:463)
at org..jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:435)
at org..jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:322)
at org..jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:260)
at org..jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:944)
at org..jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:868)
at java.lang.Thread.run(Thread.java:619)I've now found that moving the wsa namespace declaration from the Envelope tag to the MessageId tag itself solves the problem. Putting it in the Header tag works too.

Example (declarations in green works, red one does not):Code:
lt;?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?gt;
lt;soap:Envelope xmlns:soap=quot;2003/05/soap-envelopequot;   xmlns:app=quot;/  lt;soap:Header xmlns:wsa=quot;2005/08/addressingquot;gt;       lt;wsa:MessageId xmlns:wsa=quot;2005/08/addressingquot;gt;urn:uuid:0837b38d-194d-44fa-8a7f-b01087a11861lt;/wsa:MessageIdgt;   lt;/soap:Headergt;   lt;soap:Bodygt;       lt;appueryByDesignationgt;lt;designationgt;X_21lt;/designationgt;       lt;/appueryByDesignationgt;  lt;/soap:Bodygt;
lt;/soap:Envelopegt;
I'm relatively new at SOAP, but I've seen several examples which has the declaration in the Envelope tag.
What gives?

Sorry. My test message was malformed. Sorry everybody.

No problem and thanks for the feedback.
¥
Back Forum Reply New