java - 更改使用 wsimport 生成的 Web 服务客户端上的 URL

标签 java web-services wsdl wsimport

我正在尝试为访问 WSDL 描述的网络服务的 Java 应用程序编写一个模块。源 WSDL 是直接从我认为是 ASP.NET 网络服务的地方下载的;服务 URL 以 .asmx 扩​​展名结尾,在浏览器中查看服务 URL 会显示一个可用于下载 WSDL 的链接。

我的一个关键要求是能够在不重新编译的情况下切换服务 URL。给我的 URL 显然是一个测试服务器,我知道在生产中我会得到一个生产 URL 来使用。我还希望能够自己创建一个模拟服务器进行测试,并保留在将来指定新 URL 的能力,而无需在移动服务时重新编译。事实上,我希望我们的应用程序能够在不同的 URL 上实例化 多个 web 服务实例。

但我的构想似乎与 wsimport 工具为我所做的不相符。按照 f1sh 的回答 here ,我使用以下命令从下载的 WSDL 生成了 Java 代码:

wsimport -Xnocompile -keep -b binding.xml wsdlFile.wsdl

我发现生成的代码有一个对我下载的 wsdlFile.wsdl 的硬编码引用,其中包含服务 URL。我们的应用程序不会以在运行时通过编辑 WSDL 文件进行配置的方式运行。我需要在构建时将代码编译到我的应用程序中,并且可以在实例化时设置服务 URL。

我不完全确定为什么 WSDL 甚至需要在运行时进行解析;据我了解,WSDL 提供了足够的信息来生成可以访问 web 服务的代码,所以我不确定除了服务 URL 之外,它向生成的代码提供了什么,我也不确定为什么没有提供服务 URL构造函数或可通过生成的 web 服务类上的方法进行配置。我一定是遗漏了什么。

这种情况的一般做法是什么?大多数人是否为他们将要使用的每个单独的 URL 重新生成代码?代码是在运行时生成的吗?有没有我可以使用的另一个 WSDL 工具来构建带有可配置 URL 的客户端代码?

最佳答案

这个答案已经让我困惑了几天,但不知何故,写这个问题的行为总是让我专注于寻找答案,并且有更多的网络搜索指向它:

http://www.fransvanbuul.net/?p=98

似乎 wsimport 创建了一个类 com.example.WebService,它扩展了 javax.xml.ws.Service。这个 WebService 类有两个构造函数。无参数构造函数使用 file://URL 进行硬编码,以使用我从中生成的原始 WSDL。 (我想如果我在 wsimport 命令行上提供了一个 https://URL,那将是硬编码的 URL。)或者我可以使用一个双参数构造函数并在实例化时提供一个 WSDL URL!这种方法要求我还提供一个 javax.xml.namespace.QName 对象,我还不理解它作为第二个参数。

使用这个双参数构造函数可能会解决我的问题。

我从 JDK 1.6 使用的 wsimport 似乎是 JAX-WS 包的一部分。 JDK 1.6,在最近的版本中,包含 JAX-WS 2.1,而 JAX-WS 2.2 将解决我在这个问题中提出的困难。

我很乐意接受任何能解释部分或全部其他情况的答案。我仍然不明白为什么在运行时需要 WSDL。更实际地说,如果有人向我展示如何使用双参数构造函数,或者如何使用 JDK 1.6 和 JAX-WS 2.2 生成我的代码,这会对我有所帮助。

关于java - 更改使用 wsimport 生成的 Web 服务客户端上的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3567856/

相关文章:

java - 在 Axis Web 服务中使用 Java 中的复杂数据类型

xml - 在 wsdl 中的什么地方放置版本信息?

java - Spring安全不允许资源,登录后浏览器只显示一个css文件?

java - 如何比较来自两个不同数据库的数据?

java - Android Emulator 使用 HttpGet 通过代理访问 RESTful Web 服务

c# - 为什么 Sharepoint Webservice 在字段值中添加 #(井号)和 id?

php - API 导致解析 WSDL : Couldn't load from

java - Spring Data JPA + JpaSpecificationExecutor + EntityGraph

java - Dropwizard 配置覆盖

web-services - 定时任务 : Web Service query