Веб-сервисы JBoss за IIS через HTTP - PullRequest
1 голос
/ 18 ноября 2009

Полагаю, это запутанная сеть, но на самом деле она не должна быть такой сложной. Дайте мне посмотреть, смогу ли я нарисовать картину:

Я написал веб-сервис, начиная с WSDL, который должен работать в JBoss. Все это прекрасно и замечательно, когда я запускаю его на своем локальном компьютере и указываю своему «клиентскому генератору» Netbeans (возможно, просто использующему «wsimport» или что-то за кадром) на него, чтобы сгенерировать клиента, который работает как положено. Все это работает путем прямого нажатия на порт 8080, и элемент <soap:address> выглядит так:

<soap:address location="http://localhost:8080/MyoutfitWebService/funService"/>

Теперь, когда этот щенок будет развернут, он будет получать запросы от IIS, перенаправленные через AJP, я думаю, на порт 8009. IIS обрабатывает проверку сертификата нашего клиента, а затем должен просто переслать запрос в мой веб-сервис. Я не могу понять, что использовать в элементе <soap:address> моего WSDL, чтобы я мог дать URL-адрес WSDL кому-то для создания своего собственного клиента. Если я использую:

<soap:address location="https://real.server.com/MyoutfitWebService/funService"/>

при развертывании и указании на WSDL элемент <soap:address> разрушается и выглядит примерно так:

<soap:address location="https://127.0.0.1:8443/MyoutfitWebService/funService"/>

Может кто-нибудь сказать мне, если мне нужно что-то изменить в jbossws.sar jboss-beans.xml или как? Я использую JBoss Web Services Native 3.0.4.

Спасибо за чтение.

1 Ответ

0 голосов
/ 01 декабря 2009

Я понятия не имею, как справиться с этим в IIS, но я напишу некоторые заметки о Apache

У меня была такая же проблема, и я обошел ее используя модуль mod_ext в apache

Ваша конфигурация будет выглядеть так

 ExtFilterDefine fixservice mode=output cmd="/bin/sed s/127.0.0.1:8443/real.server.com:443/g"

 <Location "/MyoutfitWebService/services/funService">
      ProxyPass ajp://local.server.com:8009/MyoutfitWebService/funService   
      SetOutputFilter fixservice
 </Location>
 ProxyPass /MyoutfitWebService/funService ajp://local.server.com:8009/MyoutfitWebService/funService

Итак, ваш «правильный» WSDL-адрес будет

 real.server.com/MyoutfitWebService/services/funService?wsdl 

у которого будет правильное мыло: адрес,

 real.server.com/MyoutfitWebService/funService 

(я удалил https, поскольку могу разместить здесь только одну гиперссылку).

Возможно, есть лучший способ, но, к сожалению, у меня нет времени, чтобы провести глубокое расследование. Это решение просто работает (я нашел его пару минут назад и уже тестировал)

...