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>

Reply via email to