【问题标题】:multiple error-code configuration web.xml多个错误码配置 web.xml
【发布时间】:2011-01-15 07:08:41
【问题描述】:

我想在不明确指定所有代码的情况下将所有错误定向到我的 Errorsevlet。有没有办法做到这一点?

<error-page>
   <error-code>400</error-code>
   <location>/servlet/com.abc.servlet.ErrorServlet</location>
</error-page>

**在到达 ErrorServlet 之后,我怎样才能获得 servlet 中错误的堆栈跟踪。这样我就可以在发生一个错误时通过电子邮件发送详细信息。 **

【问题讨论】:

    标签: java servlets error-handling


    【解决方案1】:
    <error-page>
        <exception-type>java.lang.Throwable</exception-type> 
        <location>/servlet/com.ibm.eisa.servlet.ErrorServlet</location> 
    </error-page>
    

    试试这个,你的所有错误都会被捕获(500 个)而不是 404 等

    【讨论】:

    • 谢谢.. 如果我想捕获所有 400 个,那么配置如何?我应该为所有人写单独的错误页面条目吗?
    • 是的,你必须写单独的条目。
    • 有没有办法从 servlet 获取堆栈跟踪?用于发送包含详细信息的邮件...
    【解决方案2】:

    您需要明确指定所有所需的代码,不支持通配符机制。代码不多,这里是完整的list

    要打印出堆栈跟踪(例如,在注释中,出于调试目的),您可以执行以下操作:

    <%@ page isErrorPage="true" import="java.io.*"%>
    <body>
    <p>Sorry, there was an error.</p>
    <!-- The full stacktrace follows:-->
    <!-- 
    <%
    if (exception != null) {
        exception.printStackTrace(new PrintWriter(out));
    }
    %> 
    -->
    </body>
    

    【讨论】:

      【解决方案3】:

      如果您可以升级,从 Servlet 3.0 开始,可能会为 所有 错误提供通用错误页面,即使是那些不是由异常引起的错误(例如 404、401 等)。只需完全省略&lt;error-code&gt;&lt;exception-type&gt;,这样您就只有&lt;location&gt;

      <error-page>
         <location>/errorServlet</location>
      </error-page>
      

      请注意,我替换了 URL 以避免使用 Tomcat 的内置并弃用 InvokerServlet

      【讨论】:

      【解决方案4】:

      我也有同样的担忧,经过一些研究,我发现不幸的是,在 Servlet 3.0 规范中没有明确要求支持默认错误页面。

      “错误代码”或“异常类型”是 XSD 中的可选标签是一种误导,因此我们倾向于认为默认错误页面将是没有“错误代码”和“异常类型”标签的页面。

      一些应用程序服务器(例如 GlassFish)按照我们的意愿行事,采用默认错误页面,然后按照特定错误页面的顺序覆盖默认错误页面。

      我还在 WebLogic 12c 上对此进行了测试,但我无法让它像在 GlassFish 上那样工作。下面的文章提供了更多关于 Tomcat 的线索。

      参见:bz.apache.org/bugzilla/show_bug.cgi?id=52135

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-12
        • 1970-01-01
        • 2012-03-21
        • 2013-03-22
        • 2014-12-13
        • 2014-01-14
        • 1970-01-01
        • 2013-06-27
        相关资源
        最近更新 更多