Conexao permanete em ServLEt

2 respostas
cesalvador

:shock:

Quem poderia me ajudar ?

Tenho 3 ServLet , o primeiro faz uma conexao com o banco de dados pedindo usuário e senha o segundo é uma tela de cadastro o terceiro é uma mensagem se o cadastro foi efetuado correto, o que gostaria de fazer é manter uma unica conexao e o meu segundo servlet consegui-se enchegar ela, sem precisar fazer outra conexao. Alguem tem algum codigo de exemplo ?

Grato

2 Respostas

maxguzenski

Você precisa de uma camada de persistencia…
OJB (jakarta.apache.org/ojb)

tambem pode se montar uma camada maios simples de persistencia utilizando JNDI …
eu nao tenho nenhum exemplo aqui… .mas procura no google por JNDI e DataSource que vc acha!

:slight_smile:

claudio

Ola Amigo,

bom, qual eh a sua ideia: eh apenas testar se tem como? ou eh fazer do jeito certo?

-se for teste:

eu usei uma vez com alguns alunos um atributo na servlet que era uma conexao com o banco, isso eh extremamente nao recomendado na pratica (ESTA ERRADO MESMO), mas era apenas um exemplo onde eu focava o MVC, logo naquele instante do treinamento nao tinha problema ter uns erros de design, ele funcionava assim:

Na minha servlet tinha esse atributo do tipo java.sql.Connection e tb tinha um metodo sincronizado chamado getConnection, quando alguem o chama-va ele via se tinha uma conexao, se a mesma se encontrava aberta, caso nao ele abria uma nova e colocava la e no fim retornava a conexao.

Entao durante a execucao da servlet (service/doGet/doPost/doXX) quando eu precisava ir ao db eu chamava getConnection e a usava assim

... doPost(...,...){
     ...
     Connection cnn = getConnection();

     synchronized(cnn){
        //usa a cnn
        ....
     }
  }

isso me possibilitava ter apenas uma conexao.

-do jeito certo:

vc deve usar um pool de conexoes, um pool eh um objeto que quando eh usado pela primeira vez abre um determinado numero de conexoes e as matem abertas, melhorando a performance pois elimina o chamado handshake (tempo perdido em autenticacao), ai quando vc precisa de uma conexao vc pede ao pool. O Tomcat vem com um pool, de uma olhada na Documentacao.

Abraco,

Criado 24 de abril de 2003
Ultima resposta 24 de abr. de 2003
Respostas 2
Participantes 3