Hi Devs,

Although the property *transport.msmq.ContentType *is defined in [1], it is
not getting set in the MSMQ transport receiver when reading messages.

As a result, in a scenario where we need to read messages with *application/xml
*content type, it is not configurable and the XML message will be read as*
text/xml*. Then the server expects the message to be enclosed in a SOAP
envelop, but if we have just a raw XML message, server cannot read it. It
will show the error below.

[2017-05-25 19:35:53,697] [] ERROR - NativeWorkerPool Uncaught exception

org.apache.axiom.soap.SOAPProcessingException: *First Element must contain
the local name, Envelope , but found hello*

        at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:305)

        at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:252)

        at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java:234)

        at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)

        at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)

        at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)

        at
org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder(AbstractOMMetaFactory.java:73)

        at
org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:79)

        at
org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:196)

        at
org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:65)

        at
org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:54)

        at
org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:70)

        at
org.apache.axis2.format.TextMessageBuilderAdapter.processDocument(TextMessageBuilderAdapter.java:76)

        at
org.apache.axis2.transport.msmq.util.MSMQUtil.setSOAPEnvelope(MSMQUtil.java:73)

        at
org.apache.axis2.transport.msmq.MSMQMessageReceiver.processThroughEngine(MSMQMessageReceiver.java:98)

        at
org.apache.axis2.transport.msmq.MSMQMessageReceiver.onMessage(MSMQMessageReceiver.java:64)

        at
org.apache.axis2.transport.msmq.ServiceTaskManager.handleMessage(ServiceTaskManager.java:252)

        at
org.apache.axis2.transport.msmq.ServiceTaskManager.access$700(ServiceTaskManager.java:40)

        at
org.apache.axis2.transport.msmq.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:235)

        at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)


The fix is to make use of the property [1] and if it is set in the proxy's
configuration, use it as the receiver's message content type when reading
messages.

I created the Issue [2] to track this. Also the fix is sent via the GIT PR
[3].

Please review and merge.

[1] https://github.com/wso2/wso2-axis2-transports/blob/master/
modules/msmq/src/main/java/org/apache/axis2/transport/
msmq/MSMQConstants.java#L27
[2] https://github.com/wso2/wso2-axis2-transports/issues/120

[3] https://github.com/wso2/wso2-axis2-transports/pull/121

Regards,
Tharindu
-- 

Tharindu Edirisinghe
Senior Software Engineer | WSO2 Inc
Platform Security Team
Blog : http://tharindue.blogspot.com
mobile : +94 775181586 <+94%2077%20518%201586>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to