Package org.hibernate.tutorial.web

Source Code of org.hibernate.tutorial.web.SessionInterceptor

package org.hibernate.tutorial.web;

import java.io.IOException;

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 org.hibernate.classic.Session;
import org.hibernate.context.ManagedSessionContext;
import org.hibernate.tutorial.util.HibernateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Illustrates a servlet filter used to apply a Hibernate session
* to the "context" of the web request.
*
* @author Steve Ebersole
*/
public class SessionInterceptor implements Filter {

  private static final Logger log = LoggerFactory.getLogger( SessionInterceptor.class );

  public void doFilter(
      ServletRequest request,
      ServletResponse response,
      FilterChain chain) throws IOException, ServletException {
    log.trace( "===> opening session for request [" + request.hashCode() + "]" );
    // Start the session to be used for this request
    Session session = HibernateUtil.getSessionFactory().openSession();

    try {
      // make the session available to the session factory's "current context"
      ManagedSessionContext.bind( session );

      // pass control along to the rest of the processing chain
      chain.doFilter( request, response );
    }
    finally {
      log.trace( "===> cleaning-up session for request [" + request.hashCode() + "]" );
      // remove session from "current context"
      ManagedSessionContext.unbind( HibernateUtil.getSessionFactory() );

      try {
        session.close();
      }
      catch( Throwable t ) {
        log.warn( "was unable to properly close session for request [" + request.hashCode() + "]" );
      }
    }
  }

  public void init(FilterConfig filterConfig) throws ServletException {
  }

  public void destroy() {
  }
}
TOP

Related Classes of org.hibernate.tutorial.web.SessionInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.