Java CXF:附加xsd方案以生成WSDL

Java CXF:附加xsd方案以生成WSDL,java,web-services,xsd,cxf,Java,Web Services,Xsd,Cxf,我正在以某种契约优先的方式开发一个web服务——首先,我创建xsd方案,其次,使用JAXB生成类,然后,我想将这些方案附加到WSDL。这是我的应用程序上下文xml: 类路径:/xsd/RequestWrapper.xsd 问题是:RequestWrapper.xsd包含和 ComplexTypes.xsd包含。因此,当CXF生成WSDL时,它包含带有这样一个includehttp://service/path?xsd=ComplexTypes.xsd这是可以的,但是如果你走到这个链接,你会看

我正在以某种契约优先的方式开发一个web服务——首先,我创建xsd方案,其次,使用JAXB生成类,然后,我想将这些方案附加到WSDL。这是我的应用程序上下文xml:


类路径:/xsd/RequestWrapper.xsd
问题是:RequestWrapper.xsd包含
和 ComplexTypes.xsd包含
。因此,当CXF生成WSDL时,它包含带有这样一个include
http://service/path?xsd=ComplexTypes.xsd
这是可以的,但是如果你走到这个链接,你会看到带有
的ComplexTypes.xsd。当然,这不是有效的WSDL,因为它无法加载simpleType.xsd

我设法找到了解决办法:

1) 创建一个新方案,该方案包括:


2) 从其他方案中删除所有包含项

(三)


类路径:/xsd/composite.xsd
这对我来说很有效,但是,正如你所看到的,所有的方案都是无效的(没有包含)。在公开web服务之前的所有时间里,这看起来都很无聊。谁能帮帮我吗?如何度过这一关


因此,我需要某种模式位置解析程序…

我想知道为什么要在applicationContext.xml中指定xsd模式?也许我不完全理解你的问题,但当我使用JAXB开发web服务时,我只是简单地包括了它


…wsdl的其他部分
因此,请求包装器包含其他xsd文件,您可以根据需要在RequestWrapper.xsd中创建“includes”

p、 像这样导入xsd文件



谢谢你,迪达尔·布尔马加诺夫,请立即回复。问题是,CXF自己生成WSDL。所以为了让它使用我的XSD,我需要把它们交给它。Dmitry试过这个吗?也许它会帮助你!因此,您获取生成的wsdl并添加include,并告诉CXF从您的wsdl中获取。如果您经常对WSDL文件进行更改,则此解决方案并不好,因为您需要再次生成并添加“include”。应该有更自动化的版本。是的,我曾经考虑过自己开发一个wsdl。这很难,但似乎没有其他方法:我的变通方法或手动wsdl=)我希望有人发布另一个变量=)从头开始开发wsdl文件可能会导致问题(无错误检查)。我的想法是这样的:1。使用apache生成WSDL(扔掉xsd垃圾,用自己的xsd文件替换它)2。插入“include xsd”,这样当您更改web服务类(用@WebService注释)时,您可以重复上面的步骤:)希望能有所帮助。Didar Burmaganov,非常感谢。顺便说一句,eclipse有一个crearte WSDLs=)插件。