Клиентский порт SOAP - PullRequest
       7

Клиентский порт SOAP

0 голосов
/ 26 апреля 2011

Я использую wsimport для генерации клиентских классов SOAP. Проблема, однако, заключается в том, что, хотя сервер работает на порту 8080, существует прокси-сервер, который делает его доступным из Интернета на порту 80. В WSDL серверный порт 8080 по-прежнему указан.

Теперь, когда я подключаюсь к серверу, первым делом клиентский запрос - это WSDL. Затем он получает URL-адрес в этом WSDl и пытается подключиться к нему с сервером, что, очевидно, не удается, поскольку порт 8080 недоступен извне.

Есть ли стандартный способ решения этой проблемы?

Спасибо.

1 Ответ

2 голосов
/ 10 мая 2011

Если ваш клиентский код успешно получает WSDL, вы можете явно указать адрес конечной точки следующим образом:

ExampleService exampleService = new ExampleService();
Example example = exampleService.getExamplePort();
BindingProvider bindingProvider = (BindingProvider) example;
bindingProvider.getRequestContext().put(
    BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
    "http://ws.someservice.com:80/soap/ExampleBean");

Эта последняя строка переопределяет URL-адрес порта в WSDL, который является внутренним.

У меня есть более подробная информация об использовании wsimport здесь: http://shrubbery.homeip.net/c/display/W/Consuming+a+Web+Service+with+Java+6+and+JAX-WS

...