Thomas,

Can you please open a bug report with sample code to recreate the
problem. i'd like to fix this ASAP.

thanks,
dims


On Fri, 21 Jan 2005 19:42:44 -0000, thomas willomitzer <[EMAIL PROTECTED]> 
wrote:
> Hello there!
> 
> While analyzing the code that generates the stub class
> (org.apache.axis.wsdl.toJava.JavaStubWriter) i found out that the
> typeMappings get lost when WSDL is defined using LITERALS in the binding.
> Used encoding instead of literals and RPC instead of DOCUMENT in STYLE. No
> client side code for definition of serializers/deserializers was needed
> anymore.
> 
> I spent a 10 hours playing round and digging in news groups till i found the
> posting below. Take this
> shortcut instead!
> 
> Here an example of a WSDL file without literals
> 
>     <wsdl:binding name="companyTestBinding" type="tns:companyTestPortType">
>         <soap:binding style="rpc"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>         <wsdl:operation name="getSymbol">
>             <soap:operation style="rpc"/>
>             <wsdl:input>
>                 <soap:body
> 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>                     namespace="http://www.company.name/companyTest/binding";
>                     parts=""
>                     use="encoded"/>
>             </wsdl:input>
>             <wsdl:output>
>                 <soap:body
> 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>                     namespace="http://www.company.name/companyTest/binding";
>                     parts=""
>                     use="encoded"/>
>             </wsdl:output>
>         </wsdl:operation>
>         <wsdl:operation name="getProfile">
>             <soap:operation
> 
> soapAction="capeconnect:companyTest:companyTestPortType#getProfile"
>                 style="rpc"/>
>             <wsdl:input>
>                 <soap:body
> 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>                     namespace="http://www.company.name/companyTest/binding";
>                     use="encoded"/>
>             </wsdl:input>
>             <wsdl:output>
>                 <soap:body
> 
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
>                     namespace="http://www.company.name/companyTest/binding";
>                     parts=""
>                     use="encoded"/>
>             </wsdl:output>
>         </wsdl:operation>
>     </wsdl:binding>
> 
> ----------------------------------------------------------------------------
> -----------------------
> 
> Hi Everyone:
> 
> I actually discovered the cause of my problem, and searching through this
> list's archives, I believe the same solution would apply to many others who
> have experienced similar issues. In the end, the solution was so simple that
> I'm almost embarrassed to post it here.
> 
> The problem had nothing to do with Castor (de)serialization or the
> AxisClient class. The problem lie in the fact that I was using a
> ClientHandler to support WSSE [http://axis-wsse.sourceforge.net/].
> Nevertheless, the ClientHandler itself was not the problem (in fact, I
> highly recommend it for simple Username/Password WSSE support). It was the
> fact that the "setClientHandlers" method was called that was the problem.
> This member of the org.apache.axis.client.Call class ends up calling its
> sibling member "setSOAPService" with a new SOAPService object. The
> SOAPService object is set as a private member of the Call object [with a
> variable name of "myService"].
> 
> This is all fine until the Call.invoke() method is executed by the SoapStub.
> It is within the logic of this method that "myService" is set to the
> MessageContext object. NOW THE PROBLEM BEGINS, for it is within the
> "setService" member of the MessageContext object that the MessageContext's
> encoding type is set to SOAP encoding. Since the service was using SOAP
> v1.1, the actual value of the encoding became:
> "http://schemas.xmlsoap.org/soap/encoding/";. However, if we refer back to
> the SoapStub object that was generated by WSDL2Java, we see that the
> encoding under which the TypeMappingRegistry was created was "null". The
> TypeMappingRegistry that had been created is no longer visible to objects
> that are now attempting to retrieve TypeMappings for the SOAP1_1 encoding.
> 
> Perhaps it should have been obvious to me that I would have to edit the
> encoding within the SoapStub object simply because I added a ClientHandler,
> but it was not. Regardless, the solution was to change the following line in
> the "createCall" member of the SoapStub from:
> 
> _call.setEncodingStyle(null);
> 
> to:
> 
> _call.setEncodingStyle(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS.g
> etEncodingURI());
> 
> 


-- 
Davanum Srinivas - http://webservices.apache.org/~dims/

Reply via email to