Estou com um problema, preciso que o Filter redirecione para uma página de erro quando ocorrer uma exceção. Peguei um exemplo na NET (linhas em negrito), mas não funcionou.
Tentei também configurar uma pagina de erro no web.xml, mas esta parecendo esse erro:
java.lang.IllegalStateException: Cannot reset buffer after response has been committed
11:21:25,601 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at br.com.lpc.ganymede.util.HibernateSessionfilter.doFilter(HibernateSessionfilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Tentei também configurar uma pagina de erro no web.xml, mas esta parecendo esse erro:
java.lang.IllegalStateException: Cannot reset buffer after response has been committed[/quote]
Vc não tirou o resp.sendRedirect, por isso deu esse erro.
Ele redireciona sozinho, não precisa fazer nada. No caso do JSF eu faço um tratamento a mais quando o JSFContext expira:
Comentei a linha, agora está aparecendo esse erro.
14:00:31,786 ERROR [[localhost]] Exception Processing ErrorPage[exceptionType=javax.servlet.ServletException, location=/erro.jsf]
java.lang.IllegalStateException: Cannot reset buffer after response has been committed
at org.apache.catalina.connector.Response.resetBuffer(Response.java:684)
at org.apache.catalina.connector.Response.resetBuffer(Response.java:705)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:409)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:270)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Você sabe o que isso quer dizer: java.lang.IllegalStateException: Cannot reset buffer after response has been committed
17:11:48,598 ERROR [[localhost]] Exception Processing ErrorPage[exceptionType=javax.servlet.ServletException, location=/erro.html]
java.lang.IllegalStateException: Cannot reset buffer after response has been committed
at org.apache.catalina.connector.Response.resetBuffer(Response.java:684)
at org.apache.catalina.connector.Response.resetBuffer(Response.java:705)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:409)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:270)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Tentei também configurar uma pagina de erro no web.xml, mas esta parecendo esse erro:
java.lang.IllegalStateException: Cannot reset buffer after response has been committed[/quote]
Vc não tirou o resp.sendRedirect, por isso deu esse erro.
Ele redireciona sozinho, não precisa fazer nada. No caso do JSF eu faço um tratamento a mais quando o JSFContext expira:
Você sabe me informar se esse redirecionamento direto no web.xml pode ser feito tambem no JSF 1.2??
Pois eu gostaria que se por algum motivo fosse lancada uma Exceção na minha aplicação fosse feito o redirecionamento para uma pagina. Meu web.xml esta assim
com esse trecho no meu web.xml o stackTrace não é mais exibido no navegador, porem a pagina exibida é a pagina de erro do navegador e não a especificada no meu web.xml…