quinta-feira, 14 de novembro de 2019

Criando DataSource no Tomcat 7 e usando com persistence.xml e/ou hibernate.cfg.xml

     Quando criamos uma aplicação, é comum termos ambientes diferentes e/ou clientes diferentes, e isso nos traz a necessidade de fazer a nossa aplicação se conectar com bases de dados diferentes para cada ambiente/cliente. Para resolver isso de forma elegante, tiramos a responsabilidade de conhecer a URL, Usuário e Senha do Banco da aplicação e passamos para o servidor. Nesse post mostro como montar o DataSource no Tomcat. (Foi feito no Tomcat 7 que é o que uso no trabalho).


1 - Copiar as libs referentes ao Driver JDBC e c3p0 para o TomCat



Ex:

- Driver JDBC

postgresql-8.4-702.jdbc3.jar



-Lib c3p0

c3p0-0.9.1.jar



- Dependências da lib c3p0

antlr-2.7.6.jar

commons-collections-3.2.jar

dom4j-1.6.1.jar

jta-1.0.1B.jar



2 - Adicione o seguinte trecho ao arquivo web.xml (Note que o <res-ref-name> contém o mesmo nome que vamos dar a configuração do DataSource no Tomcat)



<resource-ref>

<description>DB Connection</description>

<res-ref-name>jdbc/nome_datasource</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>



Para quem usa hibernate.cfg.xml



3 - No hibernate.cfg.xml remova as informações de conexão (url, usuário e senha) e de pool, e acrescente apenas a seguinte linha:



<property name="hibernate.connection.datasource">java:/comp/env/jdbc/nome_datasource</property>



Para quem usa JPA



4 - No persistence.xml remova as informações de conexão (url, usuário e senha) e de pool, e acrescente apenas a seguinte linha:



<non-jta-data-source>java:comp/env/jdbc/nome_datasource</non-jta-data-source>



5 - Configurar o context.xml (apache-tomcat-7.0.96/conf/context.xml) do Tomcat adicionando o trecho de código abaixo



(Alterando endereço, senha e usuário do banco de acordo com o ambiente/cliente que o Tomcat está alocado)



<Resource name="jdbc/nome_datasource" auth="Container"

factory="org.apache.naming.factory.BeanFactory"

type="com.mchange.v2.c3p0.ComboPooledDataSource"

driverClass="org.postgresql.Driver"

jdbcUrl="jdbc:postgresql://x.x.x.x:5432/nome_banco"

user="usuario_bd"

password="senha_bd"

minPoolSize="10"

maxPoolSize="160" />







Fonte:



Nenhum comentário:

Postar um comentário