如何从JBoss中的“root(/)”上下文自动指向“我的Web应用程序”?

时间:2011-04-18 21:38:09

标签: redirect jboss contextpath

我正在使用JBoss 6.0。

我已在网络环境下部署了我的网络应用程序: myApp.ear :“ / test ”。 所以在browser-url中,如果我输入“ http://localhost:8080/test/ ”,我会得到我的登录页面(myLogin.jsp)。

由于我的WAR存在于EAR文件中,因此我使用Web模块内部的 context-root 元素在 application.xml 文件中指定了上下文根 - 即

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

我的问题是如何从“root context”自动指向用户到我的网络应用程序?

我的意思是如果用户输入“ http://localhost:8080/ ”,我希望加载我的网络应用程序的登录页面(而不是JBoss的默认ROOT.war的index.html页面)。

我从 {JBOSS} \ server \ default \ deploy \ ROOT.war 删除了现有的 index.html ,并在那里创建了一个login.jsp。现在我可以看到当我输入http://localhost:8080/时会调用“login.jsp”。但我无法将用户请求重定向到我的网络应用程序的登录页面。

在那个login.jsp中,我尝试过:  <jsp:forward page="/test" />,但我收到错误:“HTTP状态404 - / test”。

如果我调用<jsp:forward page="/test/myLogin.jsp" />,我仍会收到相同的404错误。

任何人都可以建议如何从root-context实现自动指向我的网络应用程序吗?

2 个答案:

答案 0 :(得分:26)

您需要将index.html保留在默认部署文件夹中并将请求转发到您的Web模块。

例如,仅在index.html中保留以下行

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/test/"/> 

答案 1 :(得分:4)

Senthil的答案很好用,但用户可以看到浏览器完成的实际重定向(页面闪烁)。重定向也可以通过JBoss服务器的重写[12]功能来完成,它支持具有30x代码的HTTP重定向(不闪烁)。

您可以直接将重写添加到您的应用中(web.xmljboss-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>