我使用的是JBoss 6.0。
我已部署Web应用程序:myApp.ear在网络环境下:“/test"。因此,如果我在浏览器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>
我的问题是如何将用户从“根上下文”自动定向到我的Web应用程序?
我的意思是,如果用户键入“http://localhost:8080/",我将期望加载Web应用程序的登录页面(而不是JBoss的默认ROOT.war的index.html页面)。
我从**{JBOSS}\server\default\deploy\ROOT.war中删除了现有的index.html**,并在那里创建了一个login.jsp。现在我可以看到,当我键入http://localhost:8080/时,“login.jsp”被调用了。但是我无法将用户请求重定向到我的Web应用的登录页面。
在该login.jsp中,我尝试了:<jsp:forward page="/test" />
,但出现错误:“HTTP状态404 - /测试”。
如果我像<jsp:forward page="/test/myLogin.jsp" />
那样调用,我仍然会得到同样的404错误。
有人能建议如何实现从根上下文自动定向到我的Web应用程序吗?
3条答案
按热度按时间kmbjn2e31#
您需要将index.html保存在默认部署文件夹中,并将请求转发到Web模块。
例如,仅在index.html中保留以下行
14ifxucb2#
Senthil的答案很好用,但是用户可以看到浏览器实际完成的重定向(页面闪烁)。重定向也可以通过JBoss服务器的rewrite [1,2]功能来完成,该服务器支持30 x代码的HTTP重定向(没有闪烁)。
您可以直接将重写添加到您的应用(
web.xml
,jboss-web.xml
),并在rewrite.properties
中指定重定向规则-此处未显示。或者,您可以在不接触原始应用程序的情况下自行修改服务器配置。我发现这种解决方案很方便,因为应用程序保持不变。
使用案例:我们将其用于EJBCA部署(不是我们的应用),它会将上下文根设置为
/ejbca
。我们希望保留打包的ant
脚本提供的默认部署流程,同时,我们希望添加从/
到/ejbca
的重定向作为某种默认设置,以便于用户使用。如果用户希望更改它,只需修改standalone.xml
即可完成,而无需重新部署整个应用程序。编辑
standalone.xml
:ct2axkht3#
这对我在Wildfly 26.1.1和JBoss EAP 7.4上起作用。
它看起来很多,但实际上不是。我的解决方案显示了默认配置,我只需要添加
<filters>
部分和<filter-ref>
。请注意
<filters>
部分必须在<server>
之上,否则JBoss将在启动时抱怨。这在https://access.redhat.com/solutions/2996371中没有记录,但毕竟我找到了https://docs.wildfly.org/19/wildscribe/subsystem/undertow/index.html。在
jboss-cli
中,这意味着:自动生成的standalone.xml的结构与上面的不完全相同,但也能正常工作。