我部署了一个 JAX-WS 服务并使用 wsimport 生成客户端代码。因为我在 localhost 上运行 wsimport,所以我在“localhost”地址上获得了带有 binind 的客户端代码。
但是我想在使用公共 IP yyyy 访问我部署的服务的其他计算机上重用这些客户端代码如何动态使用这些(一次)生成的客户端代码来访问我的服务。(服务的ip可能会改变......)
这在JAX-WS的常见问题解答中有所介绍:
问:如何为请求动态更改 Web 服务地址?
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "...");
当然。看一下JBoss 示例。这是相关的代码片段:
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://your.wsdl.location");
通常会生成 WSDL,然后 WS 提供者将相关的 URL 插入到 WSDL 中。