[
http://issues.apache.org/jira/browse/AXIS2-1327?page=comments#action_12460232 ]
Deepal Jayasinghe commented on AXIS2-1327:
------------------------------------------
I went through AxisOperation and found some code which are not clear to me as
well as , I can not understand the requirement of getInputAction method as
well (this change has done in [1]).
public String getInputAction() {
String result = this.soapAction;
if (result == null || "".equals(result)) {
if (wsamappingList != null && !wsamappingList.isEmpty()) {
result = wsamappingList.get(0).toString();
}
}
return result;
}
So as I understand to fix the problem we need to do the following ;
If the SOAP action is not there in wsdl then we should not generate
actionMapping in services.xml for the operation which dose not have soapaction;
As in 454188 we need should not add mapping into AxisOperation if the mapping
value is empty.
So to fix the issue we need to revert [1] and to fix the codegen side not to
generate actionmapping when soapaction is not there.
[1] http://svn.apache.org/viewvc?view=rev&revision=429177
> Incorrect operation selected when no SOAPAction specified
> ---------------------------------------------------------
>
> Key: AXIS2-1327
> URL: http://issues.apache.org/jira/browse/AXIS2-1327
> Project: Apache Axis 2.0 (Axis2)
> Issue Type: Bug
> Affects Versions: nightly
> Environment: Linux, JDK 1.5.0
> Reporter: Dennis Sosnoski
> Assigned To: David Illsley
> Priority: Blocker
>
> The org.apache.axis2.description.AxisService.addOperation() method gets an
> ArrayList of wsamappings (line 376) and then adds each mapping as an alias
> for the operation by calling mapActionToOperation(). Unfortunately the
> wasmappings list includes an empty string for each operation, meaning that
> the last operation added will be aliased to the empty string.
> If an incoming request is received with no SOAPAction set, the
> SOAPActionBasedDispatcher (line 51) calls the service method
> getOperationByAction() which returns this last operation added. Because the
> operation has been set by this dispatcher the message receiver code will
> attempt to invoke the wrong action. This is the cause of AXIS2-1316
> It looks to me like the empty string is being set as an action mapping
> because the generated service.xml contains an empty <actionMapping> element
> in the case where no soapAction is defined by the WSDL used for code
> generation:
> <operation name="addBook" mep="http://www.w3.org/2004/08/wsdl/in-out">
> <actionMapping></actionMapping>
> <outputActionMapping>http://ws.sosnoski.com/library/wsdl/Library/addBookResponse</outputActionMapping>
> </operation>
> The suggested fix is to avoid adding empty strings to the mappingList in
> org.apache.axis2.deployment.DescriptionBuilder (lines 462-466). I'd prefer to
> have this change verified by someone who knows this code, though, in case
> there are side effects from removing the empty string mappings.
--
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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]