Два веб-приложения на одном домене с разными контекстными корнями? - PullRequest
6 голосов
/ 10 февраля 2011

У меня проблема.У меня есть два веб-приложения, развернутые как войны.Давайте назовем их app1.war и app2.war.

. Я бы хотел, чтобы к app1.war обращались по URL www.website.com, и я бы хотел, чтобы app2.war был доступен как www.website.com/anotherapp.У меня есть готовое доменное имя.

Виртуальный хостинг, похоже, здесь не помогает.

Я использую JBoss App Server 5.1 и Seam 2.2.0.Я работаю над интеграцией форума (развернутого как война) с моим приложением (развернутого как еще одна война), поэтому мне нужно использовать единый вход и, следовательно, хотелось бы, чтобы форматы URL, описанные выше, упрощали передачу файлов cookie sso.

Спасибо за любые идеи.

-Чарльз.

Ответы [ 4 ]

4 голосов
/ 11 февраля 2011

Вам нужно сделать такие вещи:

  1. Настройте JBoss для использования виртуального хоста с именем www.website.com.

    Вы можете сделать это, отредактировав server.xml из каталога jbossweb.sar. Короче говоря, вы должны установить другую директиву Host.

  2. Вы должны настроить свое военное приложение. Вы можете сделать это, создав или отредактировав файл jboss-web.xml (он должен быть помещен в каталог WEB-INF). В этом файле вы можете указать, какой виртуальный хост должен использоваться и в каком контексте.

Пример этого файла для app1.war

<jboss-web>
   <context-root>/</context-root>
   <virtual-host>website</virtual-host>
</jboss-web>

Пример этого файла для app2.war

<jboss-web>
   <context-root>/anotherapp</context-root>
   <virtual-host>website</virtual-host>
</jboss-web>

Больше информации вы можете найти в этом посте Хостинг нескольких доменов с JBoss

1 голос
/ 11 февраля 2011

Я бы хотел, чтобы app1.war был доступен по следующему адресу: www.website.com, и я бы хотел, чтобы app2.war был доступен по адресу www.website.com/anotherapp. Конечно, у меня есть готовое доменное имя.

Самый простой способ реализовать конкретный вариант использования - развернуть app1.war в ROOT.war и app2.war в anotherapp.war в каталоге / deploy. Это работает лучше всего, когда вы используете взорванные войны.

Если вы не хотите переименовывать свои разнесенные военные папки, вы можете использовать символическую ссылку.

1 голос
/ 11 февраля 2011

Чтобы иметь одинаковый файл cookie сеанса для всех веб-приложений в контейнере сервлета, добавьте SessionCookie в файл deploy / jbossweb.sar / context.xml:

<Context>
 ...
 <SessionCookie path="/" />
</Context>

Если вы не хотите переименовывать ROOT.war во что-то другое и позволить app1.war получить имя ROOT.war (я не понимаю, почему нет), возможно, вы можете сделать какое-нибудь apache redirect / rewrite / proxy вещи, чтобы скрыть реальный контекстный корень app1

1 голос
/ 10 февраля 2011

Давно не использовал JBoss или Seam, но если это похоже на большинство серверов приложений, то будет XML-файл с некоторым описанием, где вы сопоставляете шаблоны URL с приложениями. Проверьте ваши документы для деталей, но я думаю, что вы хотите web.xml и несколько записей сервлета, как:

<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.seam</url-pattern>
</servlet-mapping>

Измените шаблон URL и сервлеты соответственно.

...