Axis 1.4 library method return result with are incompatible with .net
---------------------------------------------------------------------

                 Key: AXIS-2804
                 URL: https://issues.apache.org/jira/browse/AXIS-2804
             Project: Axis
          Issue Type: Bug
    Affects Versions: 1.4
         Environment: All the Platform
            Reporter: Nagesh Bhagwat
            Priority: Blocker


Currently IBM Tivoli Directory Integrator v6.1.1 ships the Axis 1.4 Library.
We have an web Service, One of web service method requires "String of Array" as 
an Argument.

We get the parameter using following API

ParameterDesc param = (ParameterDesc) parameters.get(i);

Param = 

name:       userNames
typeEntry:  null
mode:       IN
position:   3
isReturn:   false
typeQName:  
{http://www.opsware.com/osapi/2.2/com/opsware/ws/ejb/SecurityWebService}ArrayOf_xsd_string
javaType:   null
inHeader:   false
outHeader:  false


When we pass this parameter to Axis method for setting the Parameter 
description as follow

rpcParam.setParamDesc(param);

rpcParam Value before execution :-

rpcParam = <userNames soapenc:arrayType="xsd:string[4]" 
xsi:type="soapenc:Array" xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><userNames 
xsi:type="xsd:string">s1</userNames><userNames 
xsi:type="xsd:string">s2</userNames><userNames 
xsi:type="xsd:string">s3</userNames><userNames 
xsi:type="xsd:string">s4</userNames></userNames>


rpcParam Value After execution:-

rpcParam = <userNames soapenc:arrayType="ns1:ArrayOf_xsd_string[4]" 
xsi:type="soapenc:Array" 
xmlns:ns1="http://www.opsware.com/osapi/2.2/com/opsware/ws/ejb/SecurityWebService";
 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";><userNames 
xsi:type="xsd:string" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>s1</userNames><userNames 
xsi:type="xsd:string" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>s2</userNames><userNames 
xsi:type="xsd:string" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>s3</userNames><userNames 
xsi:type="xsd:string" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>s4</userNames></userNames>


So the Above API which is generated SOAP Envelop in this format, which not not 
compatible with Web Service that we are using it.

Resultant SOAP Request generated by TDI 6.1.1 is 

Request :-

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 <soapenv:Body>
  <ns1:assignUsers 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:ns1="http://www.opsware.com/osapi/2.2/com/opsware/ws/ejb/SecurityWebService";>
   <adminUserName xsi:type="xsd:string">tsh8069</adminUserName>
   <adminPassword xsi:type="xsd:string">opsware</adminPassword>
   <roleName xsi:type="xsd:string">ITIM Test Role</roleName>
   <userNames soapenc:arrayType="ns1:ArrayOf_xsd_string[1]" 
xsi:type="soapenc:Array" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
    <userNames xsi:type="xsd:string">traceyh</userNames>
   </userNames>
  </ns1:assignUsers>
 </soapenv:Body>
</soapenv:Envelope>

Response :-

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Client</faultcode>
         <faultstring>No such operation 'assignUsers'</faultstring>
         <detail/>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>


Where are in case of IBM Tivoli Directory Integrator 6.0, which ships Axis 1.1 
Library with it.

API - rpcParam.setParamDesc(param);

This doesn't change the SOAP Envelop format after the execution of this API

Resultant SOAP generation in case of Axis 1.1 is 

Request :-

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
 <soapenv:Body>
  <ns1:assignUsers 
xmlns:ns1="http://www.opsware.com/osapi/2.2/com/opsware/ws/ejb/SecurityWebService";>
   <adminUserName xsi:type="xsd:string">tsh8069</adminUserName>
   <adminPassword xsi:type="xsd:string">opsware</adminPassword>
   <roleName xsi:type="xsd:string">ITIM Test Role</roleName>
   <userNames xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[1]" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
    <item>traceyh1</item>
   </userNames>
  </ns1:assignUsers>
 </soapenv:Body>
</soapenv:Envelope>

Response;-
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
   <soapenv:Body 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
      <ns1:assignUsersResponse 
xmlns:ns1="http://www.opsware.com/osapi/2.2/com/opsware/ws/ejb/SecurityWebService";>
         <assignUsersResponse xsi:type="xsd:string">&lt;ITIM Test Role> was 
assigned to users [traceyh1]</assignUsersResponse>
      </ns1:assignUsersResponse>
   </soapenv:Body>
</soapenv:Envelope>


>From this its clear that, axis 1.1 does work fine but axis 1.4 has some 
>incompatibility issue with .net specially when we are passing String Array as 
>argument to web service.





-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to