"Портативный" клиент JAX-WS

Я развернул службу JAX-WS и использовал wsimport для генерации кода клиента. Поскольку я запускаю wsimport на localhost, я получил код клиента с binind на адрес "localhost".

Но я хочу повторно использовать этот код клиента на других компьютерах, которые обращаются к моей развернутой службе с открытым IP-адресом y.y.y.y. Как можно динамически использовать этот (один раз) сгенерированный клиентский код для доступа к моей службе. (IP-сервис может измениться...)

Ответ 1

Это описано в FAQ JAX-WS:

Q. Как я могу изменить адрес веб-службы динамически для запроса?

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

Ответ 2

Конечно. Взгляните на пример JBoss. Вот соответствующий фрагмент кода:

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

Обычно WSDL создается и, следовательно, поставщик WS вставляет соответствующие URL-адреса в WSDL.