1 /*
2 * Created on 04/04/2005
3 *
4 */
5 package comum.database;
6
7 import java.io.IOException;
8
9 import javax.servlet.Filter;
10 import javax.servlet.FilterChain;
11 import javax.servlet.FilterConfig;
12 import javax.servlet.ServletException;
13 import javax.servlet.ServletRequest;
14 import javax.servlet.ServletResponse;
15
16 import org.apache.log4j.Logger;
17
18 /**
19 * Filtro que fecha a sessao corrente do hibernate cada vez que o Web Container processa
20 * uma pagina. O filtro e configurado no web.xml.<br>
21 *
22 * @author garten
23 * @since N/C
24 * @version N/C
25 */
26 public class FechaSessaoFilter implements Filter {
27
28 /**
29 * Construtor.<br>
30 *
31 * @author N/C
32 * @since N/C
33 * @version N/C
34 */
35 public FechaSessaoFilter() {
36 super();
37 }
38
39 /* (non-Javadoc)
40 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
41 */
42 /**
43 * Metodo de inicializacao.<br>
44 *
45 * @author N/C
46 * @since N/C
47 * @version N/C
48 * @param FilterConfig arg0
49 * @throws ServletException
50 */
51 public void init(FilterConfig arg0) throws ServletException {
52 }
53
54 /* (non-Javadoc)
55 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
56 */
57 /**
58 * Esse filtro faz pos-processamento das requisições, fechando a sessão do Hibernate.<br>
59 *
60 * @author N/C
61 * @since N/C
62 * @version N/C
63 * @Param ServletRequest request
64 * @Param ServletResponse response
65 * @Param FilterChain chain
66 * @Throws IOException
67 * @Throws ServletException
68 */
69 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
70
71 //String pagina = ((HttpServletRequest) request).getServletPath();
72 // executa a pagina e outros filtros, se existirem
73 chain.doFilter(request, response);
74
75 // por ultimo, fecha a sessao aberta.
76 try {
77 HibernateUtil.closeSession();
78 } catch (Exception e) {
79 Logger logger = Logger.getLogger(this.getClass());
80 logger.error(e);
81 HibernateUtil.clearSession();
82 }
83 }
84
85 /* (non-Javadoc)
86 * @see javax.servlet.Filter#destroy()
87 */
88 /**
89 * Metodo destrutor.<br>
90 *
91 * @author N/C
92 * @since N/C
93 * @version N/C
94 */
95 public void destroy() {
96 }
97
98 }