Olá
Creio que esse exemplo que você citou sempre retorna uma nova conexão. Para pegar uma já existente, você precisa usar um pool.
Tenho uma dúvida parecida com a sua: quando utilizamos uma implementação de DataSource (por exemplo, SQLServerDataSource) para obter uma conexão, esta conexão é “pooled”?
Abraços
Giulliano
Ele sempre abre uma nova conexão.
Se vc utilizar pools de conexão. Ele sempre pegara uma conexão do Pool.
para isso vc deve ter um arquivo chamado context.xml no seu META-INF com os seguintes dados:
publicstaticConnectiongetConnection()throwsSQLException{Connectioncon=null;try{initDataSource();// se der exceção a fonte não existeif(con==null||con.isClosed()){con=dataSource.getConnection();}}catch(NamingExceptione){System.out.println("ERROR: O nome JNDI "+FONTE+". Não foi encontrado!");}returncon;}privatestaticvoidinitDataSource()throwsNamingException{InitialContextic=newInitialContext();if(dataSource==null)dataSource=(DataSource)ic.lookup("java:comp/env/"+FONTE);}
Até onde eu sei é assim que funciona…pelo menos no Tomcat
[]'s
jason_bourne
Giulliano:
Ele sempre abre uma nova conexão.
Se vc utilizar pools de conexão. Ele sempre pegara uma conexão do Pool.
para isso vc deve ter um arquivo chamado context.xml no seu META-INF com os seguintes dados:
publicstaticConnectiongetConnection()throwsSQLException{Connectioncon=null;try{initDataSource();// se der exceção a fonte não existeif(con==null||con.isClosed()){con=dataSource.getConnection();}}catch(NamingExceptione){System.out.println("ERROR: O nome JNDI "+FONTE+". Não foi encontrado!");}returncon;}privatestaticvoidinitDataSource()throwsNamingException{InitialContextic=newInitialContext();if(dataSource==null)dataSource=(DataSource)ic.lookup("java:comp/env/"+FONTE);}
Até onde eu sei é assim que funciona…pelo menos no Tomcat
[]'s
No seu exemplo eu tenho q usar no if isso aqui tb?con.isClosed()…só o con == null não esta bom?
ddduran
depende muito da sua aplicação, tem gente que usa simgleton para objetos de conexõa, mas eu não recomento.
Geralmente em aplicações web eu uso uma conexão por thread local, seria algo assim:
publicstaticConnectiongetConnection()throwsSQLException{Connectioncon=null;try{initDataSource();// se der exceção a fonte não existeif(con==null||con.isClosed()){con=dataSource.getConnection();}}catch(NamingExceptione){System.out.println("ERROR: O nome JNDI "+FONTE+". Não foi encontrado!");}returncon;}privatestaticvoidinitDataSource()throwsNamingException{InitialContextic=newInitialContext();if(dataSource==null)dataSource=(DataSource)ic.lookup("java:comp/env/"+FONTE);}
Até onde eu sei é assim que funciona…pelo menos no Tomcat
[]'s
No seu exemplo eu tenho q usar no if isso aqui tb?con.isClosed()…só o con == null não esta bom?
no caso dele que sempre inicializa a conexão como null não precisaria, mas no meu sim