“便携式”JAX-WS 客户端

Posted

技术标签:

【中文标题】“便携式”JAX-WS 客户端【英文标题】:"Portable" JAX-WS client 【发布时间】:2010-12-12 16:47:37 【问题描述】:

我部署了一个 JAX-WS 服务并使用 wsimport 生成客户端代码。 因为我在 localhost 上运行 wsimport,所以我在“localhost”地址上获得了带有 binind 的客户端代码。

但我想在其他计算机上重用这些客户端代码,这些计算机使用公共 IP y.y.y.y 访问我部署的服务。如何动态使用那些(一次)生成的客户端代码来访问我的服务。 (服务的ip可能会改变...)

【问题讨论】:

【参考方案1】:

这在 JAX-WS 的 FAQ 中有介绍:

问。如何为请求动态更改 Web 服务地址?

((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "..."); 

【讨论】:

【参考方案2】:

当然。看看JBoss example。下面是相关代码sn-p:

BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://your.wsdl.location");

通常会生成 WSDL,然后 WS 提供者将相关的 URL 插入 WSDL。

【讨论】:

以上是关于“便携式”JAX-WS 客户端的主要内容,如果未能解决你的问题,请参考以下文章

带有 Axis 服务的 JAX-WS 客户端

为 JAX-RPC Web 服务生成 JAX-WS 客户端存根?

JAX-WS 客户端:访问本地 WSDL 的正确路径是啥?

如何在 JAX-WS 客户端中指定 ReplyTo EndpointReference?

JAX-WS 客户端:跨多个服务维护会话/cookie

如何使用 JAX-WS 客户端指定 WS-Addressing 版本?