我部署了JAX-WS服务并使用wsimport生成客户端代码。 因为我在localhost上运行wsimport,所以我在“localhost”地址上使用binind获取了客户端代码。
但是我希望在使用公共IP y.y.y.y访问我部署的服务的其他计算机上重用这些客户端代码。如何动态使用这些(一次)生成的客户端代码来访问我的服务。 (服务的IP可能会改变......)
答案 0 :(得分:13)
这包含在JAX-WS的FAQ中:
问。如何动态更改请求的Web服务地址?
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "...");
答案 1 :(得分:6)
不确定。看看JBoss example。以下是相关的代码段:
BindingProvider bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://your.wsdl.location");
通常会生成WSDL,因此WS提供程序会将相关的URL插入到WSDL中。