WSDL2Java incorrectly creates stub params to pass method paramters in SOAP
request header
-----------------------------------------------------------------------------------------
Key: AXIS-2549
URL: http://issues.apache.org/jira/browse/AXIS-2549
Project: Apache Axis
Issue Type: Bug
Components: WSDL processing
Affects Versions: 1.2.1
Environment: MS Windows 2000 server running ColdFusion MX7 with OEM'd
Axis 1.2.1, J2SDK 1.4.2_11
Reporter: Ezra J. Wise
WSDL2Java creates a stub class that creates a SOAP request with method
paramters in its header, as opposed to its body.
Here is the original WSDL:
********* start of WSDL *********
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="urn:testws" xmlns:s0="urn:testws"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
- <xsd:schema elementFormDefault="qualified" targetNamespace="urn:testws">
<xsd:element name="OpGet" type="s0:GetInputMap" />
- <xsd:complexType name="GetInputMap">
- <xsd:sequence>
<xsd:element name="Request_ID" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="OpGetResponse" type="s0:GetOutputMap" />
- <xsd:complexType name="GetOutputMap">
- <xsd:sequence>
<xsd:element name="Assigned_To" type="xsd:string" />
<xsd:element name="Create_Date" type="xsd:dateTime" />
<xsd:element name="Last_Modified_By" type="xsd:string" />
<xsd:element name="Modified_Date" type="xsd:dateTime" />
<xsd:element name="Request_ID" type="xsd:string" />
<xsd:element name="Short_Description" type="xsd:string" />
<xsd:element name="Status" type="s0:StatusType" />
<xsd:element name="Status_History" type="xsd:string" />
<xsd:element name="Submitter" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
- <xsd:simpleType name="StatusType">
- <xsd:restriction base="xsd:string">
<xsd:enumeration value="New" />
<xsd:enumeration value="Assigned" />
<xsd:enumeration value="Fixed" />
<xsd:enumeration value="Rejected" />
<xsd:enumeration value="Closed" />
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="OpCreate" type="s0:CreateInputMap" />
- <xsd:complexType name="CreateInputMap">
- <xsd:sequence>
<xsd:element name="Assigned_To" type="xsd:string" />
<xsd:element name="Short_Description" type="xsd:string" />
<xsd:element name="Status" type="s0:StatusType" />
<xsd:element name="Submitter" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="OpCreateResponse" type="s0:CreateOutputMap" />
- <xsd:complexType name="CreateOutputMap">
- <xsd:sequence>
<xsd:element name="Request_ID" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="OpGetList" type="s0:GetListInputMap" />
- <xsd:complexType name="GetListInputMap">
- <xsd:sequence>
<xsd:element name="Qualification" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="OpGetListResponse" type="s0:GetListOutputMap" />
- <xsd:complexType name="GetListOutputMap">
- <xsd:sequence>
- <xsd:element maxOccurs="unbounded" name="getListValues">
- <xsd:complexType>
- <xsd:sequence>
<xsd:element name="Assigned_To" type="xsd:string" />
<xsd:element name="Create_Date" type="xsd:dateTime" />
<xsd:element name="Last_Modified_By" type="xsd:string" />
<xsd:element name="Modified_Date" type="xsd:dateTime" />
<xsd:element name="Request_ID" type="xsd:string" />
<xsd:element name="Short_Description" type="xsd:string" />
<xsd:element name="Status" type="s0:StatusType" />
<xsd:element name="Status_History" type="xsd:string" />
<xsd:element name="Submitter" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="OpSet" type="s0:SetInputMap" />
- <xsd:complexType name="SetInputMap">
- <xsd:sequence>
<xsd:element name="Assigned_To" type="xsd:string" />
<xsd:element name="Short_Description" type="xsd:string" />
<xsd:element name="Status" type="s0:StatusType" />
<xsd:element name="Submitter" type="xsd:string" />
<xsd:element name="Request_ID" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="OpSetResponse" type="s0:SetOutputMap" />
- <xsd:complexType name="SetOutputMap">
<xsd:sequence />
</xsd:complexType>
<xsd:element name="AuthenticationInfo" type="s0:AuthenticationInfo" />
- <xsd:complexType name="AuthenticationInfo">
- <xsd:sequence>
<xsd:element name="userName" type="xsd:string" />
<xsd:element name="password" type="xsd:string" />
<xsd:element minOccurs="0" name="authentication" type="xsd:string" />
<xsd:element minOccurs="0" name="locale" type="xsd:string" />
<xsd:element minOccurs="0" name="timeZone" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
- <wsdl:message name="OpCreateSoapIn">
<wsdl:part element="s0:OpCreate" name="parameters" />
</wsdl:message>
- <wsdl:message name="OpGetSoapOut">
<wsdl:part element="s0:OpGetResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="ARAuthenticate">
<wsdl:part element="s0:AuthenticationInfo" name="parameters" />
</wsdl:message>
- <wsdl:message name="OpGetListSoapOut">
<wsdl:part element="s0:OpGetListResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="OpGetListSoapIn">
<wsdl:part element="s0:OpGetList" name="parameters" />
</wsdl:message>
- <wsdl:message name="OpSetSoapIn">
<wsdl:part element="s0:OpSet" name="parameters" />
</wsdl:message>
- <wsdl:message name="OpCreateSoapOut">
<wsdl:part element="s0:OpCreateResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="OpSetSoapOut">
<wsdl:part element="s0:OpSetResponse" name="parameters" />
</wsdl:message>
- <wsdl:message name="OpGetSoapIn">
<wsdl:part element="s0:OpGet" name="parameters" />
</wsdl:message>
- <wsdl:portType name="testwsPortType">
- <wsdl:operation name="OpGet">
<wsdl:input message="s0:OpGetSoapIn" />
<wsdl:output message="s0:OpGetSoapOut" />
</wsdl:operation>
- <wsdl:operation name="OpCreate">
<wsdl:input message="s0:OpCreateSoapIn" />
<wsdl:output message="s0:OpCreateSoapOut" />
</wsdl:operation>
- <wsdl:operation name="OpGetList">
<wsdl:input message="s0:OpGetListSoapIn" />
<wsdl:output message="s0:OpGetListSoapOut" />
</wsdl:operation>
- <wsdl:operation name="OpSet">
<wsdl:input message="s0:OpSetSoapIn" />
<wsdl:output message="s0:OpSetSoapOut" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="testwsSoapBinding" type="s0:testwsPortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="OpGet">
<soap:operation soapAction="urn:testws/OpGet" style="document" />
- <wsdl:input>
<soap:header message="s0:ARAuthenticate" part="parameters" use="literal" />
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="OpCreate">
<soap:operation soapAction="urn:testws/OpCreate" style="document" />
- <wsdl:input>
<soap:header message="s0:ARAuthenticate" part="parameters" use="literal" />
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="OpGetList">
<soap:operation soapAction="urn:testws/OpGetList" style="document" />
- <wsdl:input>
<soap:header message="s0:ARAuthenticate" part="parameters" use="literal" />
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="OpSet">
<soap:operation soapAction="urn:testws/OpSet" style="document" />
- <wsdl:input>
<soap:header message="s0:ARAuthenticate" part="parameters" use="literal" />
<soap:body use="literal" />
</wsdl:input>
- <wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="testwsService">
- <wsdl:port binding="s0:testwsSoapBinding" name="testwsSoap">
<soap:address
location="http://yoda/arsys/services/ARService?server=YODA&webService=testws"
/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
********** end of WSDL *************
modifying the WSDL from:
<wsdl:message name="ARAuthenticate">
<wsdl:part element="s0:AuthenticationInfo" name="parameters" />
</wsdl:message>
<wsdl:operation name="OpCreate">
<soap:operation soapAction="urn:testws/OpCreate" style="document" />
<wsdl:input>
<soap:header message="s0:ARAuthenticate" part="parameters"
use="literal" />
<soap:body use="literal" />
</wsdl:input>
to:
<wsdl:message name="ARAuthenticate">
<wsdl:part element="s0:AuthenticationInfo" name="header" />
</wsdl:message>
<wsdl:operation name="OpCreate">
<soap:operation soapAction="urn:testws/OpCreate" style="document" />
<wsdl:input>
<soap:body use="literal" part="parameters"/>
<soap:header message="s0:ARAuthenticate" part="header" use="literal" />
</wsdl:input>
...and changing 'part="header"' in each applicable corresponding method
resolved the issue. Apparrently there is an issue with the fact that both the
OpCreate and ARAuthenticate share the name "parameters" for their param lists
-- just my guess.
Unfortunately, the publishing web service's WSDL is not able to be modified as
it is generated dynamically from a CRM system. Resolving this issue will allow
consumption of Remedy AR System web services through ColdFusion MX7.
Here is the original post from the AXIS-User list:
http://www.nabble.com/-Axis-1.2--Sending-SOAP-request-parameters-in-BODY-instead-of-HEADER-tf2154309.html
--
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]