Как автоматически перейти к «моему веб-приложению» из контекста «root (/)» в JBoss? - PullRequest
13 голосов
/ 19 апреля 2011

Я использую JBoss 6.0.

Я развернул свое веб-приложение: myApp.ear в веб-контексте: " / test ".Так что в URL-адресе браузера, если я наберу "http://localhost:8080/test/",, я получу свою страницу входа в систему (myLogin.jsp).

Поскольку моя WAR существует в файле EAR, я имеюуказал корень контекста в файле application.xml , используя элемент context-root внутри веб-модуля - т.е.

<module>
    <web>
        <web-uri>myWeb.war</web-uri>
        <context-root>/test</context-root>
    </web>
</module>

Мой вопрос: как автоматически направлять пользователя в мое веб-приложение из «корневого контекста»?

Я имею в виду, если пользователь печатает "http://localhost:8080/", Я ожидаю, что страница входа в мое веб-приложение будетзагрузить (вместо стандартной страницы JBoss ROOT.war's index.html).

Я удалил существующую index.html из {JBOSS} \ server \ default \ deploy \ ROOT.war и создал там login.jsp.Теперь я вижу, что «login.jsp» вызывается, когда я набираю http://localhost:8080/. Но я не могу перенаправить запрос пользователя на страницу входа в мое веб-приложение.

В этом login.jsp,Я пробовал с: <jsp:forward page="/test" />, но я получаю ошибку: «HTTP Status 404 - /test".

Если я вызываю как <jsp:forward page="/test/myLogin.jsp" />, я все равно получаю ту же ошибку 404.

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

Ответы [ 2 ]

26 голосов
/ 19 апреля 2011

Вам нужно сохранить index.html в папке развертывания по умолчанию и переслать запрос в ваш веб-модуль.

Например, оставить следующую строку только в index.html

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/test/"/> 
4 голосов
/ 13 октября 2016

Ответ от Senthil работает хорошо, но пользователь мог видеть фактическое перенаправление, выполненное браузером (страница мигает). Перенаправление также может быть выполнено с помощью функции перезаписи [ 1 , 2 ] сервера JBoss, который поддерживает перенаправление HTTP с 30-кратными кодами (без мерцания).

Вы можете добавить переписывание в свое приложение напрямую (web.xml, jboss-web.xml) и указать правила перенаправления в rewrite.properties - здесь не показано.

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

Вариант использования: мы используем это для EJBCA развертывания (не нашего приложения), он устанавливает корневой контекст в /ejbca. Мы хотим сохранить процесс развертывания по умолчанию, предоставляемый упакованным сценарием ant, в то же время мы хотели бы добавить перенаправление с / на /ejbca в качестве некоторого типа по умолчанию для удобства пользователя. Если пользователь хочет изменить его, это делается просто путем изменения standalone.xml без необходимости повторного развертывания всего приложения.

Редактировать standalone.xml:

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
    <virtual-server name="default-host" enable-welcome-root="true">
        <alias name="localhost"/>
        <rewrite pattern="^/$" substitution="/test" flags="L,QSA,R" />
    </virtual-server>
</subsystem>
...