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"><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.