gpt4 book ai didi

jar - 使用 CXF wsdl2java 将 wsdl 捆绑在 jar 中

转载 作者:行者123 更新时间:2023-12-01 23:15:27 24 4
gpt4 key购买 nike

我正在研究一个将使用我从供应商那里获得的 wsdl 的实现。我们的项目在 Spring 和 CXF 上运行,我想创建一个 jar 来允许我访问该供应商的 wsdl 服务,但我遇到了类路径问题。

使用 CXF 的 wsdl2java 我能够生成这样的代码:

WSDL_LOCATION = new URL("file:SomeService.wsdl");

该服务要求 wsdl 位于类路径中,但我想将它捆绑在 jar 中,以便它可以作为独立的 jar 分发。使用 wsdl2java 工具,我可以将 URL 实例化中的字符串指定为我想要的任何内容。但是,我还没有在 jar 中找到自定义字符串和 wsdl 文件位置的组合。

我让它按照我的意愿工作的唯一方法是将 wsdl 文件放在 SomeService.class 所在的同一文件夹中,并使用以下行:
WSDL_LOCATION = TrackService.class.getResource("TrackService_v4.wsdl");

但是,这有我必须手动编辑 java 代码并自己编译的缺点。这是不可取的,因为我们最终希望将这个过程作为我们的 maven 构建的一部分,并让 wsdl2java 自己自动进行生成和编译。

我可以将 wsdl 放在 jar 中的任何位置,但我不知道要传递给 wsdl2java 以使其引用 jar 中的文件。

有没有人有任何建议或经验这样做?

最佳答案

我遇到了同样的问题 - 我有以下解决方法,但我仍在寻找更清洁的东西。

  • 将您的 wsdls 保存在 src/main/resources/wsdl
  • 创建 TrackService 时执行以下操作:

    URL wsdlUrl = TrackService.class.getResource("/wsdl/TrackService_v4.wsdl");
    TrackService service = new TrackService( wsdlUrl );

  • 理想的解决方案是将位置作为 <wsdlLocation/> 传递。元素进入 CXF wsdl2java 插件。然后您的客户端代码可以调用默认构造函数。但是,生成的 stub 代码不允许您指定类路径上的 wsdl 文件。

    关于jar - 使用 CXF wsdl2java 将 wsdl 捆绑在 jar 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093858/

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