错误页面在jboss上的预期工作不如7.1.1

时间:2013-12-27 13:25:52

标签: java servlets exception-handling jboss web.xml

我已经将我的Web应用程序配置为根据异常类型显示一些错误页面,但问题是如果我为java.lang.Exception配置一般错误页面,则每个异常都会重定向到此通用错误页面。 / p>

我的web.xml文件:

<!-- error pages -->
<error-page>
    <exception-type>org.apache.shiro.authz.UnauthorizedException</exception-type>
    <location>/acesso-nao-autorizado</location>
</error-page>
<error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/login/</location>
</error-page>
    <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/erro</location>
</error-page>

如您所见,我有两个特定的异常类型,而不是java.lang.Exception作为最后一个资源。如果我删除最后一个条目,则每个异常都会将用户重定向到正确的视图。但是对于最后一个条目,引发异常的类型无关紧要,用户将始终被重定向到/ error。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据Servlet Spec 3.0(第10.9.2节):

  

“Web应用程序可能使用exception-type元素声明了错误页面。在这种情况下,容器通过将抛出的异常与使用{error-page的{​​{1}}定义列表进行比较来匹配异常类型1}} element。匹配导致容器返回exception-type条目中指示的资源。类层次结构中最接近的匹配获胜。“

所以你正在做的事情应该工作......你的location元素的顺序无关紧要。 (JBoss 6.0.0及更高版本支持Servlet Spec 3.0 ...)

我的建议:

  • 检查异常确实是您期望的那个。

  • 检查是否由于其他原因导致重定向错误页面;例如特定错误页面自己抛出异常。

  • 检查JBoss问题跟踪器是否存在相关错误。