Data souce Oracle no JBoss AS 7

Para configurar uma base de maneira adequada no JBoss AS 7 é necessário adicionar o driver JDBC dela como um módulo. Para realizar esse procedimento crie uma pasta para colocar o driver do Oracle:

mkdir $JBOSS_HOME/modules/com/oracle/ojdbc6/main

Faça o download adequado do driver no site: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

Copie o driver do Oracle (ojdbc6.jar) para a pasta recém criada e crie um arquivo module.xml com o seguinte conteúdo:

<module xmlns="urn:jboss:module:1.0" name="com.oracle.ojdbc6">
  <resources>
    <resource-root path="ojdbc6.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
  </dependencies>
</module>

Edite o arquivo $JBOSS_HOME/standalone/configuration/standalone.xml no modo standalone ou o arquivo $JBOSS_HOME/domain/configuration/domain.xml no modo domain. Procure pela linha <drivers> que é filho de  <subsystem xmlns="urn:jboss:domain:datasources:1.0"> e acrescente o seguinte conteúdo dentro das tags <drivers>...</drivers>:

<driver name="oracle" module="com.oracle.ojdbc6">
  <xa-datasource-class>
    oracle.jdbc.OracleDriver
  </xa-datasource-class>
</driver>

Crie um datasource nesse mesmo xml:

<datasource jndi-name="java:jboss/datasources/ThiagoVespaDS" pool-name="OracleDS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
  <connection-url>jdbc:oracle:thin:@localhost:1521:oradb1</connection-url>
  <driver>oracle</driver>
  <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
  <pool>
    <prefill>true</prefill>
    <min-pool-size>0</min-pool-size>
    <max-pool-size>20</max-pool-size>
  </pool>
  <security>
    <user-name>usuarioBanco</user-name>
    <password>senhaSecreta</password>
  </security>
</datasource>

O parâmetro use-java-context se colocado como false fará com que o nome JNDI fique global (disponível externamente). O use-ccm habilita o cached connection manager. Para configurações de isolamento de transações podemos ter os seguintes possíveis valores: TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE, TRANSACTION_NONE, para maiores informações sobre o nível de isolamento dê uma lida nesse link.

No pool o prefill igual a true já realiza as conexões e preenche o pool. O mix-pool-size e o max-pool-size definem o número mínimo e máximo de conexões no pool. Para mais parâmetros, consulte o XSD do datasource: $JBOSS_HOME/docs/schema/jboss-as-datasources_1_0.xsd

Inicie o JBoss e se aparecer a seguinte mensagem:

[org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class oracle.jdbc.OracleDriver (version 11.2)
...
[org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) Bound data source [java:jboss/datasources/ThiagoVespaDS]

está tudo ok! É só utilizar o JBoss com Oracle!

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6