Hi everyone,
I've been working with Apache Soap for a while. I'm working with a proprietary language on my server called "Synergy DBL". This language has a primitive type of "WSDL" which defines compound data types, and methods. So I'm generating the "Synergy DBL" server side code myself with a complex XSLT transformation.
On the server side, I'm using Java. I've been using XSLT to generate my own client classes from this primitive WSDL-type definition. I've been generating Apache Soap client code, and it worked well, but the performance was a little slow.
Now I'm interested in transforming the Synergy method definitions to proper WSDL, and using WSDL2Java to generate the client code. Will Axis code be faster?
It should be just a straight XSLT transform. In goes:
<?xml version='1.0'?>
<component name="aspclasses">
<structure name="Asp_login" size="723">
<field name="P_company_code" type="alpha" size="3"/>
<field name="P_logon_id" type="alpha" size="10"/>
<field name="P_password" type="alpha" size="10"/>
<field name="R_client_no" type="alpha" size="6"/>
<field name="R_client_name" type="alpha" size="35"/>
<field name="R_client_opts" type="alpha" size="10"/>
<field name="R_error_desc" type="alpha" size="132"/>
<field name="P_user_id" type="alpha" size="3"/>
<field name="R_menu_tot" type="integer" size="4"/>
<field name="R_exposed_desc" type="alpha" size="30" dim="10"/>
<field name="R_fclasp_app$$" type="alpha" size="10" dim="10"/>
<field name="R_fclasp_ui$$" type="alpha" size="10" dim="10"/>
<field name="R_seclv" type="alpha" size="1" dim="10"/>
</structure>
<interface name="asp">
<method name="asp_login" id="asp_login" elb="ELB:ASPLIB">
<methodresult type="integer" size="4"/>
<param name="asp_login" type="structure" structureName="Asp_login" dir="inout"/>
</method>
</interface>
</component>
You can see the correlation easily...
And out comes the following just fine:
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns:fcl="urn:forward-comp.co.uk" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xse="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsltc="http://xml.apache.org/xalan/xsltc" xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:forward-comp.co.uk">
<complexType name="Asp_login">
<element name="P_company_code" type="xsd:string"/>
<element name="P_logon_id" type="xsd:string"/>
<element name="P_password" type="xsd:string"/>
<element name="R_client_no" type="xsd:string"/>
<element name="R_client_name" type="xsd:string"/>
<element name="R_client_opts" type="xsd:string"/>
<element name="R_error_desc" type="xsd:string"/>
<element name="P_user_id" type="xsd:string"/>
<element name="R_menu_tot" type="xsd:int"/>
<element maxOccurs="10" name="R_exposed_desc" type="xsd:string"/>
<element maxOccurs="10" name="R_fclasp_app_dr_dr" type="xsd:string"/>
<element maxOccurs="10" name="R_fclasp_ui_dr_dr" type="xsd:string"/>
<element maxOccurs="10" name="R_seclv" type="xsd:string"/>
</complexType>
</schema>
</types>
<message name="asp_loginRequest">
<part xmlns="http://www.w3.org/2001/XMLSchema" name="asp_login" type="fcl:Asp_login"/>
</message>
<message name="asp_loginResponse">
<part xmlns="http://www.w3.org/2001/XMLSchema" name="asp_loginReturn" type="xsd:int"/>
<part xmlns="http://www.w3.org/2001/XMLSchema" name="asp_login" type="fcl:Asp_login"/>
</message>
<portType name="asp"> <operation name="asp_login"> <input message="asp_loginRequest"/> <output message="asp_loginResponse"/> </operation> </portType>
</definitions>
(I change the invalid "$" signs (Don't ask!) to "_dr")
When I run WSDL2Java, I get the following Exception:
java.io.IOException: Type {http://lang.java}StringBuffer is referenced but not defined.
at org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(SymbolTable.java:652)
at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:532)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:506)
at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:483)
at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:356)
at java.lang.Thread.run(Thread.java:534)
Anyone know what this is all about? I'm not referencnig StringBuffer anywhere!
Thanks for any help!
Nige
_____________________________________________________________________ This message has been checked for all known viruses. Virus scanning powered by Messagelabs http://www.messagelabs.com For more information e-mail : [EMAIL PROTECTED]