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

jav*_*r71 14 jboss redirect contextpath

我正在使用JBoss 6.0.

我已经在web-context下部署了我的Web应用程序: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>
Run Code Online (Sandbox Code Playgroud)

我的问题是如何从"根上下文" 自动将用户引导到我的网络应用程序?

我的意思是如果用户键入" http:// localhost:8080 / ",我希望加载我的web应用程序的登录页面(而不是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实现自动直接到我的网络应用程序?

Sen*_*hil 26

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

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

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/test/"/> 
Run Code Online (Sandbox Code Playgroud)


ph4*_*r05 5

Senthil的答案很好,但是用户可以看到浏览器完成的实际重定向(页面闪烁)。重定向也可与重写[来完成12 ] JBoss服务器的功能,该功能支持HTTP重定向用30X码(无闪烁)。

您可以将重写直接添加到应用中(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>
Run Code Online (Sandbox Code Playgroud)