CXF java2ws:如何包含外部xsd文件?

CXF java2ws:如何包含外部xsd文件?,java,jaxb,cxf,jaxb2,Java,Jaxb,Cxf,Jaxb2,我为几个web服务(从服务器服务定义)生成WSDL文件,其中我已经为用作参数的bean生成了XML模式(*.XSD)。我如何告诉java2ws引用这些(包括外部XSD),而不将自己的XSD生成到WSDL中 我尝试了-createxsdimports,但它确实生成了自己的XSD文件 是否有一个Java注释可以让CXF知道每个文件/包的XSD在哪里?试试这个注释。它包括一个location参数,用于告诉JAXB存在一个真正的模式: @XmlSchema(location="http://www.ex

我为几个web服务(从服务器服务定义)生成WSDL文件,其中我已经为用作参数的bean生成了XML模式(*.XSD)。我如何告诉java2ws引用这些(包括外部XSD),而不将自己的XSD生成到WSDL中

我尝试了-createxsdimports,但它确实生成了自己的XSD文件

是否有一个Java注释可以让CXF知道每个文件/包的XSD在哪里?

试试这个注释。它包括一个
location
参数,用于告诉JAXB存在一个真正的模式:

@XmlSchema(location="http://www.example.com/xsds/foo.xsd")
package com.example.foo;

我有一个导入外部模式文件的CXF Web服务。当我建造它的时候;我花了相当多的时间试图理清你想要实现的确切情况。不幸的是,在从java生成WSDL时,CXF似乎不尊重@XmlSchema(location=”“)注释。当时,主要的CXF开发人员Daniel Kulp告诉我,这是一个已知的问题,但没有足够的人对此进行抱怨,因此这不是他们优先解决的问题

因此,我最终手工编写WSDL,然后从WSDL文件生成SEI。当然,如果您手工编写WSDL,您可以做任何您想做的事情


请记住,这样做的一个副作用是,外部模式文件需要通过HTTP GET访问—无论是在生成SEI时还是在webservice应用程序启动时—CXF都将在启动时检索模式文件。当然,在生成客户机时也是如此。这确实造成了一点混乱的架构依赖性;但是似乎没有办法告诉CXF“myschema.xsd”在/src/main/schema/myschema.xsd中可用。

谢谢Blaise,我如何在本地项目目录中定义xsd文件。我尝试了file:///但是CXF(2.4.1)仍然没有在