java - Jax-ws wsgen 生成引用通用模式的 wsdl

标签 java wsdl jax-ws wsgen

我们正在开发一个相当大的应用程序,其中包含几十个服务接口(interface)。使用 wsgen(使用 jaxws-maven-plugin maven 插件)为每个服务生成一个 wsdl。对于每个服务,在 wsdl 中使用不同的命名空间。

服务接口(interface)共享一组公共(public) bean(主要是 DTO)。现在,这些通用类的定义在每个 wsdl 的 XSD 中定义,重复了大量信息,这给我们在客户端带来了问题(编译时间长,类不兼容)。

首先,我尝试使用 schemagen 为公共(public)类创建一个模式,但无法将其传递给 wsgen。有没有办法将一个(或多个)通用 XSD 传递到 wsgen 并让生成的 wsdl 引用这些?

我还尝试使用指定自定义 namespace 的 @XmlRootElement 注释公共(public)类:这次 wsgen 识别了自定义 namespace 并为每个 wsdl 生成了一个 XSD,但没有在任何地方包含一个(公共(public))xsd。

有人可以为我指出这个问题的解决方案吗?

最佳答案

你和我有很多共同点。 :)

我们做了很多类似的事情:我们在整个应用程序中使用了 WSDL 优先的网络服务和 DTO。但是,我们使用 XML 模式定义我们的 DTO,这样我们就可以向它们添加元数据,从而通过 JAXB 插件向生成的 Java 添加代码。我们打算在我们的 Web 服务中使用这些基于 XSD 的 DTO,但根据企业标准,我们被迫在我们的 Web 服务中使用一些常见的企业 XSD。但这不会有什么不同 - 我们本可以轻松地使用我们的 DTO XSD。

关于您的问题,我们有您没有的 DTO 的 XSD。如果您这样做了,那么您唯一需要做的就是假设一个 Maven 多模块项目是如何跨模块解析模式。我们通过 fork jaxws maven 插件并向其添加基于 CLASSPATH 的目录架构解析器来实现这一点。

我想让您为 DTO 创建模式是不可能的?除此之外,我无能为力,因为我从未使用过 jaxb 注释。对不起。

关于java - Jax-ws wsgen 生成引用通用模式的 wsdl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8675363/

相关文章:

java - 在 gwt.xml 中设置语言环境不起作用

java - 具有多个实例但具有唯一对象标识的已排序集合

java - 在 maven-jaxb2-plugin 中外部配置 WSDL 位置

c# - HTML 文档不包含 Web 服务发现信息

java - 不同端口上独立应用程序端点中的 Spring Jax-ws

java - 如何将参数添加到 SOAP URL 并在服务端检索它们

java - JAX-WS 客户端获取响应 header

java - ImageView 中图像的文件位置

java - Spring Boot - 处理未找到的静态资源(404)并能够识别异常原因

java - 如何编写 WSDL?