Hibernate fecha sessão antes

Olá Pessoal,

Será que poderiam me dar uma forcinha… Eu tenho esse filtro abaixo que abre e fecha a sessão do hibernate automaticamente, ou seja, eu não preciso ficar controlando o open e close, no código dos meus DAOs, bom tudo estava tranquilo, até eu colocar um dos meus ManagedBean como @ViewEscoped, na minha página eu tenho um <p:selectOne>, que busca uma lista de Estados no BD e quando selecionado o Estado ele lista as Cidades desse Estado, nesse exato momento é que eu recebo a exception abaixo:

Esse é o meu Filtro para Conexões com Hibernate:

public class ConexaoHibernateFilter implements Filter {

	private SessionFactory sf;
	
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
		Transaction trx = null;
		Session session = null;
		try {
			session = this.sf.getCurrentSession();
			trx = session.beginTransaction();
			chain.doFilter(servletRequest, servletResponse);
			trx.commit();
		} catch (Throwable ex) {
			ex.printStackTrace();
			
			if (trx != null && trx.isActive()){
				trx.rollback();
			}
			throw new ServletException(ex);
		} finally {
			if (session != null && session.isOpen()){
				session.close();
			}
		}
	}

Essa é a Exception:

Abr 26, 2013 10:36:03 AM com.sun.faces.lifecycle.ProcessValidationsPhase execute
WARNING: /cadastro-candidato.xhtml @137,146 value="#{portalBean.estados}": Error reading 'estados' on type br.com.sysline.views.PortalBean
javax.el.ELException: /cadastro-candidato.xhtml @137,146 value="#{portalBean.estados}": Error reading 'estados' on type br.com.sysline.views.PortalBean
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
........
........

Caused by: org.hibernate.SessionException: Session is closed!
	at org.hibernate.internal.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:129)
	at org.hibernate.internal.SessionImpl.createCriteria(SessionImpl.java:1554)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)

Ele preenche a selectOne de Cidades via ajax, será que eu tenho que forçar a abertura da session do hibernate lá no meu DAO?
Isso significa que ele não está passando pelo Filtro, correto?

Valeu pessoal…

Abs.
Marcelo

Como esse filtro sua conexão fica aberta a cada requisição? parece que não.
Nesse caso vc pode deixar a conexão aberta para cada requisição.