【发布时间】:2014-08-26 20:57:44
【问题描述】:
我目前参与了一个项目,我们必须将我们的系统集成到外部系统。负责外部系统的公司为我们提供了多个 WSDL 和相应的 XSD 文件(超过 100 个 WSDL 文件)。每个 WSDL 文件包含有关各种服务的信息,而 XSD 文件包含有关用于每个服务的类型的信息。
我目前面临的问题是当我从这些 XSD 文件生成 Java 类时。许多 XSD 文件包含相同的类型。假设几乎所有这些 XSD 文件都包含有关“用户”的信息。 User 类型在所有 XSD 文件中都是相同的,并且具有相同的命名空间。当从这些 WSDL 文件生成 Java 类并将它们放在不同的包中时,我最终得到了同一个类的一百多个版本。如果我将所有 Java 类放在同一个包中,我会覆盖 ObjectFactory。
所以当我从一个 WSDL 文件生成 Java 类时,结果将包含大约一百个 Java 类。这些类中有 50 个在所有其他 WSDL 文件中都是相同的,其余的仅对于该 WSDL 文件是唯一的。
我的问题如下:处理这类场景的最佳做法是什么?是否可以将所有这些 WSDL 文件合并到一个文件中,然后从中生成类?或者当我生成Java类时,是否可以将所有公共类提取到一个单独的包中?
目前我们使用 Apache CXF 和 Maven (cxf-codegen-plugin) 来生成我们的类,然后做一些手动工作。不过,我相信应该有更有效的方法来处理这个问题。
感谢我在这个问题上获得的所有帮助。
【问题讨论】:
-
您是否尝试过将这些 java 类生成到同一个包中?也许重复项会相互覆盖?
-
是的,我已经尝试过了。但是,问题是我的解决方案覆盖了从每个 WSDL 文件生成的 ObjectFactory。对于每个 WSDL 文件,每个 ObjectFactory 或多或少都是唯一的。
-
啊.. 没想到那种情况。如果不进一步调整将这些定义转换为 POJO 的实际源,我不确定是否可以避免这种情况。我想您可以复制到 common 包作为您的基础,然后单独运行 wsimport 以获取所有 ObjectFactory 定义以供您使用。繁琐的工作,但仍然是一个可行的解决方法。或者,如果您能找到一个可以正确合并多个 wsdl 的工具……也许这是一个更好的解决方案?
标签: java web-services maven xsd wsdl