gpt4 book ai didi

java - 从多个 WSDL 文件生成 Java 文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:08 24 4
gpt4 key购买 nike

我目前正在参与一个项目,我们必须将我们的系统集成到外部系统。负责外部系统的公司向我们提供了多个WSDL和相应的XSD文件(超过100个WSDL文件)。每个 WSDL 文件都包含有关各种服务的信息,XSD 文件包含有关每个服务所使用的类型的信息。

我当前面临的问题是当我从这些 XSD 文件生成 Java 类时。许多 XSD 文件包含相同的类型。假设几乎所有这些 XSD 文件都包含有关“用户”的信息。所有 XSD 文件中的用户类型都是相同的,并且具有相同的命名空间。当从这些 WSDL 文件生成 Java 类并将它们放置在不同的包中时,我最终得到了同一类的一百多个版本。如果我将所有 Java 类放在同一个包中,我就会覆盖 ObjectFactory。

因此,当我从一个 WSDL 文件生成 Java 类时,结果将是大约一百个 Java 类。其中 50 个类在所有其他 WSDL 文件中都是相同的,其余类对于该 WSDL 文件来说是唯一的。

我的问题如下:处理此类场景的最佳实践是什么?是否可以将所有这些 WSDL 文件合并到一个文件中,然后从中生成类?或者当我生成Java类时,是否可以将所有公共(public)类提取到一个单独的包中?

目前我们使用 Apache CXF 和 Maven (cxf-codegen-plugin) 来生成我们的类,然后做一些手动工作。不过,我相信应该有一种更有效的方法来处理这个问题。

非常感谢我能就该问题获得的所有帮助。

最佳答案

在 jaxws-maven-plugin 中,您可以一次指定多个 wsdls:

                    <configuration>
<keep>true</keep>
<extension>true</extension>
<catalog>XXX-models/catalog.xml</catalog>
<packageName>com.yyy.client</packageName>
<wsdlUrls>
<wsdlUrl>${basedir}/xml-resources/web-service-references/JobSession/wsdl/JobSessionService.wsdl</wsdlUrl>
<wsdlUrl>${basedir}/xml-resources/web-service-references/ZZZWSService/wsdl/ZZZWSService.wsdl</wsdlUrl>
....

查看 the documentation ,看来您也可以使用 CXF 来做到这一点。请参阅 wsdlOptions 元素。

如果这没有帮助,您应该发布 pom.xml 的相关部分。

关于java - 从多个 WSDL 文件生成 Java 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25515024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com