“Портативный” клиент JAX-WS
Вопрос
Я развернул службу JAX-WS и использую wsimport для генерации клиентского кода.Поскольку я запускаю wsimport на localhost, я получил клиентский код с binind по адресу "localhost".
Но я хочу повторно использовать этот клиентский код на других компьютерах, которые получают доступ к моей развернутой службе с общедоступным IP-адресом y.y.y.y.y.Как можно динамически использовать этот (однажды) сгенерированный клиентский код для доступа к моему сервису?(IP-адрес сервиса может измениться ...)
Решение
Это описано в Вопросы и ответы из 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.