Criando um DataSource no JBoss 7

Nesse post serão apresentados quais passos devem ser seguidos para a criação e configuração de um DataSource no JBoss 7. Como exemplo, será utilizado o banco de dados MySQL e o servidor de aplicações JBoss 7.1.0-Final. Também estará sendo usado o modo standalone do JBoss, caso prefira usar o modo domain, basta alterar as pastas citadas no post pelas respectivas do modo domain.

Criação do módulo com o driver JDBC do MySQL

A primeira grande mudança em relação às versões anteriores é que as bibliotecas que o desenvolvedor deseja implantar no JBoss não são mais simplesmente consideradas “libs”, onde bastava copiar o .jar para uma determinada pasta e usar os serviços providos pelo mesmo. Agora qualquer lib é considerada um módulo para o JBoss, assim como os próprios serviços internos do servidor, como por exemplo serviço de mensageria. Para configurar o módulo do driver JDBC do MySQL, deve-se:

  • Fazer o download do driver JDBC do banco desejado (no caso do mysql, pode ser obtido em http://dev.mysql.com/downloads/connector/j/)
  • Criar a pasta com/mysql/main dentro de JBOSS_HOME/modules
  • Copiar o driver JDBC para a pasta recém criada
  • Ainda dentro dessa pasta (JBOSS_HOME/modules/com/mysql/main/), criar um arquivo chamado module.xml com o seguinte conteúdo (levando em consideração que mysql-connector-java-5.1.17-bin.jar é o nome do driver usado):
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.mysql">
	<resources>
		<resource-root path="mysql-connector-java-5.1.17-bin.jar"/>
	</resources>
	<dependencies>
		<module name="javax.api"/>
	</dependencies>
</module>

Esse arquivo é responsável por fazer o registro do módulo no JBoss e ele informa onde está o módulo (com.mysql), qual o nome do arquivo do módulo e quais são suas dependências.

Existe ainda outra forma de se configurar o driver, mas como essa apresentada é a mais recomendada, o post falará somente sobre essa opção.

Pronto, com isso o módulo já está disponível e o DataSource já pode ser configurado.

Configurando o DataSource

No JBoss 7 não existe mais a estrutura antiga de vários arquivos de configurações espalhados pelos diretórios. Ao invés disso, existe apenas um arquivo com todas as conigurações necessárias: JBOSS_HOME/standalone/configuration/standalone.xml. É nesse arquivo que todos os serviços são configurados, como JMS, Logging, DataSources, entre outros.

Para configurar o DataSource, abra o arquivo de configuração, vá até a seção referente ao subsistema de datasource (<subsystem xmlns=”urn:jboss:domain:datasources:1.0″>) e adicione um novo <datasource> dentro de <datasources>:

<datasource jta="true" jndi-name="java:/test-ds" pool-name="test"
	enabled="true" use-java-context="true" use-ccm="true">
	<connection-url>jdbc:mysql://localhost:3306/nomedb</connection-url>
	<driver>com.mysql</driver>
	<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
	<pool>
		<min-pool-size>5</min-pool-size>
		<max-pool-size>30</max-pool-size>
		<prefill>true</prefill>
		<use-strict-min>false</use-strict-min>
		<flush-strategy>FailingConnectionOnly</flush-strategy>
	</pool>
	<security>
		<user-name>usuario</user-name>
		<password>senha</password>
	</security>
	<statement>
		<prepared-statement-cache-size>32</prepared-statement-cache-size>
	</statement>
</datasource>

Os atributos de configuração do <datasource> são bem parecidos com as versões anteriores, um detalhamento de cada um pode ser encontrado aqui

E logo abaixo, na parte de <drivers>, é necessário adicionar o driver do MySql (que foi cofigurado anteriormente):

<driver name="com.mysql" module="com.mysql">
	<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>

Nesse ponto o DataSource já está pronto para ser utilizado na sua aplicação, mas se preferir existe outra opção para configuração do DataSource…

Para quem está acostumado a criar um arquivo *-ds.xml no JBoss para fazer a configuração do DataSource, pode estranhar um pouco a abordagem apresentada e essa era a única disponível através de configuração antes da liberação da última versão (7.1.0-Final). Com sua liberação, o pessoal da Red Hat/JBoss voltou a dar a opção de se criar um arquivo com sufixo *-ds.xml na pasta JBOSS_HOME/standalone/deployments. Lembrando que isso só é válido para a seção <datasource>, a seção <driver> continua sendo configurada no arquivo de configuração principal, como mostrado acima. Então, se preferir essa abordagem, basta remover o <datasource> que foi criado no arquivo standalone.xml e criar um arquivo mysql-ds.xml (pode ser qualquer nome que termine com -ds.xml) na pasta deployments, com o seguinte conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
	<!-- Declaração do <datasource> aqui é idêntica à apresentada acima -->
</datasources>

O legal dessa abordagem é que é possível criar arquivos com DataSource dentro da sua própria aplicação, o que facilita a criação de DataSources para execução de testes automatizados.

Apenas para informação, existe também a opção de se criar/configurar um DataSource programaticamente, através da anotação @DataSourceDefinition.

É isso, agora o DataSource já pode ser usado normalmente por sua aplicação, independente da abordagem adotada.


Quer aprender muito mais? Não deixe de ver meu curso Construa uma aplicação do zero com JEE 7, Java 8 e Wildfly.

Esta entrada foi publicada em JBoss com as etiquetas , , , , . ligação permanente.

23 respostas a Criando um DataSource no JBoss 7

  1. Parabéns cara, ficou bem melhor que a maiorias dos post que eu vi por ai sobre DS no JBoss AS 7, inclusive o que eu tinha feito rsrs
    Abraço.

  2. Pingback: Testando aplicações JEE6 com Arquillian | Software, Java e Arquitetura

  3. Ricardo Martins diz:

    Luciano ,
    O post ficou excelente totalmente objetivo e bem escrito. Parabéns
    Abraço.

  4. Igor diz:

    Cara muito obrigado pelo tutorial, quebrou um galhão, muito bom mesmo.

  5. André Luiz diz:

    Muito bom o post tive uma boa ideia de como fazer, mas estou quebrando a cabeça para criar o datasource para firebird… se poderem ajudar agradeço..

  6. Marcelo diz:

    Bah, Perfeito este post, amigo!
    Ficou realmente muito claro e fácil de configurar.
    Consegui fazer aqui em precisar fazer nenhum outro tipo de ajuste fora do que foi mencionado.
    Parabéns!!

  7. Muito obrigado, brou! Quebrou um galhão também!!!

    Hallowed be thy name!!!! =)

  8. PESSOAL

    Os conectores versão 5.1.30+ precisam declarar no standalone.xml

    com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
    com.mysql.jdbc.Driver

  9. Emerson Lugo diz:

    No WildFly 8.1 segue a mesma configuração?

  10. carledwin&JAVA diz:

    Reblogged this on carledwin & Java and commented:
    Olá, este foi um dos posts que me auxiliou em minha publicação. Segue o link.

  11. João diz:

    Oi cara, bom dia.
    No arquivo *-ds.xml o que deve estar nos campos “jndi-name” e “pool-name”? Estou usando um arquivo gerado pelo seam-gen e tendo erros de missing dependencies por causa do datasource.

  12. Demorei pra chegar aqui, mas esse jboss tava me arrancando os cabelos (os poucos que tenho). Parabéns pela clareza. =D

Deixe um comentário