繁体   English   中英

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

[英]CXF java2ws: how to include external xsd files?

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

我已经尝试过 -createxsdimports,但这确实会生成自己的 XSD 文件。

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

尝试@XmlSchema注释。 它包含一个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 时和当 web 服务应用程序启动时——CXF 将在启动时检索模式文件。 当然,当您生成客户端时也是如此。 这确实会产生一些混乱的架构依赖。 but there appears to be no way to tell CXF "myschema.xsd" is available at http://myurl.com/myschema.xsd but ALSO in /src/main/schema/myschema.xsd.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM