You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by Luca Manganelli <ma...@itc.it> on 2004/10/26 10:50:23 UTC
Problem with a WSDL
Hi, I have this WSDL (that I cannot modify):
<?xml version="1.0" encoding="UTF-8"?>
<definitions name="HelloWorld" targetNamespace="http://acm.org/samples"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns:tns="http://acm.org/samples"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<types>
<schema targetNamespace="http://acm.org/samples"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="documento">
<simpleType>
<restriction base="xs:string"/>
</simpleType>
</element>
</schema>
</types>
<message name="HelloWorldResponseMessage">
<part name="payload" type="xs:string"/>
</message>
<message name="HelloWorldRequestMessage1">
<part element="tns:documento" name="payload"/>
</message>
<portType name="HelloWorld">
<operation name="process">
<input message="tns:HelloWorldRequestMessage1"/>
<output message="tns:HelloWorldResponseMessage"/>
</operation>
</portType>
<binding name="clientServiceBinding" type="tns:HelloWorld">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<operation name="process">
<soap:operation soapAction="" style="rpc"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<input>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</input>
<output>
<soap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</output>
</operation>
</binding>
<service name="clientService">
<port binding="tns:clientServiceBinding" name="clientServicePort">
<soap:address
location="http://sagitta:50000/active-bpel/services/clientService"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</port>
</service>
</definitions>
note that "documento" in <types>.
Then I do a WSDL2Java with --server-side parameter to generate a server
side webservice (in localhost).
But when I Deploy it to my axis server, seeing the WSDL of that service,
the notably error occurs:
makeTypeElement() was told to create a type
"{http://acm.org/samples}>documento", with no containing element
at org.apache.axis.wsdl.fromJava.Types.makeTypeElement(Types.java:1723)
at org.apache.axis.wsdl.fromJava.Types.writeTypeForPart(Types.java:395)
at
org.apache.axis.wsdl.fromJava.Types.writeTypeAndSubTypeForPart(Types.java:416)
at
org.apache.axis.wsdl.fromJava.Emitter.writePartToMessage(Emitter.java:1864)
at
org.apache.axis.wsdl.fromJava.Emitter.writeRequestMessage(Emitter.java:1460)
at
org.apache.axis.wsdl.fromJava.Emitter.writeMessages(Emitter.java:1087)
at
org.apache.axis.wsdl.fromJava.Emitter.writePortType(Emitter.java:1056)
at org.apache.axis.wsdl.fromJava.Emitter.getWSDL(Emitter.java:471)
at org.apache.axis.wsdl.fromJava.Emitter.emit(Emitter.java:322)
at
org.apache.axis.providers.BasicProvider.generateWSDL(BasicProvider.java:237)
at
org.apache.axis.strategies.WSDLGenStrategy.visit(WSDLGenStrategy.java:33)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.generateWSDL(SimpleChain.java:104)
at
org.apache.axis.handlers.soap.SOAPService.generateWSDL(SOAPService.java:316)
at org.apache.axis.server.AxisServer.generateWSDL(AxisServer.java:467)
at
org.apache.axis.transport.http.SimpleAxisWorker.execute(SimpleAxisWorker.java:328)
at
org.apache.axis.transport.http.SimpleAxisWorker.run(SimpleAxisWorker.java:155)
at
org.apache.axis.transport.http.SimpleAxisServer.run(SimpleAxisServer.java:241)
at
org.apache.axis.transport.http.SimpleAxisServer.start(SimpleAxisServer.java:284)
at
org.apache.axis.transport.http.SimpleAxisServer.start(SimpleAxisServer.java:292)
at
org.apache.axis.transport.http.SimpleAxisServer.main(SimpleAxisServer.java:373)
Then I tried to "manually" modify all ">documento" occurences to
"documento", recompiled java files and redeployed it. Now it seems that
I can see the WSDL without errors:
<wsdl:definitions targetNamespace="http://acm.org/samples"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:intf="http://acm.org/samples" xmlns:impl="http://acm.org/samples"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:apachesoap="http://xml.apache.org/xml-soap">
<!--WSDL created by Apache Axis version: 1.2RC1
Built on Sep 29, 2004 (08:29:40 EDT)-->
<wsdl:message name="processResponse">
<wsdl:part name="payload" type="xsd:string"/>
</wsdl:message>
<wsdl:message name="processRequest">
<wsdl:part name="documento" type="intf:documento"/>
</wsdl:message>
<wsdl:portType name="HelloWorld">
<wsdl:operation name="process" parameterOrder="documento">
<wsdl:input name="processRequest" message="intf:processRequest"/>
<wsdl:output name="processResponse" message="intf:processResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="clientServicePortSoapBinding" type="intf:HelloWorld">
<wsdlsoap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="process">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="processRequest">
<wsdlsoap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://acm.org/samples"/>
</wsdl:input>
<wsdl:output name="processResponse">
<wsdlsoap:body use="encoded"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://acm.org/samples"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="clientService">
<wsdl:port name="clientServicePort"
binding="intf:clientServicePortSoapBinding">
<wsdlsoap:address
location="http://andromeda:8080/axis/services/clientService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
But, wait: the <types> section is off!
Then I try to use WSDL2Java to create a client, and this error appears:
java.io.IOException: Type {http://acm.org/samples}documento 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(Unknown Source)
Any idea?
Thank you in advance,
Luca