A grande maioria das aplicações web necessita acessar banco de dados. Em muitos casos a conexão com o banco de dados se torna uma gargalo e gerenciar um pool de conexões dentro de nossa aplicação pode ser um pouco complicado. Em servidores de aplicação/web container este recurso é disponibilizado por meio de uma implementação de Datasource, no Tomcat especificamente é baseado no pool de conexão DBCP do projeto Commons.
Então vamos criar um Datasource no Tomcat, mas antes de tudo, não se esqueça de colocar o jar do driver de conexão na pasta lib de sua aplicação, ou confirme que ele está presente na pasta lib do Tomcat.
Primeiro iremos configurar o recurso do Datasource no nosso Context. Vale lembrar que está configuração pode ser feita no contexto da aplicação “/META-INF/context.xml” sendo esta configuração disponível somente para a aplicação, ou ser feita no “CATALINA_HOME/conf/context.xml” que torna a configuração disponível para todas as aplicações do servidor.
<Context> <Resource maxTotal="10" maxIdle="4" maxWaitMillis="15000" name="jdbc/banco_java" auth="Container" type="javax.sql.DataSource" username="root" password="1234" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/java" /> </Context>
Os detalhes da configuração são os seguintes:
maxTotal: O número máximo de conexões do banco de dados no pool ao mesmo tempo. Tenha certeza que sua configuração do mysqld(max_connections) é capaz de lidar com todas estas conexões. Para conexões ilimitadas limite utilize -1.
maxIdle: O número máximo de conexões ociosas retidas no pool. Para conexões ilimitadas limite utilize -1.
maxWaitMillis: Máximo de tempo de espera para uma conexão ao banco de dados se tornar disponível(em ms), no exemplo acima 15 segundos. Uma exceção é lançada se o tempo for esgotado. Para não utilizar limite utilize -1.
name: O nome JNDI do recurso a ser criado.
type: O nome canônico da classe esperada pela aplicação web quando esta realizar o lookup para este recurso.
auth: Especifica se a aplicação irá lidar com o recurso ou o Container. Os valores possíveis são Application ou Container.
username e password: O nome de usuário e senha para a conexão ao banco de dados.
driverClassName: Nome da classe do drive jdbc de conexão a ser utilizado. Neste caso o driver mysql.
url: A url de conexão para seu banco de dados.
O próximo passo é configurar o “/WEB-INF/web.xml” de nossa aplicação.
<resource-ref> <res-ref-name>jdbc/banco_java</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
Agora para o código da nossa aplicação para recuperar um conexão do pool:
InitialContext contexto = new InitialContext(); DataSource dataSource = (DataSource) contexto.lookup("java:comp/env/jdbc/banco_java"); Connection connection = dataSource.getConnection(); ... connection.close();
Na lina 1 criamos um objeto de contexto para realizar “naming operations”. Na linha 2 utilizamos este contexto para buscar o recurso pelo seu nome, lembrando que o nome que utilizamos ao configurar o recurso no contexto deve ser precedido por “java:comp/env”, assim obtemos um objeto DataSource através do método lookup que iremos utilizar na linha 3 para obter as conexões ao banco de dados do pool, para realizar nossas consultas.
Não se esqueça de após realizar todas consultas necessárias fechar a conexão para retorná-la para o pool, caso contrário pode atingir o número máximo de conexões do pool rapidamente.
Era isso T+ pessoal.
0sem comentários ainda