Criar conexão em Filter para passar para as response

0 respostas
Jniorsandro

Olá, em meu curso aprendi diretamente com o professor, que eu deveria criar e instanciar minha conexão em um FILTER que passa para todas as páginas acessadas em um web project.

java.sql.Connection c = new Conexao().GO();
        request.setAttribute("connection", c);
        if(c != null){
            chain.doFilter(request, response);
            
        } else {
            System.out.println("falha na conexao - sem acesso ao banco de dados");
        }
        
        try {
            c.close();

        } catch (SQLException e) {
            System.out.println("erro metodo doFilter - classe Conecta (filter)");
        }

Assim está meu filter por enquanto. O problema é que a conexão não está fechando. Só fecha após o projeto ser finalizado. Isso pode causar inumeros problemas (mesmo com a conexão ficando em sleep no bd).

A questão é, devo realmente criar a conexão no meu filter, e tentar resolver a questão dela não estar fechando, ou seria mais correto criar a conexão em minhas classes DAO apenas nos métodos que eu utilizo a conexão, e nele já fechar a conexão? (Creio que neste segundo caso ela fecharia corretamente).

Pode ser que o professor só tenha ensinado a montar a conexão via FILTER para ensinar a turma a usar um filter... Ou será que é realmente "mais correto" deixar a conexão no próprio filter?

(obs: cada vez que eu abro uma página, este filter é chamado várias vezes, não sei porque. Deveria estar sendo chamado apenas 1x pela lógica. E se eu não dou o c.close, fica várias conexões abertas. Com o c.close fica apenas 1 conexão aberta por aba acessada)

Criado 14 de agosto de 2016
Respostas 0
Participantes 1