Как настроить Apache Proxy для правильного возвращения местоположения JAX-WS WSDL XSD - PullRequest
0 голосов
/ 25 июня 2019

Мне нужно опубликовать веб-сервис 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?

1 Ответ

0 голосов
/ 08 июля 2019

Хорошо, кажется, я понял это сам ...

Кажется, проблема в порте. Первоначально расположение схемы xsd было задано как http://myServer:80. После запрета http: трафика на мое развертывание в конфигурации развертывания сервера приложений порт был возвращен правильно как 443, что также заставило все остальное работать правильно:

<types>
  <xsd:schema>
    <xsd:import schemaLocation="https://myServer:443/myService?xsd=1" namespace="http://myService.myCompany.com"/>
  </xsd:schema>
</types>
...