Изменение порта, на котором слушает веб-служба Axis - PullRequest
1 голос
/ 20 января 2009

У меня есть веб-приложение, работающее через порт: 80, и у меня есть веб-служба Axis, которая является частью этого веб-приложения. Таким образом, служба работает и на порту: 80.

Однако в целях безопасности наш клиент попросил нас изменить порт веб-службы на 8080, чтобы они могли разрешить доступ только к этому порту для удаленных потребителей веб-службы. Поэтому они не будут иметь доступа к обычному веб-приложению, но будут иметь доступ к сервису.

Можно ли обойтись без рефакторинга приложения и извлечения веб-службы в отдельном веб-приложении?

Ответы [ 3 ]

1 голос
/ 03 февраля 2009

Как я уже сказал в своем комментарии, наше веб-приложение размещено в Oracle AS 10g, а перед ним - сервер Oracle Web Cache. Oracle Web Cache основан на Apache httpd, поэтому он поддерживает виртуальные хосты и перезаписывает URL (хотя в этих условиях он отсутствует).

Мне удалось решить проблему:

  • настройка веб-кэша для прослушивания порта 8080 (виртуальный хост)
  • переписать все запросы в форме http://host:8080/service/* на http://host/service/*, и отбросить все остальные шаблоны URL.

Работает как шарм.

Что касается самой Axis, я не нашел способа настроить ее на прослушивание другого порта. Я полагаю, что было бы неразумно ожидать от Axis предоставления этой функциональности, поскольку это всего лишь сервлет, размещенный в контейнере сервлетов, и задача этого контейнера - обеспечить уровень соединителя / транспорта.

В любом случае ... спасибо всем, кто предложил свою помощь, я ценю это.

0 голосов
/ 31 января 2009

Что вы должны иметь возможность настроить отдельную службу, используя порт 8080 Connector.

Фактически, вы будете использовать 2 мини-кота внутри своего экземпляра.

В основном

<Service> <!-- normal service -->
  <Connector port="80" />
</Service>
<Service> <!-- custom service -->
  <Connector port="8080" />
  <Engine>
     <Host />
  </Engine>
</Service>

Мне кажется, что это решение может создать некоторые кошмары для отладки, если оно не работает должным образом, и поэтому может быть проще запустить второй сервер (возможно, Jetty).

0 голосов
/ 20 января 2009

Краткий ответ, вероятно, таков: да, это возможно.

Веб-сервисы Axis в основном достаточно отделены от основного приложения, чтобы их было легко запустить на другом экземпляре веб-сервера Java, который работал бы только на порте 8080, в случае, если невозможно настроить какой-либо веб-сервер, которым вы являетесь работает для запуска также на порту 8080 и для обслуживания веб-службы только на этом порту.

...