Operation dispatch based on message body is broken
--------------------------------------------------
Key: AXIS2-667
URL: http://issues.apache.org/jira/browse/AXIS2-667
Project: Apache Axis 2.0 (Axis2)
Type: Bug
Components: core
Versions: 1.0
Environment: n/a
Reporter: Dennis Sosnoski
Priority: Critical
Attachments: patch.diff
In working with doc/lit services where the operation was defined by the child
element of the SOAP:Body I found that Axis2 was trying to dispatch the wrong
operation. I tracked this down to the way
org.apache.axis2.description.AxisService sets up the operationsAliasMap, where
on line 329 it adds an entry mapping the getSoapAction() value to the
operation. If the soap actions for the operations are empty strings, as
normally occurs with doc/lit, the empty string will end up mapped to the last
operation encountered. org.apache.axis2.deployment.ServiceBuilder then maps the
empty strings again by calling the mapActionToOperation() method of the service.
org.apache.axis2.engine.SOAPActionBasedDispatcher tries to look up the
operation based on the soap action string (line 54). This results in the last
operation being invoked for every service request.
The fix is to make the AxisService code only map the soap action if the string
is non-empty. I'm attaching diffs for the fix, but not committing it myself
because of the imminent 1.0 release. I have tested the patches and passed all
the build tests. I urge strongly that this patch be reviewed and applied before
the 1.0 release.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira