繁体   English   中英

Jax-ws wsgen生成一个引用公共模式的wsdl

[英]Jax-ws wsgen to generate a wsdl that references to a common schema

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

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

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

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

有人能指出我解决这个问题的方法吗?

我遇到了类似的问题。

我将下面的注释添加到公共类中,因此不会为每个wsgen多次生成它们。

@XmlType(namespace = "http://mypackage.mycompany.com/")
public MyClass implements Serializable {
// ... class contents
}

你和我有很多共同之处。 :)

我们做了很多类似的事情:我们在整个应用程序中使用了WSDL优先的Web服务和DTO。 但是,我们使用XML模式定义DTO,因此我们可以向它们添加元数据,通过JAXB插件将代码添加到生成的Java中。 我们打算在我们的Web服务中使用这些基于XSD的DTO,但我们被迫按照企业标准在我们的Web服务中使用一些通用的企业XSD。 但它不会有所作为 - 我们可以轻松使用我们的DTO XSD。

至于您的问题,我们为您的DTO提供了XSD,而您没有。 如果你做了那么你唯一需要的东西 - 假设一个Maven多模块项目是如何解决模块之间的模式。 我们通过分配jaxws maven插件并向其添加基于CLASSPATH的目录模式解析器来完成此操作。

我想你为你的DTO创建模式是不可能的? 我无法帮助,因为我从未使用过jaxb注释。 抱歉。

暂无
暂无

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

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