Adicionando Driver JDBC Oracle no Jboss/Wildfly
Autor: Claudio Weiler | Publicado: 2015-11-16T14:17:00-02:00

Nesta postagem vamos verificar uma das formas de adicionar o driver JDBC Oracle (ojdbc) em um servidor JBoss ou WildFly, tarefa que, apesar de fácil, possui documentação difícil de encontrar na web, e muitas vezes a documentação encontrada corresponde a versões antigas do servidor, configuração que não é utilizada nas versões mais atuais.

A configuração que iremos demostrar é baseada nos servidores JBoss EAP 6, JBoss AS 7 e Wildfly.

Antes de continuarmos, caso precise identificar a versão mais adequada do driver Oracle a ser utilizada, consulte a postagem anterior Determinando o Driver JDBC Oracle Adequado.

Crie um módulo para o driverA configuração destes servidores Java EE é baseada em módulos, um conceito que eles definem como "A Module is a logical grouping of classes used for class loading and dependency management", ou numa tradução livre "Um Módulo é um agrupamento lógico de classes utilizado para gestão de dependências e carga de classes". Então, para a nossa configuração precisamos criar um módulo.

Os módulos são instalados em uma pasta modules na raiz da instalação do servidor, dentro desta pasta a estrutura muda de acordo com a versão do servidor, mas localize a pasta com, por exemplo:
- $server_path$/modules/com no caso do JBoss AS 7
- $server_path$/modules/system/layers/base/com no caso do WildFly 9

Dentro da pasta com, encontrada acima, crie 3 pastas: oracle/ojdbc7/main, resultando em $modules_path$/com/oracle/ojdbc7/main.

Importante! A última pasta obrigatoriamente deve ser main.

Observe que na configuração em teste o driver Oracle mais adequado é o ojdbc7, por questões de facilidade de manutenção é recomendável manter a estrutura de pastas de acordo com o driver sendo utilizado, então mude o nome da pasta de acordo com o driver que você estiver utilizando.

O próximo passo é copiar o arquivo do driver (no caso, ojdbc7.jar) para dentro da pasta main, e, nesta mesma pasta, criar um arquivo de nome module.xml.

module.xmlAbra o arquivo com seu editor de preferência e adicione o conteúdo:
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;module xmlns="urn:jboss:module:1.1" name="com.oracle.ojdbc7"&gt;
    &lt;resources&gt;
        &lt;resource-root path="ojdbc7.jar"/&gt;
    &lt;/resources&gt;
    &lt;dependencies&gt;
        &lt;module name="javax.api"/&gt;
        &lt;module name="javax.transaction.api"/&gt;
    &lt;/dependencies&gt;
&lt;/module&gt;
Atenção! É muito importante que o atributo name na linha 2 corresponda a estrutura de pastas criada no tópico anterior ignorando-se a pasta main.

Configurando o servidorAgora precisamos configurar o servidor Java EE para que reconheça o módulo recém criado. Para isso precisamos modificar o arquivo de configuração que normalmente será o standalone.xml ou o standalone-full.xml, ou outro arquivo de acordo com a forma de uso do servidor.

No arquivo de configuração localize o trecho responsável pelas configurações dos datasources e adicione uma configuração de driver baseada no módulo:
&lt;subsystem xmlns="urn:jboss:domain:datasources:x.x"&gt;
    &lt;datasources&gt;
        [...]
        &lt;drivers&gt;
            [...]
            &lt;driver name="ojdbc7" module="com.oracle.ojdbc7"&gt;
                &lt;driver-class&gt;oracle.jdbc.OracleDriver&lt;/driver-class&gt;
            &lt;/driver&gt;
        &lt;/drivers&gt;
    &lt;/datasources&gt;
&lt;/subsystem&gt;
Atenção! É muito importante que o atributo module na linha 6 corresponda ao atributo name do arquivo module.xml.

Utilizando o móduloO último passo necessário é configurar o recurso de datasource para que utilize o módulo criado, e a para isso basta configurar o atributo driver:
&lt;subsystem xmlns="urn:jboss:domain:datasources:x.x"&gt;
    &lt;datasources&gt;
        [...]
        &lt;datasource jndi-name="java:jboss/datasources/NomeDS" pool-name="NomeDS" enabled="true"&gt;
            &lt;driver&gt;ojdbc7&lt;/driver&gt;
            [...]
        &lt;/datasource&gt;
        &lt;drivers&gt;
            [...]
        &lt;/drivers&gt;
    &lt;/datasources&gt;
&lt;/subsystem&gt;
Atenção! É muito importante que o atributo driver na linha 5 corresponda ao atributo name do driver definido anteriormente.

ConsideraçõsNós verificamos como configurar o driver JDBC através da manipulação textual dos arquivos de configuração, a maioria das tarefas acima também podem ser feitas através da interface gráfica ou do console CLI do JBoss, isto é apenas uma preferência pessoal sem nenhuma consideração técnica.

Até a próxima...