Ответ 1
Вам нужно сохранить index.html в папке развертывания по умолчанию и переслать запрос на ваш веб-модуль.
Например, держите следующую строку только в index.html
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/test/"/>
Я использую JBoss 6.0.
Я развернул свое веб-приложение: myApp.ear в веб-контексте: "/test". Поэтому в url-браузере, если я нахожу " http://localhost:8080/test/", я получаю свою страницу входа (myLogin.jsp).
Поскольку моя WAR существует внутри EAR файла, я указал корень контекста в файле application.xml, используя элемент контекстно-корневой внутри веб-модуля - то есть
<module>
<web>
<web-uri>myWeb.war</web-uri>
<context-root>/test</context-root>
</web>
</module>
Мой вопрос: как автоматически настроить пользователя на мое веб-приложение из "корневого контекста"?
Я имею в виду, если пользовательские типы " http://localhost:8080/", я ожидал бы, что моя страница входа в веб-приложение будет load (вместо страницы ROOT.war index.html по умолчанию JBoss).
Я удалил существующий 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.
Может ли кто-нибудь предложить, как добиться автоматического перенаправления моего веб-приложения из корневого контекста?
Вам нужно сохранить index.html в папке развертывания по умолчанию и переслать запрос на ваш веб-модуль.
Например, держите следующую строку только в index.html
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/test/"/>
Ответ от Senthil работает хорошо, но пользователь может видеть фактическое перенаправление, выполняемое браузером (страница мигает). Переадресацию можно выполнить также с помощью rewrite [1, 2] сервера JBoss, который поддерживает HTTP-переадресацию с 30-кратным кодом (не мигает).
Вы можете напрямую добавить ссылку на приложение (web.xml
, jboss-web.xml
) и указать правила переадресации в rewrite.properties
- здесь не показано.
Или вы можете изменить конфигурацию сервера самостоятельно, не касаясь оригинального приложения. Я считаю это решение удобным, потому что приложение остается нетронутым.
Случай использования. Мы используем это для EJBCA развертывания (а не нашего приложения), он устанавливает его в корневом контексте в /ejbca
. Мы хотим сохранить процесс развертывания по умолчанию, предоставляемый упакованным ant
script, в то же время мы хотели бы добавить перенаправление от /
в /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>