【发布时间】:2023-03-23 18:13:01
【问题描述】:
我正在从事一个相当大的 WS 项目,其中涉及 20 多个不同的 WebService。这些 Web 服务虽然彼此独立,但共享一组相当大的通用类型。我们在构建脚本中使用 wsimport 作为 ant 目标来生成代理类。
问题: 随着我们的 WS(和相应的 WSDL)数量的增加,我们注意到我们的代理类的构建时间一直在攀升。经过进一步调查(和分析),我们发现 wsimport 花费了很大一部分构建时间来重复生成常见类型。已经到了生成、编译和打包这些代理类及其常见类型大约需要 15-20 分钟的时间。这对我们来说是个问题,我们正在寻找缩短构建时间的方法。
问题: 有没有办法只生成一次常用类型?我研究了通过谷歌搜索找到的一些解决方案。其中一个涉及编写一个 WSDL 累加器,它解析 WSDL 并将它们组合成一个 WSDL,因此 wsimport 只被调用一次。另一个暗示使用剧集文件,但进一步调查发现使用这种方法存在问题。
注意:我看过一些较早的类似问题,但没有一个有任何答案。
wsimport multiple generated wsdl's
How can I tell wsimport that separate WSDL files are referring to the same object classes?
【问题讨论】:
-
你试过-keep选项吗?
-
你将无法做到...... wsdl 累加器是你最好的选择,但你不喜欢它,你也可以使用绑定来跳过后续常见类型的生成wsdl。关键是每次在构建时生成工件没有任何优势......只需将生成的类保存为源(在单独的 jar 中,也可以根据您的喜好)。
标签: java web-services soap wsdl wsimport