[
https://issues.apache.org/jira/browse/CXF-1822?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Kulp resolved CXF-1822.
------------------------------
Resolution: Fixed
Fix Version/s: 2.2.3
2.1.6
Assignee: Daniel Kulp
> WSDL Schema Imports
> -------------------
>
> Key: CXF-1822
> URL: https://issues.apache.org/jira/browse/CXF-1822
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.1.2
> Reporter: Murtaza Goga
> Assignee: Daniel Kulp
> Priority: Minor
> Fix For: 2.1.6, 2.2.3
>
>
> The endpoint and the CXFServlet cannot be configured in such a way that a
> client consuming a dynamically generated WSDL receives all the imported
> and included schemas.
> The generated WSDL only generates the schema import with the namespace
> without the schemaLocation. The WSDL writer and WSDL query handler do not
> render the schemaLocation value relatvie to the Servlet so that the client
> consuming the WSDL can look it up.
> Example configruation below:
> End Configuration:
> <jaxws:endpoint
> id="helloWorld"
> implementor="com.sandbox.service.HelloWorldImpl"
> address="/HelloWorld">
> <jaxws:schemaLocations>
>
> <jaxws:schemaLocation>file:///D:/apps/CXFProto/schemas/domain.xsd</jaxws:schemaLocation>
> </jaxws:schemaLocations>
> </jaxws:endpoint>
> WSDL Generated:
> <wsdl:definitions name="HelloWorldImplService"
> targetNamespace="http://service.sandbox.com/"
> xmlns:ns1="http://cxf.apache.org/bindings/xformat"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:tns="http://service.sandbox.com/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> <wsdl:types>
> <xsd:schema
> attributeFormDefault="unqualified"
> elementFormDefault="qualified"
> targetNamespace="http://service.sandbox.com/"
> xmlns:cs="http://www.sandbox.com/components"
> xmlns:sb="http://service.sandbox.com/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema">
>
> <xsd:import namespace="http://www.sandbox.com/components"/>
> <xsd:include schemaLocation="fields.xsd"/>
> <xsd:complexType name="domainType">
> <xsd:complexContent>
> <xsd:extension base="cs:componentType">
> <xsd:sequence>
> <xsd:element minOccurs="0" name="foo" type="xsd:string"/>
> </xsd:sequence>
> </xsd:extension>
> </xsd:complexContent>
> </xsd:complexType>
>
> <xsd:element name="sayHi" type="sb:sayHi"/>
>
> <xsd:complexType name="sayHi">
> <xsd:sequence>
> <xsd:element minOccurs="0" name="arg0" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
>
> <xsd:element name="sayHiResponse" type="sb:sayHiResponse"/>
>
> <xsd:complexType name="sayHiResponse">
> <xsd:sequence>
> <xsd:element minOccurs="0" name="return" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
>
> </xsd:schema>
> </wsdl:types>
> ...
> </wsdl:definitions>
> The WSDL generator consumes the domain.xsd specified at the endpoint
> configuration in Spring and renders it in the WSDL. However the
> schemaLocation attribute does not contain the path to the components.xsd
> imported.
> The import should look something like this:
> <xsd:import namespace="http://www.sandbox.com/components"
> schemaLocation="http://localhost:8080/CXFProto/services/HelloWorldServicexsd='components.xsd'
> " />
> Thus a client consuming the WSDL can lookup components.xsd. Same issue with
> the xsd:include element. A configuration option to get this behavior would
> be appropriate or the default behavior changed.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.