Pool de conexões PostgreSQL no Wildfly

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa

Índice

Antes de começar o tutorial

Os passos a seguir devem ser realizados no terminal SSH. Os detalhes para acompanhar este tutorial:
1. Para se conectar no terminal SSH, veja o tópico Acesso SSH.
2. A porta informada para o acesso ao Wildfly no jboss-cli é ensinado em como visualizar no tópico Usando o jboss-cli.sh.
3. Os dados de acesso ao banco de dados:

  • Local da conexão*: localhost
  • O banco de dados: MEU_BANCO.
  • O usuário**: USUARIO
  • A senha: SENHA.

* Utilize localhost no Host da conexão apenas se o seu plano não trabalhar com servidor de banco de dados.
** Para o banco de dados PostgreSQL, por razões de criação de tabelas via Hibernate/JPA, utilize o nome do usuário e senha do cPanel para se conectar ao banco de dados. Essa regra não vale para clientes com servidor de banco de dados dedicado.



Sobre o material aqui informado

Todos os passos transmitidos são extremamente técnicos, cujo se referem ao Wildfly. Para detalhes, a documentação do Wildfly é a sua única fonte para a compreensão completa. O suporte de hospedagem se limita aos nossos painéis e serviços. O Wildfly e suas características são de responsabilidade de seus idealizadores.

Utilizando o jboss-cli

Para utilizar o jboss-cli.sh, necessário para compreender este tutorial, veja o tópico Usando o jboss-cli.sh.

Adicionando um módulo através do jboss-cli.sh

O comando a seguir segue o roteiro do trabalho com o PostgreSQL:
1. Suba no seu usuário, aquele diretório que é acessado pelo FTP/SFTP assim que se conecta, o driver JDBC que está operando. Se preferir, utilize o Gerenciador de arquivos.
2. No terminal SSH, utilize o comando mostrado a seguir. No nosso caso, vamos usar como exemplo o Wildfly 10.1.0 instalado e a biblioteca JDBC postgresql-9.4.1211.jre6.jar. O painel Integrator Java EE mostra o Local onde o servidor Java é instalado. Lembrando que a porta do Console Admin do Wildfly deve ser vista antecipadamente no painel Java. Veja como clicando aqui.

~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445 --command='module add --name=org.postgresql --resources=postgresql-9.4.1211.jre6.jar --dependencies=javax.api\,javax.transaction.api';

Registrando o driver através do jboss-cli.sh

3. Para registrar o Driver JDBC do PostgreSQL, execute o seguinte comando no terminal SSH.

 ~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445 --commands='/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql, driver-module-name=org.postgresql, driver-datasource-class-name=org.postgresql.Driver, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)';

A resposta esperada será como esta mostrada a seguir:

{
    "outcome" => "success",
    "response-headers" => {"process-state" => "reload-required"}
}

3.1. No terminal, execute este comando para que seja registrado:

 ~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445  --commands=:reload

Testando o driver JDBC adicionado

4. Utilize o comando abaixo no terminal para testar o driver adicionado:

~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445 --commands='/subsystem=datasources/jdbc-driver=postgresql:read-resource'

A resposta esperada será como esta mostrada a seguir:

{
    "outcome" => "success",
    "result" => {
        "deployment-name" => undefined,
        "driver-class-name" => undefined,
        "driver-datasource-class-name" => "org.postgresql.Driver",
        "driver-major-version" => undefined,
        "driver-minor-version" => undefined,
        "driver-module-name" => "org.postgresql",
        "driver-name" => "postgresql",
        "driver-xa-datasource-class-name" => "org.postgresql.xa.PGXADataSource",
        "jdbc-compliant" => undefined,
        "module-slot" => undefined,
        "profile" => undefined,
        "xa-datasource-class" => undefined
    }
}

Definindo o XA-DATASOURCES

5. Neste caso, teremos os seguintes comandos:
5.1. Primeiro comando, registrando o datasource:

 ~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445  --commands='/subsystem=datasources/xa-data-source=postgresqlDS:add(driver-name=postgresql, jndi-name=java:/postgresqlDS, valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker, exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter, user-name=USUARIO, password=SENHA, use-java-context=true, use-ccm=true, pool-prefill=true, enabled=false, min-pool-size=3 , max-pool-size=10)';

5.2. Segundo comando, registrando o local do banco de dados, no caso, localhost:

~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445  --commands='/subsystem=datasources/xa-data-source="postgresqlDS"/xa-datasource-properties=ServerName:add(value="localhost")'

5.3. O terceiro comando, adicionando o nome do banco de dados:

~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445  --commands='/subsystem=datasources/xa-data-source="postgresqlDS"/xa-datasource-properties=DatabaseName:add(value="MEU_BANCO")'

Os comandos acima devem retornar a seguinte resposta no terminal:

{"outcome" => "success"}

5.4. O comando para habilitar o datasource:

 ~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445  --commands='xa-data-source enable --name=postgresqlDS';

A resposta esperada no terminal:

operation-requires-reload: true            
process-state:             reload-required 

5.5. Para confirmar o que foi configurado, no terminal, execute este último comando:

 ~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445  --commands=:reload

Testando o Pool criado

6. Use o seguinte comando no terminal SSH para testar o pool de conexão criado:

~/appservers/wildfly-10.1.0.Final/bin/jboss-cli.sh  -c controller=localhost:21445  --commands='/subsystem=datasources/xa-data-source=postgresqlDS:test-connection-in-pool'

O resultado esperado como resposta no terminal:

{
    "outcome" => "success",
    "result" => [true]
}

Visualizando no Console Admin

Caso queira visualizar o que foi criado, através do Console Admin, veja em Configuration » Subsystems » Datasources » XA e clique em View.