Ответ 1
Это описано в FAQ JAX-WS:
Q. Как я могу изменить адрес веб-службы динамически для запроса?
((BindingProvider)proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "...");
Я развернул службу JAX-WS и использовал wsimport для генерации кода клиента. Поскольку я запускаю wsimport на localhost, я получил код клиента с binind на адрес "localhost".
Но я хочу повторно использовать этот код клиента на других компьютерах, которые обращаются к моей развернутой службе с открытым IP-адресом y.y.y.y. Как можно динамически использовать этот (один раз) сгенерированный клиентский код для доступа к моей службе. (IP-сервис может измениться...)
Это описано в FAQ JAX-WS:
Q. Как я могу изменить адрес веб-службы динамически для запроса?
((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.