Verstecken/verarbeiten servlet-Ausnahme-stack-trace-Ausgabe

Vom diese post habe ich gedacht eine andere Frage, die ich kann nicht scheinen, um herauszufinden, die Antwort auf die interweb.

Ich habe einen servlet-filter, der erkennt, session timeouts und leitet auf eine Fehlerseite. Aufgrund meines noch Jungen java habe ich schon benutzt, try catch-Blöcke zum abfangen von Ausnahmen und behandeln Sie Sie vorsichtig, aber in einem session-timeout-situation, der Kontext ungültig ist, so glaube ich nicht, ich habe alle Codes die ich kann tun mit denen aufhören, die "viewId konnte nicht wiederhergestellt werden' stace trace erscheint in meinem log, obwohl ich einen filter handling.

Wie kann ich verhindern, dass die Ausnahme-trace erscheint in meinem log? Es wird überwacht, autoamtically im Leben, und es wird eine false-positive-rufen Sie das support-team für diese Art von Fehler.

Jede Hilfe dankbar.

BEARBEITEN

Mehr klar, mein code-clip ist derzeit

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
    try {
        chain.doFilter(request, response);
    } catch (ServletException e) {
        logger.error("Caught Servlet Exception");
        Throwable rootCause = e.getRootCause();
        logger.error("Root cause is " + rootCause.toString());

        if (rootCause instanceof RuntimeException) { //This is true for any FacesException.
            logger.error("Rethrowing exception as RuntimeException" + rootCause.toString());
            throw (RuntimeException) rootCause; //Throw wrapped RuntimeException instead of ServletException.
        } else {
            throw e;
        }
    }
}

Sagt der log:

    |STDOUT| 2011-01-19 10:40:57,803 | ERROR | [http-8080-5]: Exception in the filter chain
    javax.servlet.ServletException: viewId:/index.jsf - View /index.jsf could not be restored.
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
        at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
<snip>
        at java.lang.Thread.run(Unknown Source)
    Caused by: javax.faces.application.ViewExpiredException: viewId:/index.jsf - View /index.jsf could not be restored.
<snip>
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        ... 21 more
    19-Jan-2011 10:40:57 org.apache.catalina.core.StandardWrapperValve invoke
    SEVERE: Servlet.service() for servlet Faces Servlet threw exception
    javax.faces.application.ViewExpiredException: viewId:/index.jsf - View /index.jsf could not be restored.
        at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:185)
<snip>
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Unknown Source)
    |STDOUT| 2011-01-19 10:40:57,803 | ERROR | [http-8080-5]: Caught Servlet Exception
    |STDOUT| 2011-01-19 10:40:57,803 | ERROR | [http-8080-5]: Root cause is javax.faces.application.ViewExpiredException: viewId:/index.jsf - View /index.jsf could not be restored.
    |STDOUT| 2011-01-19 10:40:57,803 | ERROR | [http-8080-5]: Rethrowing exception as RuntimeExceptionjavax.faces.application.ViewExpiredException: viewId:/index.jsf - View /index.jsf could not be restored.

Als Sie aus dem code sehen können, habe ich gefangen die servlet-Ausnahme in den filter, aber der stack ist immer noch erscheinen im Protokoll.

WEITER BEARBEITEN
Die komplette Liste der Filter, in meinem web.xml ist wie folgt:

<filter>
    <filter-name>Error</filter-name>
    <filter-class>prismClient.ErrorFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Error</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <display-name>RichFaces Filter</display-name>
    <filter-name>richfaces</filter-name>
    <filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
    <filter-name>richfaces</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
InformationsquelleAutor volvox | 2011-01-19
Schreibe einen Kommentar