We are currently using axis to implement mathematical web services. In our last example, I have installed a service for Symbolic Integration at: http://perseus.risc.uni-linz.ac.at:8080/axis/services/SymbolicIntegration?wsdl
We can use the service by a hand-written client however trying to generate the java classes automatically using wsdl2java yields the following error. java.io.IOException: Type http://www.openmath.org/OpenMath:OMOBJ is referenced but not defined. at org.apache.axis.wsdl.toJava.SymbolTable.checkForUndefined(SymbolTable.jav a:405) at org.apache.axis.wsdl.toJava.SymbolTable.add(SymbolTable.java:331) at org.apache.axis.wsdl.toJava.Emitter.emit(Emitter.java:188) at org.apache.axis.wsdl.toJava.Emitter.emit(Emitter.java:155) at org.apache.axis.wsdl.WSDL2Java$WSDLRunnable.run(WSDL2Java.java:725) at java.lang.Thread.run(Thread.java:484) I have also tried to manually rewrite the wsdl description by importing the OpenMath schema (see attachment) and I get again: java.io.IOException: Type http://www.openmath.org/OpenMath:OMSTR is referenced but not defined. at org.apache.axis.wsdl.toJava.SymbolTable.checkForUndefined(SymbolTable.java:405) at org.apache.axis.wsdl.toJava.SymbolTable.add(SymbolTable.java:331) at org.apache.axis.wsdl.toJava.Emitter.emit(Emitter.java:188) at org.apache.axis.wsdl.toJava.Emitter.emit(Emitter.java:155) at org.apache.axis.wsdl.WSDL2Java$WSDLRunnable.run(WSDL2Java.java:725) at java.lang.Thread.run(Thread.java:484) Any hint? Thank you Olga -- -- Olga Caprotti [EMAIL PROTECTED] RISC-Linz, Johannes Kepler University, A-4040 Linz
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://localhost:8080/axis/services/SymbolicIntegration" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:impl="http://localhost:8080/axis/services/SymbolicIntegration-impl" xmlns:intf="http://localhost:8080/axis/services/SymbolicIntegration" xmlns:tns1="http://www.openmath.org/OpenMath" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xsd:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.openmath.org/OpenMath"> <xsd:element name="tns1:OMS"> <xsd:complexType> <xsd:attribute name="name" type="tns1:omSymbname" use="required"/> <xsd:attribute name="cd" type="tns1:omCdname" use="required"/> </xsd:complexType> </xsd:element> <xsd:complexType name="tns1:OMSymbolType"> <xsd:attribute name="name" type="tns1:omSymbname" use="required"/> <xsd:attribute name="cd" type="tns1:omCdname" use="required"/> </xsd:complexType> <xsd:simpleType name="tns1:omSymbname"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[A-Za-z][A-Za-z0-9_]*" /> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="tns1:omCdname"> <xsd:restriction base="xsd:string"> <xsd:pattern value="[a-z][a-z0-9_]*"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="tns1:OMV" > <xsd:complexType> <xsd:attribute name="name" type="tns1:omVariable" use="required" /> </xsd:complexType> </xsd:element> <xsd:simpleType name="tns1:omVariable"> <xsd:restriction base="xsd:string"> <xsd:pattern value="([A-Za-z0-9+=(),-\./:?!#$%*;@\[\]\^_`{|}])+"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="tns1:OMI" type="tns1:omInteger" /> <!-- should derive from int not string, --> <xsd:simpleType name="omInteger" > <xsd:restriction base="xsd:string"> <xsd:pattern value="(-\s?)?[0-9]+(\s[0-9]+)* ?" /> <xsd:pattern value="(-\s?)?x\s?[0-9A-F]+(\s[0-9A-F]+)*" /> </xsd:restriction> </xsd:simpleType> <!-- should derive from double not string, and if possible require exactly one of the hex and dec attributes --> <xsd:element name="tns1:OMB" type="xsd:base64Binary" /> <xsd:simpleType name="tns1:omDecFloat" > <xsd:restriction base="xsd:string"> <xsd:pattern value="(-?)([0-9]+)?(\.[0-9]+)?(e([+-]?)[0-9]+)?" /> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="tns1:omHexFloat"> <xsd:restriction base="xsd:string"> <xsd:pattern value="(-?)([0-9A-F]+)?(.[0-9A-F]+)?(e(-?)[0-9A-F]+)?" /> </xsd:restriction> </xsd:simpleType> <xsd:element name="tns1:OMF" type="tns1:OMFloat"/> <xsd:complexType name="tns1:OMFloat"> <xsd:attribute name="dec" type="tns1:omDecFloat" use="optional" /> <xsd:attribute name="hex" type="tns1:omHexFloat" use="optional" /> </xsd:complexType> <xsd:element name="tns1:OMSTR" type="xsd:string"/> <xsd:group name="tns1:omElement" > <xsd:choice> <xsd:element ref="tns1:OMS"/> <xsd:element ref="tns1:OMV"/> <xsd:element ref="tns1:OMI"/> <xsd:element ref="tns1:OMB"/> <xsd:element ref="tns1:OMSTR"/> <xsd:element ref="tns1:OMF"/> <xsd:element ref="tns1:OMA"/> <xsd:element ref="tns1:OMBIND"/> <xsd:element ref="tns1:OME"/> <xsd:element ref="tns1:OMATTR"/> </xsd:choice> </xsd:group> <xsd:element name="tns1:OMA" type="tns1:OMApplication"/> <xsd:complexType name="tns1:OMApplication"> <xsd:group ref="tns1:omElement" maxOccurs="unbounded"/> </xsd:complexType> <xsd:element name="tns1:OMBIND"> <xsd:complexType> <xsd:sequence> <xsd:group ref="tns1:omElement" /> <xsd:element ref="tns1:OMBVAR" /> <xsd:group ref="tns1:omElement"/> </xsd:sequence> </xsd:complexType> </xsd:element> <!-- if possible arrange that the OMATTR branch must eventually end in an OMV --> <xsd:element name="tns1:OMBVAR"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element ref="tns1:OMV"/> <xsd:element ref="tns1:OMATTR"/> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="tns1:OME"> <xsd:complexType> <xsd:sequence> <xsd:element ref="tns1:OMS"/> <xsd:group ref="tns1:omElement" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="tns1:OMATTR"> <xsd:complexType> <xsd:sequence> <xsd:element ref="tns1:OMATP"/> <xsd:group ref="tns1:omElement"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="tns1:OMATP"> <xsd:complexType> <xsd:sequence maxOccurs="unbounded"> <xsd:element ref="tns1:OMS"/> <xsd:group ref="tns1:omElement"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="tns1:OMOBJ" type="tns1:OMOBJType"/> <xsd:complexType name="tns1:OMOBJType"> <xsd:group ref="tns1:omElement" maxOccurs="unbounded"/> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="DefIntResponse"> <wsdl:part name="return" type="xsd:string"/> </wsdl:message> <wsdl:message name="DefIntRequest"> <wsdl:part name="in0" type="tns1:OMOBJType"/> <wsdl:part name="in1" type="tns1:omFloat"/> <wsdl:part name="in2" type="tns1:omFloat"/> </wsdl:message> <wsdl:message name="IndefIntRequest"> <wsdl:part name="in0" type="tns1:OMOBJType"/> </wsdl:message> <wsdl:message name="IndefIntResponse"> <wsdl:part name="return" type="xsd:string"/> </wsdl:message> <wsdl:portType name="Integrator"> <wsdl:operation name="IndefInt" parameterOrder="in0"> <wsdl:input message="intf:IndefIntRequest"/> <wsdl:output message="intf:IndefIntResponse"/> </wsdl:operation> <wsdl:operation name="DefInt" parameterOrder="in0 in1 in2"> <wsdl:input message="intf:DefIntRequest"/> <wsdl:output message="intf:DefIntResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="SymbolicIntegrationSoapBinding" type="intf:Integrator"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="IndefInt"> <wsdlsoap:operation soapAction=""/> <wsdl:input> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="IndefInt" use="encoded"/> </wsdl:input> <wsdl:output> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/services/SymbolicIntegration" use="encoded"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="DefInt"> <wsdlsoap:operation soapAction=""/> <wsdl:input> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="DefInt" use="encoded"/> </wsdl:input> <wsdl:output> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/services/SymbolicIntegration" use="encoded"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="IntegratorService"> <wsdl:port binding="intf:SymbolicIntegrationSoapBinding" name="SymbolicIntegration"> <wsdlsoap:address location="http://localhost:8080/axis/services/SymbolicIntegration"/> </wsdl:port> </wsdl:service> </wsdl:definitions>