You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Håkan Dahl <ha...@gmail.com> on 2009/12/01 10:24:23 UTC

jax-ws-catalog and resolving schemas in jars that do xsd:include

I can't get schema resolution from a jar-file (using jax-ws-catalog as per
4.4 Catalog Facility in the JAX-WS 2.1 spec) to work when:

* The referenced schema in a jar makes xsd:include on another schema in the
jar (all schemas in a jar share the same namespace). Stacktrace below.

Shouldn't this be possible?

Note: xsd:import works but requires imported schema to be in another
namespace.


Projects look like:

common-types-domain1
    META-INF/jax-ws-catalog.xml
    schemas/domain1/domain1-schema1.xsd
    schemas/domain1/domain1-schema2.xsd

wsdl-project-1
    src\main\resources\schemas\GetX.xsd
    src\main\resources\schemas\GetXService.wsdl

where the GetXService.wsdl imports GetX.xsd which imports
domain1-schema2.xsd like this:


GetX.xsd:

    <xsd:import namespace="http://www.example.org/schemas/domain1"
        schemaLocation="
http://www.example.org/schemas/domain1/domain1-schema2.xsd"/>

domain1-schema2.xsd:

    <xsd:include schemaLocation="domain1-schema1.xsd"/>

common-types-domain1/META-INF/jax-ws-catalog.xml:

    <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
prefer="system">
      <system systemId="
http://www.example.org/schemas/domain1/domain1-schema1.xsd"
          uri="classpath:schemas/domain1/domain1-schema1.xsd"/>
      <system systemId="
http://www.example.org/schemas/domain1/domain1-schema2.xsd"
          uri="classpath:schemas/domain1/domain1-schema2.xsd"/>
    </catalog>

results in:

Caused by: org.apache.cxf.tools.common.ToolException: Thrown by JAXB :
http://www.example.org/schemas/domain1/domain1-schema1.xsd
    at
org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBBindErrorListener.error(JAXBBindErrorListener.java:34)
    at
com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.error(SchemaCompilerImpl.java:285)
    at com.sun.tools.xjc.ErrorReceiver.error(ErrorReceiver.java:90)
    at
com.sun.tools.xjc.reader.internalizer.DOMForest.parse(DOMForest.java:402)
    at
com.sun.tools.xjc.reader.internalizer.DOMForest.parse(DOMForest.java:301)
    at
com.sun.tools.xjc.reader.internalizer.AbstractReferenceFinderImpl.startElement(AbstractReferenceFinderImpl.java:95)
    at
org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:240)
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:277)
    at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:246)
    at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:123)
    at
com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.parseSchema(SchemaCompilerImpl.java:135)
    at
org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.addSchemas(JAXBDataBinding.java:253)
    at
org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:196)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:588)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:239)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:130)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:283)
    at
org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:83)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:103)
    at
org.apache.cxf.maven_plugin.WSDL2JavaMojo.processWsdl(WSDL2JavaMojo.java:337)
    ... 20 more
Caused by: java.io.FileNotFoundException:
http://www.example.org/schemas/domain1/domain1-schema1.xsd
    ... 39 more

Re: jax-ws-catalog and resolving schemas in jars that do xsd:include

Posted by Håkan Dahl <ha...@gmail.com>.
I filed JIRA https://issues.apache.org/jira/browse/CXF-2571 and attached
test-projects.

I'm using CXF 2.1.8. Also tried 2.2.5 which fails with another stacktrace as
below.

Thanks,
/håkan


CXF 2.2.5 stacktrace:

Caused by: org.apache.maven.plugin.MojoExecutionException:
java.lang.NullPointerException
    at
org.apache.cxf.maven_plugin.WSDL2JavaMojo.processWsdl(WSDL2JavaMojo.java:482)
    at
org.apache.cxf.maven_plugin.WSDL2JavaMojo.execute(WSDL2JavaMojo.java:387)
    at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
    at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
    ... 17 more
Caused by: org.apache.cxf.tools.common.ToolException:
java.lang.NullPointerException
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:279)
    at
org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
    at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
    at
org.apache.cxf.maven_plugin.WSDL2JavaMojo.processWsdl(WSDL2JavaMojo.java:479)
    ... 20 more
Caused by: java.lang.NullPointerException
    at java.net.URI$Parser.parse(URI.java:3010)
    at java.net.URI.<init>(URI.java:578)
    at
com.sun.tools.xjc.reader.internalizer.AbstractReferenceFinderImpl.startElement(AbstractReferenceFinderImpl.java:91)
    at
com.sun.istack.XMLStreamReaderToContentHandler.handleStartElement(XMLStreamReaderToContentHandler.java:264)
    at
com.sun.istack.XMLStreamReaderToContentHandler.bridge(XMLStreamReaderToContentHandler.java:109)
    at
com.sun.tools.xjc.reader.internalizer.DOMForest.parse(DOMForest.java:432)
    at
com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.parseSchema(SchemaCompilerImpl.java:164)
    at
org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.addSchemas(JAXBDataBinding.java:407)
    at
org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:313)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaContainer.java:576)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaContainer.java:228)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:128)
    at
org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:271)
    ... 24 more



On Wed, Dec 2, 2009 at 11:26 PM, Daniel Kulp <dk...@apache.org> wrote:

>
> Is there any way you could create a small "hello world" type sample that
> demonstrates this?    This SOUNDS like a bug.   If you could attach a small
> test case to a JIRA, that would be a huge help.
>
> You also don't mention what version of CXF.  The stack trace doesn't seem
> to
> line up with recent versions of CXF.   Definitely try with 2.2.5.
>
> Dan
>
>

Re: jax-ws-catalog and resolving schemas in jars that do xsd:include

Posted by Daniel Kulp <dk...@apache.org>.
Is there any way you could create a small "hello world" type sample that 
demonstrates this?    This SOUNDS like a bug.   If you could attach a small 
test case to a JIRA, that would be a huge help.

You also don't mention what version of CXF.  The stack trace doesn't seem to 
line up with recent versions of CXF.   Definitely try with 2.2.5.

Dan


On Tue December 1 2009 4:24:23 am Håkan Dahl wrote:
> I can't get schema resolution from a jar-file (using jax-ws-catalog as per
> 4.4 Catalog Facility in the JAX-WS 2.1 spec) to work when:
> 
> * The referenced schema in a jar makes xsd:include on another schema in the
> jar (all schemas in a jar share the same namespace). Stacktrace below.
> 
> Shouldn't this be possible?
> 
> Note: xsd:import works but requires imported schema to be in another
> namespace.
> 
> 
> Projects look like:
> 
> common-types-domain1
>     META-INF/jax-ws-catalog.xml
>     schemas/domain1/domain1-schema1.xsd
>     schemas/domain1/domain1-schema2.xsd
> 
> wsdl-project-1
>     src\main\resources\schemas\GetX.xsd
>     src\main\resources\schemas\GetXService.wsdl
> 
> where the GetXService.wsdl imports GetX.xsd which imports
> domain1-schema2.xsd like this:
> 
> 
> GetX.xsd:
> 
>     <xsd:import namespace="http://www.example.org/schemas/domain1"
>         schemaLocation="
> http://www.example.org/schemas/domain1/domain1-schema2.xsd"/>
> 
> domain1-schema2.xsd:
> 
>     <xsd:include schemaLocation="domain1-schema1.xsd"/>
> 
> common-types-domain1/META-INF/jax-ws-catalog.xml:
> 
>     <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
> prefer="system">
>       <system systemId="
> http://www.example.org/schemas/domain1/domain1-schema1.xsd"
>           uri="classpath:schemas/domain1/domain1-schema1.xsd"/>
>       <system systemId="
> http://www.example.org/schemas/domain1/domain1-schema2.xsd"
>           uri="classpath:schemas/domain1/domain1-schema2.xsd"/>
>     </catalog>
> 
> results in:
> 
> Caused by: org.apache.cxf.tools.common.ToolException: Thrown by JAXB :
> http://www.example.org/schemas/domain1/domain1-schema1.xsd
>     at
> org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBBindErrorListener.error(JA
> XBBindErrorListener.java:34) at
> com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.error(SchemaCompilerImpl.
> java:285) at com.sun.tools.xjc.ErrorReceiver.error(ErrorReceiver.java:90)
>  at
> com.sun.tools.xjc.reader.internalizer.DOMForest.parse(DOMForest.java:402)
>     at
> com.sun.tools.xjc.reader.internalizer.DOMForest.parse(DOMForest.java:301)
>     at
> com.sun.tools.xjc.reader.internalizer.AbstractReferenceFinderImpl.startElem
> ent(AbstractReferenceFinderImpl.java:95) at
> org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
>     at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:240)
>     at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:277)
>     at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:246)
>     at com.sun.xml.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:123)
>     at
> com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.parseSchema(SchemaCompile
> rImpl.java:135) at
> org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.addSchemas(JAX
> BDataBinding.java:253) at
> org.apache.cxf.tools.wsdlto.databinding.jaxb.JAXBDataBinding.initialize(JAX
> BDataBinding.java:196) at
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.generateTypes(WSDLToJavaCon
> tainer.java:588) at
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.processWsdl(WSDLToJavaConta
> iner.java:239) at
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer
> .java:130) at
> org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer
> .java:283) at
> org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:83)
>     at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:103)
>     at
> org.apache.cxf.maven_plugin.WSDL2JavaMojo.processWsdl(WSDL2JavaMojo.java:33
> 7) ... 20 more
> Caused by: java.io.FileNotFoundException:
> http://www.example.org/schemas/domain1/domain1-schema1.xsd
>     ... 39 more
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog