Как изменить автогенерированное 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.

делаешь этого изменения автоматически мыло:адрес содержит правильное значение.

ссылки: