Páginas

segunda-feira, 16 de novembro de 2015

Adicionando Driver JDBC Oracle no Jboss/Wildfly

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 driver

A 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.xml

Abra o arquivo com seu editor de preferência e adicione o conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle.ojdbc7">
    <resources>
        <resource-root path="ojdbc7.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

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 servidor

Agora 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:
<subsystem xmlns="urn:jboss:domain:datasources:x.x">
    <datasources>
        [...]
        <drivers>
            [...]
            <driver name="ojdbc7" module="com.oracle.ojdbc7">
                <driver-class>oracle.jdbc.OracleDriver</driver-class>
            </driver>
        </drivers>
    </datasources>
</subsystem>

Atenção! É muito importante que o atributo module na linha 6 corresponda ao atributo name do arquivo module.xml.

Utilizando o módulo

O ú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:
<subsystem xmlns="urn:jboss:domain:datasources:x.x">
    <datasources>
        [...]
        <datasource jndi-name="java:jboss/datasources/NomeDS" pool-name="NomeDS" enabled="true">
            <driver>ojdbc7</driver>
            [...]
        </datasource>
        <drivers>
            [...]
        </drivers>
    </datasources>
</subsystem>

Atenção! É muito importante que o atributo driver na linha 5 corresponda ao atributo name do driver definido anteriormente.

Consideraçõs

Nó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...

Nenhum comentário:

Postar um comentário

Olá! Antes de postar seu comentário, por favor, observe que comentários técnicos, elogios e sugestões são antecipadamente agradecidos, esclarecimentos sobre os conceitos envolvidos na postagem serão respondidos da melhor forma possível, mas pedidos de ajuda técnica ou suporte individual deverão ser feitos através do formulário de contato. Grato!