JMS addressing (SOAPBody addressing) is broken. The new dispatchers can't
resolve the required operation
--------------------------------------------------------------------------------------------------------
Key: AXIS2-2864
URL: https://issues.apache.org/jira/browse/AXIS2-2864
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Components: Addressing
Affects Versions: 1.3
Environment: Windows XP Tomcat 6.0.10 WebsphereMQ
Reporter: Mark Badorrek
Priority: Blocker
Fix For: 1.3
When sending a JMS message to Axis2 (nightly build) the configured dispatchers
can't figure out what operation to use.
We are not using WS-Addressing. (Although it is enabled in the axis2.xml file)
Firstly, the InFlow dispatchers are (in order):
org.apache.axis2.dispatchers.RequestURIBasedDispatcher
org.apache.axis2.dispatchers.SOAPActionBasedDispatcher
org.apache.axis2.dispatchers.AddressingBasedDispatcher
org.apache.axis2.dispatchers.RequestURIOperationDispatcher
org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher
All standard stuff except the last (and missing) dispatcher
'HTTPLocationBasedDispatcher' has been removed.
Of all of these, I expected the last one, 'SOAPMessageBodyBasedDispatcher' to
resolve the operation name.
The JMS message body is as follows:
----------------------------
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<m:GetAddressRequestParameter xmlns:m="http://demo">
<AddressID>String</AddressID>
</m:GetAddressRequestParameter>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
----------------------------
So when 'SOAPMessageBodyBasedDispatcher' attempts to work out what to do, it
ends up with the magic string 'GetAddressRequestParameter'. It then attempts to
resolve this into an operation. (This being the first child element after the
'Body' element)
Inside 'SOAPMessageBodyBasedDispatcher' we end up in calling
'org.apache.axis2.description.AxisService', method 'getOperation' .
This method uses our magic variable 'GetAddressRequestParameter' to perform a
lookup on the Map 'operationsAliasesMap' to determine what operation to use.
Unfortunately this lookup fails as the Map 'operationsAliasesMap' only contains
the following keys:
GetAddress
GetAddressRequest
urn:GetAddress
GetAddressResponse
and importantly does *not* contain our key 'GetAddressRequestParameter'. So no
operation for us and our call fails. :-(
-------------------------------------------------------
It's quite possible that I'm miss-using the new dispatchers in some way, as I'm
not an expert with them. As such I'm not really keen to attempt a patch for
fear of breaking other (HTTP) code.
Please note that the test JMS code was working last week.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]