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!
configurei igual ao seu mas continua dando erro:
New missing/unsatisfied dependencies:
[Server:inst01] service jboss.jdbc-driver.ojdbc6_jar (missing) dependents: [service jboss.data-source.java:/jdbc
Você colocou o ojdbc6.jar em qual pasta?
Olá Thiago,
Eu tambem tive o mesmo problema descrito no comentario anterior. Depois de muitas tentativas e de pesquisar pelo erro, descobri qual era a causa: a minha versão do arquivo ojdbc6.jar não tinha uma pasta "services" debaixo de "META-INF" contendo o arquivo java.sql.Driver com o nome da classe. Aparentemente, a Oracle liberou 2 versões deste jar, uma JDBC4-compliant (disponivel no link que você passou), e outra não (a que eu tinha). Para quem estiver com este problema, certifique-se de usar o .jar correto.
Olá. Também tive o mesmo problema, por causa de usar driver antigo. Obrigado pelo artigo!