Criando um dataSource no jBoss

O jBoss é um servidor de aplicações JEE muito conhecido no mercado. Muitas vezes, porém, vejo posts nos fóruns (como o guj e o javafree) com dúvidas a respeito de como criar e chamar dataSources dentro desse servidor de aplicações.

Para o nosso how-to, vamos utilizar o postgreSQL, mas poderia ser outro como o MySQL, Oracle, entre outros. A primeira coisa é o conector JDBC. O conector tem que estar disponível para o jBoss antes de levantar a o dataSource. Nesse caso, não adianta colocar a jar no lib do seu deploy war (note bem war, ear é um pouco diferente), pois ele vai tentar disponibilizar o dataSource antes. Até porque o dataSource é disponibilizado para o JNDI e não como exclusividade da sua aplicação (aqui vai um outro senão, é possível colocar restrições de segurança para utilização desse dataSource, mas não vamos abordar isso nesse artigo).

Sem mais delongas, se você levantou o jBoss pelo run padrão, você provavelmente estará utilizando o diretório default do jBoss. Por isso, sugiro colocar a jar JDBC do postgreSQL (no nosso caso postgresql-8.1-407.jdbc3.jar) no diretório:

{DIRETORIO_DO_JBOSS}/server/default/lib/

Em seguida, coloque no diretório:

{DIRETORIO_DO_JBOSS}/server/default/deploy/

Um arquivo MEU_DATASOURCE-ds.xml (substitua MEU_DATASOURCE por algo conveniente). O conteúdo desse arquivo (seguindo uma configuração mínima) seria:

<? xml version="1.0" encoding="UTF-8" ?>
<datasources>
<local-tx-datasource>
<jndi-name>
jdbc/NOME_DO_DATASOURCE
</ jndi-name>
<connection-url>
jdbc:postgresql://NOME_DO_SERVIDOR:5432/NOME_DO_BANCO?charSet=LATIN1
</ connection-url>
<driver-class>
org.postgresql.Driver
</ driver-class>
<user-name>
USUARIO
</ user-name>
<password>
SENHA
</ password>
<min-pool-size>
5
</ min-pool-size>
<max-pool-size>
30
</ max-pool-size>
<idle-timeout-minutes>
1
</ idle-timeout-minutes>
<prepared-statement-cache-size>
32
</ prepared-statement-cache-size>
</ local-tx-datasource>
</ datasources>

E assim, o seu dataSource está pronto para ser acessado. Para quem, como eu, usa o Tomcat para desenvolvimento local, só mais uma modificação. Para chamar o dataSource:

protected static DataSource dataSource;
private Connection pegaConexao(){
Context ic = new InitialContext();
Connection con = null;
dataSource = (DataSource) ic.lookup("java:jdbc/NOME_DO_DATASOURCE");
con = dataSource.getConnection();
}

Bom uso!!!!

4 opiniões sobre “Criando um dataSource no jBoss”

  1. Ok otavio, para um data Source funciona legal! Mas como fazer para colocar a jndi de um atributo string por exemplo. Quero configurar minha aplicação para buscar o endereço principal via jndi.
    por Exemplo:

    java:comp/env/systemAddress

    aonde configuraria isso?

  2. Só na sua aplicação? Porque não usar um arquivo .properties?

    Se não for isso, procure por MBean (ou managed beans) e você pode criar um “EJB gerenciado pelo jBoss” que tenha apenas getters e setters que você inicializaria com os valores desejados.

  3. Tem que ser em uma jndi porque os caras querem configurar isso independente do war da aplicação. E nesse projeto eu não uso EJB pq o mesmo não é necessário!

    Procurei em alguns links que dizem q basta adicionar ao server.xml essas jndi, mas infelizmente não funcionou.

  4. Porque você não levanta um javabean da sua aplicação através do mbean setando os valores padrão do seu mbean no arquivo de configuração. Aí, ao chamar o mbean por jndi a aplicação cliente chama um get qualquer da classe e pronto. O mesmo bean pode até ter vários nomes jndi para diferentes aplicações.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *