Hello Ann, thanks for the WSDL editor recommendations. I have only one more question about the WSDL you graciously repaired after my bungled attempt to translate the document. Your WSDL generated perfect (dot).java and now I have the service deployed via Axis2 webapp running under Tomcat. The question is: could a .NET client using the <OLD> WSDL use the migrated WSDLs service? I don't have Visual Studio and I am not sure if I am a .NET programmer otherwise I would try to create a client to test the hypothesis. Please advise, David.
Anne Thomas Manes wrote .. > Commerical products: > xmlspy: http://www.altova.com/products/xmlspy/graphical_wsdl_editor.html > <oxygen/>: http://www.oxygenxml.com/wsdl_editor.html > Stylus Studio: http://www.stylusstudio.com/webservices/wsdl_editor.html > > I can also send you Cape Clear's free SOA Editor tool (no longer > available from Cape Clear, but I have permission to distribute it.) > > Anne > > On 7/21/07, david <[EMAIL PROTECTED]> wrote: > > Hello Anne, currently I am using the Eclipse plugin XML/WSDL editor. > There are so many XML and WSDL editors out there it is bewildering. Please > reply with an editor albeit commercial, free or criminal and I will get > to work on the problems cited by you and Chris. Please advise, David. > > > > Anne Thomas Manes wrote .. > > > Actually, you made a lot more mistakes than the ones Chris cited. You > > > had numerous namespace issues; you didn't name the getversion and > > > getversionResponse types; you didn't follow the convention of giving > > > your input elements the same name as your operation; you didn't change > > > your message parts properly; you didn't remove the namespace > > > attributes from the <soap:body> definitions; etc. You might want to > > > get yourself a WSDL editor with a validation option to help you in > the > > > future. > > > > > > Here's a revised WSDL that validates: > > > > > > <wsdl:definitions xmlns:tns="http://service.myremote.my" > > > xmlns:type="http://service.myremote.my/type" > > > xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" > > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > > xmlns:xs="http://www.w3.org/2001/XMLSchema" > > > xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" > > > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > > > xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" > > > targetNamespace="http://service.myremote.my"> > > > <wsdl:types> > > > <xs:schema targetNamespace='http://service.myremote.my/type' > > > elementFormDefault='qualified'> > > > > > > <xs:element name='Transact' type='type:Transact'/> > > > <xs:complexType name='Transact'> > > > <xs:sequence> > > > <xs:element name='userid' type='xs:string'/> > > > <xs:element name='password' type='xs:string'/> > > > <xs:element name='paramstr' type='xs:string'/> > > > </xs:sequence> > > > </xs:complexType> > > > <xs:element name='TransactResponse' type='type:TransactResponse' /> > > > <xs:complexType name='TransactResponse'> > > > <xs:sequence> > > > <xs:element name='Result' type='xs:string'/> > > > <xs:element name='paramstr' type='xs:string'/> > > > </xs:sequence> > > > </xs:complexType> > > > <xs:element name='getversion' type='type:getversion'/> > > > <xs:complexType name='getversion'> > > > <xs:sequence> > > > </xs:sequence> > > > </xs:complexType> > > > <xs:element name='getversionResponse' type='type:getversionResponse'/> > > > <xs:complexType name='getversionResponse'> > > > <xs:sequence> > > > <xs:element name='Result' type='xs:string'/> > > > </xs:sequence> > > > </xs:complexType> > > > </xs:schema> > > > </wsdl:types> > > > <wsdl:message name='TransactRequest'> > > > <wsdl:part name='parameters' element='type:Transact'/> > > > </wsdl:message> > > > <wsdl:message name='TransactResponse'> > > > <wsdl:part name='parameters' element='type:TransactResponse'/> > > > </wsdl:message> > > > <wsdl:message name='getversionRequest'> > > > <wsdl:part name='parameters' element='type:getversion'/> > > > </wsdl:message> > > > <wsdl:message name='getversionResponse'> > > > <wsdl:part name='parameters' element='type:getversionResponse'/> > > > </wsdl:message> > > > <wsdl:portType name='MyRemoteSoapPort'> > > > <wsdl:operation name='Transact'> > > > <wsdl:input message='tns:TransactRequest' /> > > > <wsdl:output message='tns:TransactResponse' /> > > > </wsdl:operation> > > > <wsdl:operation name='getversion'> > > > <wsdl:input message='tns:getversionRequest' /> > > > <wsdl:output message='tns:getversionResponse' /> > > > </wsdl:operation> > > > </wsdl:portType> > > > <wsdl:binding name='MyRemoteSoapBinding' type='tns:MyRemoteSoapPort' > > > > > <soap:binding style='document' > > > transport='http://schemas.xmlsoap.org/soap/http' /> > > > <wsdl:operation name='Transact' > > > > <soap:operation > > > soapAction='http://service.myremote.my/action/MyRemote.Transact' /> > > > <wsdl:input> > > > <soap:body use='literal' /> > > > </wsdl:input> > > > <wsdl:output> > > > <soap:body use='literal' /> > > > </wsdl:output> > > > </wsdl:operation> > > > <wsdl:operation name='getversion' > > > > <soap:operation > > > soapAction='http://service.myremote.my/action/MyRemote.getversion' > /> > > > <wsdl:input> > > > <soap:body use='literal'/> > > > </wsdl:input> > > > <wsdl:output> > > > <soap:body use='literal'/> > > > </wsdl:output> > > > </wsdl:operation> > > > </wsdl:binding> > > > <wsdl:service name='MyRemote' > > > > <wsdl:port name='MyRemoteSoapPort' binding='tns:MyRemoteSoapBinding' > > > > > > > <soap:address > > > location='http://localhost:8080/axis/services/MyRemote.wsdl' /> > > > </wsdl:port> > > > </wsdl:service> > > > </wsdl:definitions> > > > > > > On 7/20/07, Ebert, Chris <[EMAIL PROTECTED]> wrote: > > > > Two things: > > > > 1) You've mixed single and double quotes around the name of your > first > > > > type. > > > > 2) The type definitions should go inside the <schema> </schema> tags. > > > > > > > > Chris > > > > > > > > -----Original Message----- > > > > From: david [mailto:[EMAIL PROTECTED] > > > > Sent: Friday, July 20, 2007 15:54 > > > > To: axis-user@ws.apache.org > > > > Subject: Re: rpc-encoded vs rpc-literal vs document-literal migrate > > > > Axis1.4 wsdl (rpc-encoded) to Axis2 doc-lit > > > > > > > > Hello Ann, thanks for the speedy reply. I see you working another > user > > > > who is also trying to migrate an Axis1.4 WS to Axis2. I have an Axis1.4 > > > > WS that is running OK as hinted at in my previous communication to > the > > > > ML. I hand-converted the .wsdl with great tedium as you predicted. > > > > Notwithstanding the WSDL2JAVA tool (Eclipse/Axis plugin) bails before > > > > processing the .wsdl with the following error condition: > > > > > > > > Specified WSDL is invalid! > > > > > > > > I have included both WSDLs: the original source WSDL running under > > > > Asix1.4. And, the hand-edited WSDL that errors-out under the WSDL2JAVA > > > > tool. Thanks in advance and please advise, David. > > > > > > > > > > > > ************************************ SOURCE WSDL > > > > *********************************************** > > > > > > > > <?xml version="1.0" encoding="UTF-8"?> > > > > <wsdl:definitions targetNamespace="http://tempuri.org/MYRemote/wsdl/" > > > > xmlns:apachesoap="http://xml.apache.org/xml-soap" > > > > xmlns:impl="http://tempuri.org/MyRemote/wsdl/" > > > > xmlns:intf="http://tempuri.org/MyRemote/wsdl/" > > > > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" > > > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > > > xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" > > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > > > <!--WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006 > > > > (06:55:48 PDT)--> > > > > > > > > <wsdl:message name="getversionRequest"> > > > > > > > > </wsdl:message> > > > > > > > > <wsdl:message name="getversionResponse"> > > > > > > > > <wsdl:part name="Result" type="xsd:string"/> > > > > > > > > </wsdl:message> > > > > > > > > <wsdl:message name="TransactRequest"> > > > > > > > > <wsdl:part name="userid" type="xsd:string"/> > > > > > > > > <wsdl:part name="password" type="xsd:string"/> > > > > > > > > <wsdl:part name="paramstr" type="xsd:string"/> > > > > > > > > </wsdl:message> > > > > > > > > <wsdl:message name="TransactResponse"> > > > > > > > > <wsdl:part name="Result" type="xsd:string"/> > > > > > > > > </wsdl:message> > > > > > > > > <wsdl:portType name="MyRemoteSoapPort"> > > > > > > > > <wsdl:operation name="Transact" parameterOrder="userid password > > > > paramstr"> > > > > > > > > <wsdl:input message="impl:TransactRequest" > > > > name="TransactRequest"/> > > > > > > > > <wsdl:output message="impl:TransactResponse" > > > > name="TransactResponse"/> > > > > > > > > </wsdl:operation> > > > > > > > > <wsdl:operation name="getversion"> > > > > > > > > <wsdl:input message="impl:getversionRequest" > > > > name="getversionRequest"/> > > > > > > > > <wsdl:output message="impl:getversionResponse" > > > > name="getversionResponse"/> > > > > > > > > </wsdl:operation> > > > > > > > > </wsdl:portType> > > > > > > > > <wsdl:binding name="MyRemoteSoapPortSoapBinding" > > > > type="impl:MyRemoteSoapPort"> > > > > > > > > <wsdlsoap:binding style="rpc" > > > > transport="http://schemas.xmlsoap.org/soap/http"/> > > > > > > > > <wsdl:operation name="Transact"> > > > > > > > > <wsdlsoap:operation > > > > soapAction="http://tempuri.org/MyRemote/action/MyRemote.Transact"/> > > > > > > > > <wsdl:input name="TransactRequest"> > > > > > > > > <wsdlsoap:body > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > > > namespace="http://tempuri.org/MyRemote/message/" use="encoded"/> > > > > > > > > </wsdl:input> > > > > > > > > <wsdl:output name="TransactResponse"> > > > > > > > > <wsdlsoap:body > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > > > namespace="http://tempuri.org/MyRemote/wsdl/" use="encoded"/> > > > > > > > > </wsdl:output> > > > > > > > > </wsdl:operation> > > > > > > > > <wsdl:operation name="getversion"> > > > > > > > > <wsdlsoap:operation > > > > soapAction="http://tempuri.org/MyRemote/action/MyRemote.getversion"/> > > > > > > > > <wsdl:input name="getversionRequest"> > > > > > > > > <wsdlsoap:body > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > > > namespace="http://tempuri.org/MyRemote/message/" use="encoded"/> > > > > > > > > </wsdl:input> > > > > > > > > <wsdl:output name="getversionResponse"> > > > > > > > > <wsdlsoap:body > > > > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > > > > namespace="http://tempuri.org/MyRemote/wsdl/" use="encoded"/> > > > > > > > > </wsdl:output> > > > > > > > > </wsdl:operation> > > > > > > > > </wsdl:binding> > > > > > > > > <wsdl:service name="MyRemote"> > > > > > > > > <wsdl:port binding="impl:MyRemoteSoapPortSoapBinding" > > > > name="MyRemoteSoapPort"> > > > > > > > > <wsdlsoap:address > > > > location="http://tech-pc06:8080/axis/services/MyRemoteSoapPort"/> > > > > > > > > </wsdl:port> > > > > > > > > </wsdl:service> > > > > > > > > </wsdl:definitions> > > > > > > > > > > > > ****************************************** hand-edited > > > > ********************************************** > > > > <wsdl:definitions xmlns:axis2="http://service.myremote.my" > > > > xmlns:ns0="http://userid.myremote.my/xsd" > > > > xmlns:ns1="http://password.myremote.my/xsd" > > > > xmlns:ns2="http://paramstr.myremote.my/xsd" > > > > xmlns:ns3="http://Result.myremote.my/xsd" > > > > xmlns:ns4="http://paramstr.myremote.my/xsd" > > > > xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" > > > > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > > > > xmlns:xs="http://www.w3.org/2001/XMLSchema" > > > > xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" > > > > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > > > > xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" > > > > targetNamespace="http://service.myremote.my/type"> > > > > <wsdl:types> > > > > <xs:schema targetNamespace='http://service.myremote.my/type' > > > > xmlns='http://www.w3.org/2001/XMLSchema' > > > > xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' > > > > elementFormDefault='qualified'> > > > > </xs:schema> > > > > </wsdl:types> > > > > <xs:element name='MyRemote.Transact' type='ns:MyRemote.Transact'/> > > > > <xs:complexType name="MyRemote.Transact'> > > > > <xs:sequence> > > > > <xs:element name='userid' type='xs:string'/> > > > > <xs:element name='password' type='xs:string'/> > > > > <xs:element name='paramstr' type='xs:string'/> > > > > </xs:sequence> > > > > </xs:complexType> > > > > <xs:element name='MyRemote.TransactResponse' > > > > type='ns1:MyRemote.TransactResponse' /> > > > > <xs:complexType name='MyRemote.TransactResponse'> > > > > <xs:sequence> > > > > <xs:element name='Result' type='xs:string'/> > > > > <xs:element name='paramstr' type='xs:string'/> > > > > </xs:sequence> > > > > </xs:complexType> > > > > <xs:element name='MyRemote.getversion' > > > > type='ns2:MyRemote.getversion'/> > > > > <xs:complexType> > > > > <xs:sequence> > > > > </xs:sequence> > > > > </xs:complexType> > > > > <xs:element name='MyRemote.getversionResponse' > > > > type='ns3:MyRemote.getversionResponse'/> > > > > <xs:complexType> > > > > <xs:sequence> > > > > <xsd:element name='Result' type='xs:string'/> > > > > </xs:sequence> > > > > </xs:complexType> > > > > <wsdl:message name='MyRemote.Transact'> > > > > <wsdl:part name='userid' element='ns0:MyRemote.Transact'/> > > > > <wsdl:part name='password' element='ns1:MyRemote.Transact'/> > > > > <wsdl:part name='paramstr' element='ns2:MyRemote.Transact'/> > > > > </wsdl:message> > > > > <wsdl:message name='MyRemote.TransactResponse'> > > > > <wsdl:part name='Result' type='ns3:MyRemote.TransactResponse'/> > > > > <wsdl:part name='paramstr' type='ns4:MyRemote.TransactResponse'/> > > > > </wsdl:message> > > > > <wsdl:message name='MyRemote.getversion'> > > > > </wsdl:message> > > > > <wsdl:message name='MyRemote.getversionResponse'> > > > > <wsdl:part name='Result' type='ns3:MyRemote.getversionResponse'/> > > > > </wsdl:message> > > > > <wsdl:portType name='MyRemoteSoapPort'> > > > > <wsdl:operation name='Transact' parameterOrder='userid password > > > > paramstr'> > > > > <wsdl:input message='MyRemote.Transact' /> > > > > <wsdl:output message='wsdlns:MyRemote.TransactResponse' /> > > > > </wsdl:operation> > > > > <wsdl:operation name='getversion' parameterOrder=''> > > > > <wsdl:input message='wsdlns:MyRemote.getversion' /> > > > > <wsdl:output message='wsdlns:MyRemote.getversionResponse' /> > > > > </wsdl:operation> > > > > </wsdl:portType> > > > > <wsdl:binding name='MyRemoteSoapBinding' > > > > type='wsdlns:MyRemoteSoapPort' > > > > > <stk:binding/> > > > > <soap:binding style='document' > > > > transport='http://schemas.xmlsoap.org/soap/http' /> > > > > <wsdl:operation name='Transact' > > > > > <soap:operation > > > > soapAction='http://service.myremote.my/action/MyRemote.Transact' > /> > > > > <wsdl:input> > > > > <soap:body use='literal' > > > > namespace='http://service.myremote.my/message/' /> > > > > </wsdl:input> > > > > <wsdl:output> > > > > <soap:body use='literal' > > > > namespace='http://service.myremote.my/message/'/> > > > > </wsdl:output> > > > > </wsdl:operation> > > > > <wsdl:operation name='getversion' > > > > > <soap:operation > > > > soapAction='http://service.myremote.my/action/MyRemote.getversion' > /> > > > > <wsdl:input> > > > > <soap:body use='literal'/> > > > > </wsdl:input> > > > > <wsdl:output> > > > > <soap:body use='literal'/> > > > > </wsdl:output> > > > > </wsdl:operation> > > > > </wsdl:binding> > > > > <wsdl:service name='MyRemote' > > > > > <wsdl:port name='MyRemoteSoapPort' > > > > binding='wsdlns:MyRemoteSoapBinding' > > > > > <soap:address > > > > location='http://localhost:8080/axis/services/MyRemote.wsdl' /> > > > > </wsdl:port> > > > > </wsdl:service> > > > > </wsdl:definitions> > > > > > > > > > > > > > > > > Anne Thomas Manes wrote .. > > > > > David, > > > > > > > > > > I just Googled looking for an automated converter utility, but > no > > > > > luck. I think you'll have to do the conversions by hand. As a general > > > > > rule, I strongly recommend that you convert your WSDL to wrapped > > > > > document/literal. > > > > > > > > > > Here are the basic rules: > > > > > > > > > > 1 - Convert your input and output parameters to explicitly defined > > > > > schema elements. The name of an input element should be the same > as > > > > > the operation name. The name of an output element should be a > > > > > concatenation of the operation name and "Response". For example, > for > > > > > an operation called myOperation, with the following message > > > > > descriptions: > > > > > > > > > > <w:message name="myOperationRequest"> > > > > > <w:part name="param1" type="x:string"/> > > > > > <w:part name="param2" type="x:int"/> > > > > > </w:message> > > > > > > > > > > <w:message name="myOperationResponse" > > > > > <w:part name="return" type="x:string"/> > > > > > </w:message> > > > > > > > > > > Write the following schema definition: > > > > > > > > > > <x:element name="myOperation" type="tns:myOperation"/> > > > > > <x:complexType name="myOperation"> > > > > > <x:sequence> > > > > > <x:element name="param1" type="x:string"/> > > > > > <x:element name="param2" type="x:int"/> > > > > > </x:sequence> > > > > > <x:complexType> > > > > > > > > > > <x:element name="myOperationResponse" > > > > type="tns:myOperationResponse"/> > > > > > <x:complexType name="myOperationResponse"> > > > > > <x:sequence> > > > > > <x:element name="return" type="x:string"/> > > > > > </x:sequence> > > > > > <x:complexType> > > > > > > > > > > And change the message definitions to: > > > > > > > > > > <w:message name="myOperationRequest"> > > > > > <w:part name="parameters" element="tns:myOperation"/> > > > > > </w:message> > > > > > > > > > > <w:message name="myOperationResponse" > > > > > <w:part name="parameters" > > > > element="tns:myOperationResponse"/> > > > > > </w:message> > > > > > > > > > > 2. Make the following changes to the <w:binding> definitions: > > > > > > > > > > Wherever it says style="rpc", change it to style="document". (This > > > > > could be in the <soap:binding> or the <soap:operation> definitions. > > > > > > > > > > Wherever it says use="encoded", change it to use="literal". (This > will > > > > > > > > > be in all <soap:body>, <soap:header>, <soap:fault>, and > > > > > <soap:headerfault> definitions.). Likewise, in all these definitions, > > > > > remove all encodingStyle and namespace attributes. > > > > > > > > > > e.g., the <soap:body> definition should look like this: > > > > > > > > > > <soap:body use="literal"/> > > > > > > > > > > That's it. Tedious, but relatively straightforward. > > > > > > > > > > Anne > > > > > > > > > > > > > > > On 7/19/07, david <[EMAIL PROTECTED]> wrote: > > > > > > Hello Ann and all the Axis2/wsdl gurus and users, I have a .NET > > > > > > client > > > > > generated WSDL (rpc-encoded). I want to convert this WSDL to either: > > > > > rpc-literal or document-literal such that I can run Axis2 wsdl2java > > > > > and generate an > > > > > Axis2 service. Currently, this service is running as Axis1.4 and > I > > > > > would appreciate very much any and all ideas and suggestions as > to > > > how > > > > > > > > > to migrate to Axis2. I know the Axis2 wsdl2java does not support > > > > > rpc-encoded. I read Ann Manes blog about converting wsdls but I > am > > > not > > > > > > > > > sure if this can be extended to rpc-encoded. I am secretly hoping > Ann > > > > > Manes will reply but any and all rants and raves welcomed. I can > reply > > > > > > > > > with the target wsdl in question. Please advise, David. > > > > > > > > > > > > -------------------------------------------------------------------- > > > > > > - To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]