Boas Práticas

1 resposta
tucamefe

Pessoal,
Eu tenho uma classe utilitária para obter uma conexões do banco de dados por um Datasource. Estou usando o servidor JBoss e queria tirar uma dúvida de qual seria a melhor forma de boas práticas de programação.
O problema é que tenho o seguinte trecho de código:

public static Connection getConnection() {
         Connection conn = null;
         DataSource ds = null;

         try {
                Context ctx = new InitialContext();
	Object obj = ctx.lookup("java:meuds");
	ds = (DataSource) narrow(obj, DataSource.class);

	conn = ds.getConnection();
         } catch (Exception e) {
                e.printStackTrace();
         }
                return conn;
	
         }

Eu preciso toda vez executar esse trecho do código :?:

Context ctx = new InitialContext();
     Object obj = ctx.lookup("java:meuds");
     ds = (DataSource) narrow(obj, DataSource.class);

Ou posso obter o data source apenas uma vez, ou tada vez que invocar o método ele deverá executar esse código :?:

Obrigada,

1 Resposta

P

Vc. até pode guardar o datasource e evitar novo lookup a cada
vez que precisar de uma conexão, mas eu não recomendo simplesmente guardar e nada mais.

O motivo é que, caso seja necessário “virar” o banco para outro servidor, ou mesmo outro tipo de manobra que implique em alterar os parâmetros do pool de conexões ao qual seu objeto está apontando, é bem possível que seu objeto não consiga mais retornar conexões.

Um compromisso interessante é usar o ds armazenado em algum lugar da sua aplicação e, caso o getConnection() volte um erro, invalidar o DS e implementar um retry.

Quanto ao narrow(): é inútil. É uma reminiscência do CORBA, no fundo…

Criado 13 de abril de 2007
Ultima resposta 13 de abr. de 2007
Respostas 1
Participantes 2