Error generating WSDL when the original wsdl file used to specify the service
interface does not use soap namespaces
--------------------------------------------------------------------------------------------------------------------
Key: TUSCANY-2323
URL: https://issues.apache.org/jira/browse/TUSCANY-2323
Project: Tuscany
Issue Type: Bug
Components: Java SCA Axis Binding Extension
Affects Versions: Java-SCA-1.2
Reporter: Vamsavardhana Reddy
Fix For: Java-SCA-Next
I am getting an error with generating wsdl using ?wsdl on the url for
webservice when the original wsdl file used to specify the service interface
does not use soap namespaces. The following is the wsdl file:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://helloworld"
xmlns:tns="http://helloworld"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="helloworld">
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://helloworld" xmlns="http://www.w3.org/2001/XMLSchema">
<element name="getGreetings">
<complexType>
<sequence>
<element name="name" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="getGreetingsResponse">
<complexType>
<sequence>
<element name="getGreetingsReturn" type="xsd:string"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="getGreetingsRequest">
<wsdl:part element="tns:getGreetings" name="parameters"/>
</wsdl:message>
<wsdl:message name="getGreetingsResponse">
<wsdl:part element="tns:getGreetingsResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="HelloWorld">
<wsdl:operation name="getGreetings">
<wsdl:input message="tns:getGreetingsRequest"
name="getGreetingsRequest"/>
<wsdl:output message="tns:getGreetingsResponse"
name="getGreetingsResponse"/>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
The following is the composite:
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://helloworld"
xmlns:hw="http://helloworld"
name="helloworldws">
<component name="HelloWorldServiceComponent">
<implementation.java class="helloworld.HelloWorldImpl" />
<service name="HelloWorldService">
<interface.wsdl
interface="http://helloworld#wsdl.interface(HelloWorld)" />
<binding.ws uri="http://localhost:8085/HelloWorldService"/>
</service>
</component>
</composite>
The error I am seeing is given below:
May 16, 2008 12:13:52 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet /HelloWorldService threw exception
org.apache.axis2.AxisFault: WSDLException: faultCode=OTHER_ERROR: Can't find
prefix for 'http://schemas.xmlsoap.org/wsdl/soap/'. Namespace prefixes must be
set on the Definition object using the addNamespace(...) method.
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:417)
at
org.apache.axis2.description.AxisService.printUserWSDL(AxisService.java:936)
at
org.apache.axis2.description.AxisService.printWSDL(AxisService.java:1056)
at
org.apache.tuscany.sca.binding.ws.axis2.TuscanyListingAgent.processListService(TuscanyListingAgent.java:142)
at
org.apache.tuscany.sca.binding.ws.axis2.Axis2ServiceServlet.doGet(Axis2ServiceServlet.java:257)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:354)
at org.apache.tuscany.sca.core.work.Jsr237Work.run(Jsr237Work.java:63)
at
org.apache.tuscany.sca.core.work.ThreadPoolWorkManager$DecoratingWork.run(ThreadPoolWorkManager.java:221)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR:
Can't find prefix for 'http://schemas.xmlsoap.org/wsdl/soap/'. Namespace
prefixes must be set on the Definition object using the addNamespace(...)
method.
at com.ibm.wsdl.util.xml.DOMUtils.getPrefix(Unknown Source)
at com.ibm.wsdl.util.xml.DOMUtils.getQualifiedValue(Unknown Source)
at com.ibm.wsdl.extensions.soap.SOAPBindingSerializer.marshall(Unknown
Source)
at com.ibm.wsdl.xml.WSDLWriterImpl.printExtensibilityElements(Unknown
Source)
at com.ibm.wsdl.xml.WSDLWriterImpl.printBindings(Unknown Source)
at com.ibm.wsdl.xml.WSDLWriterImpl.printDefinition(Unknown Source)
at com.ibm.wsdl.xml.WSDLWriterImpl.writeWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLWriterImpl.writeWSDL(Unknown Source)
at
org.apache.axis2.description.AxisService.printDefinitionObject(AxisService.java:920)
at
org.apache.axis2.description.AxisService.printUserWSDL(AxisService.java:934)
... 21 more
The problem goes away if I add the following to the wsdl file (Note that these
namespaces are not used in the original wsdl.)
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.