Sessao hibernate

0 respostas
A

Bom dia pessoal !!!

Estou tentando adaptar esse codigo de Filter que peguei aqui mesmo no GUJ no meu sistema porem sempre uma sessao nova esta sendo criada, nunca uma sessao ja aberta do request é pega.

public class HibernateSessionFilter implements Filter {  
  
    /** 
     * Logger. 
     */  
    private static Log log = LogFactory.getLog("HibernateSessionFilter");  
  
    public static final String SESSION_KEY = "hibernateSession";  
  
    public static final String CONNECTION_KEY = "hibernateConnection";  
  
    private static final SessionFactory sessionFactory;
    
    static {
	    sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	}
    
    public void doFilter(ServletRequest req,  
            ServletResponse res, FilterChain filterChain)  
            throws ServletException, IOException {      	  
  
        /* 
         * Retrieve the session or instantiate it. 
         */  
    	
    	HttpServletRequest request = (HttpServletRequest) req;
    	HttpServletResponse response = (HttpServletResponse) res;
    	
        // nunca uma sessao é pega na linha abaixo
        Session session = (Session) request.getAttribute(SESSION_KEY);  
        Connection connection = (Connection) request  
                .getAttribute(CONNECTION_KEY);  
        if (session == null) {          	
        	
            session = sessionFactory.openSession() ;  
            request.setAttribute(SESSION_KEY, session);          
            
            System.out.println("########################### ABRIU");
            
        } else {  
          	        	
        	System.out.println("########################### ABERTA");
        	
            connection = (Connection) request.getAttribute(CONNECTION_KEY);  
            try {  
                session.reconnect(connection);  
            } catch (RuntimeException e) {  
                log.info("Already connected");  
                log.info(e);  
            }  
        }  
  
        try {  
            filterChain.doFilter(request, response);  
        }  
  
        finally {  
  
            try {  
                connection = session.disconnect();  
                request.setAttribute(CONNECTION_KEY, connection);  
                
                Statistics stats = sessionFactory.getStatistics();
                stats.setStatisticsEnabled(true);
                stats.logSummary();
                
            } catch (RuntimeException ex) {  
                log.error("Unexpected exception on closing Hibernate Session", ex);  
            }  
        }  
    }

	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

Alguem poderia me ajudar?
Desde ja agradeço.
Obrigado.

Criado 28 de novembro de 2008
Respostas 0
Participantes 1