Strict Standards: Non-static method themeGluedIdeas_Subtle::initOptions() should not be called statically in /home/riopro/www/blog.riopro.com.br/wp-content/themes/gluedideas_subtle/header.php on line 19
Riopro Blog - » Criando um dataSource no jBoss

Criando um dataSource no jBoss



Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

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!!!!

Informações e Links

Junte-se comentando, lendo o que os outros dizem ou colocando um link a partir do seu blog.


Outros Artigos

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
O Skype 1.4.0.74 no Ubuntu 7.04

Strict Standards: Only variables should be assigned by reference in /home/riopro/www/blog.riopro.com.br/wp-includes/post.php on line 117
Importando arquivos txt para a planilha do OpenOffice

Comente

Tire um tempo para comentar e nos dizer o que você acha. Alguns códigos HTML são permitidos para formatação.

Comentários dos Leitores


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

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?


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

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.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

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.


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/riopro/www/blog.riopro.com.br/wp-includes/formatting.php on line 82

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.