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/