[ 
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]

Reply via email to