【问题标题】:Relative placement of wsdl-files in Java SOAP clientsJava SOAP 客户端中 wsdl 文件的相对位置
【发布时间】:2015-08-04 21:56:15
【问题描述】:

是否可以使用本地 WSDL 文件制作 Java SOAP 客户端,以便对它们的引用相对于“客户端”,而不是绝对的,无论是在独立应用程序和 Java EE 中,还是跨操作系统?

我使用 WSIMPORT 生成工件,似乎生成的服务需要访问 wsdl 才能初始化。如何将 wsdl-location 指定为相对于它所在的项目?这意味着打包在 JAR/WAR 中,并且相对于操作系统 (Linux/Windows) 和相对于执行环境(Java EE 服务器与独立应用程序)。

【问题讨论】:

  • 我已经成功使用了How to avoid the need to specify the WSDL location in a CXF or JAX-WS generated webservice client? 中提出的解决方案。 wsdlLocation 属性中的 classpath: 前缀可与 CXF 代码生成 Maven 插件一起使用,但也许类似的方法可以与 wsimport 一起使用(或者您可以切换到使用 CXF,顺便说一句,这是一个很好的框架)。
  • 谢谢,事实证明当前工件是使用 CFX 创建的,因此代码看起来与解决方案中发布的代码非常相似。我应该能够只编辑当前代码即可工作。

标签: java jboss wsdl cxf wsimport


【解决方案1】:

您可以从类路径中的某个位置将文件作为资源加载。示例herehere

通过确保您的构建过程始终将文件捆绑到 JAR 中的同一位置,您可以在代码中的任何位置以相同的方式访问该文件。

【讨论】:

  • 这是否意味着 wsdl 文件应该放在 src/main/resource/wsdlsrc/test/resource/wsdl 中才能让 junit 也能正常工作?
  • 是的。使用不同的 wsdl 文件进行测试也很常见(例如,指向 UAT 或 Prod 并行环境。但是,当您运行测试时,您需要检查 src/main/resource 是否也在类路径中 - 我是不确定这里的默认设置是什么,但通常我认为只有测试资源会添加到测试配置中。
  • 我正在尝试构建一个通用客户端,以便在我们的许多项目中使用。如果需要,可以使用来自外部类/包的自定义 wsdl 初始化客户端。如果没有指定,客户端应该默认使用它自己的 wsdl。我尝试了一个 Junit 测试,并且 src/main/resource 中的 wsdl 文件的位置也用于测试。所以一切都很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 2013-08-20
  • 1970-01-01
相关资源
最近更新 更多