Мне нужно опубликовать веб-сервис JAX-WS на сервере приложений Weblogic за локальным прокси-сервером Apache.Сервер Weblogic настроен на прослушивание только локальных запросов, а прокси-сервер Apache перенаправляет входящие запросы на сервер приложений через http://myServer/myService
- http://localhost:1234/myService
, используя ProxyPass
и ProxyPassReverse
(для передачи всех http действует RewriteRule).: traffic to https:).
Когда я запрашиваю WSDL моей службы SOAP через http://myServer/myService?wsdl
, я получаю WSDL, как и ожидалось, но часть WSDL xsd schemaLocation указывает на localhost, снова какожидается (поскольку веб-служба фактически вызывается из localhost):
<types>
<xsd:schema>
<xsd:import schemaLocation="http://localhost:1234/myService?xsd=1" namespace="http://myService.myCompany.com"/>
</xsd:schema>
</types>
Когда я запрашиваю xsd по URL-адресу schemaLocation xsd, заменяя localhost на правильное имя сервера, xsd выглядит так, как я и ожидал.Поскольку часть localhost определенно неверна, я изменил конфигурацию Apache, чтобы сохранить имя хоста вызывающих абонентов, добавив ProxyPerserveHost On
в мой файл конфигурации httpd, возвращенный wsdl указывает на myServer, как я и ожидал:
<types>
<xsd:schema>
<xsd:import schemaLocation="http://myServer:80/myService?xsd=1" namespace="http://myService.myCompany.com"/>
</xsd:schema>
</types>
Опять же, получение xsd с этого URL-адреса работает нормально, xsd действителен и выглядит так, как ожидалось.Когда я пытаюсь создать SOAPUI SOAP-проект по URL http://myServer/myService?wsdl
, я получаю сообщение об ошибке org.apache.xmlbeans.XmlException: error: Unexpected end of file after null
Когда я получаю тот же WSDL из идентичного развертывания на сервере Weblogic без прокси-сервера Apache и даже если яВызовите службу напрямую без прокси на исходном сервере, все работает нормально.
Как правильно настроить прокси-сервер Apache, чтобы иметь возможность использовать динамическую доставку WSDL и возвращать действительные wsdl и xsd без необходимостивручную создать файл wsdl со встроенным xsd?