Generated client code doesn't handle SOAPAction correctly
---------------------------------------------------------
Key: AXIS2-1103
URL: http://issues.apache.org/jira/browse/AXIS2-1103
Project: Apache Axis 2.0 (Axis2)
Issue Type: Bug
Affects Versions: M2
Environment: Windows XP, Java 1.5.0_08
Reporter: Todd Doolittle
I'm using the nightly build from 08/31/2006. I am creating a client using
wsdl2java. The WSDL specified a soapAction="" for the operation "Getinfo".
However the http header "SOAPAction" is being set to "urn:Getinfo".
In the generated stub, the method Getinfo() specifically sets the action="" in
the options for both the messageContext and the operationContext which would
appear to be correct accorind to the WSDL. However when the message is
received by the server it contains the header SOAPAction: "urn:Getinfo".
I added code to the Getinfo method in the stub to print the action for options
in both the messageContext and operationConext just before the
operationContext.execute() call and right after the operationContext.execute()
call. Just before the call both the messageContext and the operationContext's
action is set to "" in their respective options. However, right after the
operationContext.execute() call the messageContext's action is set to
"urn:Getinfo" in it's options (the opertionContext's action in it's options is
still set to "").
I am working around this by calling
_messageContext.getAxisOperation().setSoapAction("") just before the
operationContext.execute() call. But I don't believe I should have to do this.
Note, in the release 1.0 version of Axis 2, it appears to work correctly (i.e.
the SOAPAction header is "" when the WSDL specifies the soapAction="").
Here is the WSDL that was used to generate the client code. I was using ADB
databinding if it matters.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
name="POC" targetNamespace="http://tempuri.org/"
xmlns:fjs="http://tempuri.org/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"
xmlns:s1="http://tempuri.org/">
<xsd:element name="lookup">
<xsd:complexType>
<xsd:sequence>
<xsd:element
maxOccurs="unbounded" minOccurs="0"
name="upc"
nillable="true" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="count"
type="xsd:int"
use="required" />
</xsd:complexType>
</xsd:element>
<xsd:element name="GetinfoResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="item"
nillable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded"
minOccurs="0" name="item" nillable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ksn"
nillable="true" type="xsd:int" />
<xsd:element name="upc"
nillable="true" type="xsd:string" />
<xsd:element
name="maintdt" nillable="true" type="xsd:date" />
<xsd:element name="dpt"
nillable="true" type="xsd:int" />
</xsd:sequence>
<xsd:attribute name="count"
type="xsd:int" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="GetinfoIn">
<wsdl:part element="fjs:lookup" name="parameters" />
</wsdl:message>
<wsdl:message name="GetinfoOut">
<wsdl:part element="fjs:GetinfoResponse" name="parameters" />
</wsdl:message>
<wsdl:portType name="POCPortType">
<wsdl:operation name="Getinfo">
<wsdl:input message="fjs:GetinfoIn" name="lookup" />
<wsdl:output message="fjs:GetinfoOut"
name="GetinfoResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="POCBinding" type="fjs:POCPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
/>
<wsdl:operation name="Getinfo">
<soap:operation soapAction="" style="document" />
<wsdl:input name="lookup">
<soap:body use="literal" />
</wsdl:input>
<wsdl:output name="GetinfoResponse">
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="POC">
<wsdl:port binding="fjs:POCBinding" name="POCPortType">
<soap:address location="http://localhost:8090/POC/POC"
/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
--
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]