Oi gente, to tentando fazer um sistema de login de usuarios usando um Filtro, minha aplicação é feita em JSF e Hibernate, porém toda vez que inicializo ela, obtenho um erro
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.setBufferSize(ResponseFacade.java:232)
at com.sun.faces.context.ExternalContextImpl.setResponseBufferSize(ExternalContextImpl.java:799)
at javax.faces.context.ExternalContextWrapper.setResponseBufferSize(ExternalContextWrapper.java:741)
at com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:265)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:125)
at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:125)
at org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:262)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:407)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.salesianos.acao.LoginFiltro.doFilter(LoginFiltro.java:49)
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:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
porém o programa ainda funciona, mas eu gostaria de saber qual a causa deste erro? alguém teria alguma ideia?
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The bare minimum needed for JSF 2.0 is a servlet 2.5
declaration and the mapping for the FacesServlet.
Setting PROJECT_STAGE to Development is highly recommended
during initial development so that you get more helpful
error messages.
From JSF 2.0 tutorial at http://www.coreservlets.com/JSF-Tutorial/jsf2/
-->
<filter>
<filter-name>LoginFiltro</filter-name>
<filter-class>br.salesianos.acao.LoginFiltro</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFiltro</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>org.richfaces.skin</param-name>
<param-value>#{skinBean.skin}</param-value>
</context-param>
</web-app>
LoginFiltro.java
package br.salesianos.acao;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author fabio.guimaraes
*/
public class LoginFiltro implements Filter {
private static final boolean debug = true;
// The filter configuration object we are associated with. If
// this value is null, this filter instance is not currently
// configured.
private FilterConfig filterConfig = null;
public LoginFiltro() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String url = req.getRequestURL().toString();
Object logged = req.getSession().getAttribute("usuariologado");
if(logged == null || ((Boolean)logged).booleanValue() == false){
if(!url.contains("login")) {
resp.sendRedirect("login.jsf");
}
}
try {
chain.doFilter(request, response);
}
catch(Throwable t) {
// If an exception is thrown somewhere down the filter chain,
// we still want to execute our after processing, and then
// rethrow the problem after that.
t.printStackTrace();
}
}
/**
* Destroy method for this filter
*/
public void destroy() {
}
/**
* Init method for this filter
*/
public void init(FilterConfig filterConfig) {
}
}
login.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/template/principal.xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<ui:define name="menu">
<div class="menuEntrada" >
Por favor, forneça <br/>
seus dados para <br/>
ter acesso ao sistema.
</div>
</ui:define>
<ui:define name="body">
<div align="center">
<h1>Bem-Vindo</h1>
<h:form id="FormLogin">
<table>
<tr>
<td>Digite seu Login:</td>
<td><h:inputText rendered="true" id="loginname" value="#{gravaUsuario.usu_nome}" /></td>
</tr>
<tr>
<td colspan="2"><h:message styleClass="mensagemErro" for="loginname" /></td>
</tr>
<tr>
<td>Digite sua senha:</td>
<td><h:inputSecret rendered="true" id="password" value="#{gravaUsuario.usu_senha}" /></td>
</tr>
<tr>
<td colspan="2"><h:message styleClass="mensagemErro" for="password" /></td>
</tr>
<tr>
<td></td>
<td><a4j:commandButton id="logar" value="Acessar" action="#{gravaUsuario.fazerLogin}" /></td>
</tr>
</table>
<br/>
<rich:message styleClass="mensagemErro" for="logar" />
<br/>
</h:form>
</div>
</ui:define>
</ui:composition>
GravaUsuario.java(parte dele)
public String fazerLogin() {
Criteria c = sessao.createCriteria(Usuario.class);
Criterion _login = Restrictions.eq("usu_nome", getUsu_nome());
c.add(_login);
Criterion _senha = Restrictions.eq("usu_senha", getUsu_senha());
c.add(_senha);
System.out.println("resultado: "+_login+" - "+getUsu_nome());
boolean validated;
if (c.uniqueResult() != null) {
validated = true;
}
else
validated = false;
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("usuariologado", validated);
if(validated)
return "secBemVindo";
else
FacesContext.getCurrentInstance().addMessage("FormLogin:logar", new FacesMessage("Login ou senha incorretos!"));
return "login";
}

