Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.3
-
None
-
None
-
OS: Windows XP Pro 2002 Service Pack 2
Description
Performing MTOM optimization over the JMS transport does not work correctly.
There are three main issues involved here:
1) MessageContext.setDoingMTOM()
For the JMS transport a call to MessageContext.setDoingMTOM() will always return false. This is due to the fact that, unlike the HTTP transport, the JMS transport never checks whether enableMTOM has been set in config or programmatically. This means that a JMS message containing binary content will never be optimized.
2) JMSByteMessage always sent as soap1.1 format
The OMOutputFormat class defaults its soap version to soap1.1. The HTTP transport sets this according to the soap namespace used in the soap envolope. JMS however does not do this and the byte message is always sent as soap1.1
3) contentType of JMS message is never set
The contentType of a JMS message is never set. This passes unnoticed on the server when attachments are not involved. However when a message contains attachments the expected contentType of 'multipart/related' is never present and the message is perceived as a non soap/xml message which is incorrect.
I have attached a working solution for the above issue so can submit if agreed
Thanks,
Cathal Callaghan