Как изменить автогенерированное soap: адрес из веб-службы JAX-WS WSDL, развернутой с помощью Spring
у меня есть реализация веб-сервиса, сгенерированная с помощью wsimport из WSDL. Эта служба развертывается на сервере Tomcat в Spring webapp. Файл конфигурации spring (только часть webservice) выглядит следующим образом
<wss:binding url="/fooService">
<wss:service>
<ws:service bean="#fooService">
</wss:service>
</wss:binding>
когда я развертываю этот webapp в tomcat, я могу получить WSDL, если я пойду в
http://localhost:8080/foo/fooService?wsdl
и свойство WSDL soap: address выглядит следующим образом:
<service name="FooService">
<port name="FooService" binding="tns:FooServiceBinding">
<soap:address location="http://localhost:8080/foo/fooService"/>
</port>
</service>
а пока все в порядке.
проблема в том, что в производстве, мы есть веб-сервер Apache и сервер перенаправляет запросы к Tomcat. Он тоже работает, но когда мы получаем WSDL, soap:address по-прежнему localhost:8080, и нам нужно, чтобы это был общедоступный url-адрес веб-службы.
какие идеи?
спасибо.
1 ответов
Ну, я нашел одно решение:
кажется, что JAX-WS генерирует это свойство автоматически. Я обнаружил, что другие реализации фреймворков webservice позволяют пользователю изменять это, жестко кодируя url-адрес в свойстве, но кажется, что JAX-WS этого не делает. Кто-нибудь знает, есть ли способ?
в любом случае, я нашел обходной путь: используя свойства proxyName и proxyPort в конфигурации соединителя tomcat, вы можете сказать Tomcat, который находится за прокси (в нашем case, Apache server)и что" реальным " портом для клиентов является 80.
делаешь этого изменения автоматически мыло:адрес содержит правильное значение.
ссылки: