Pool de conexões PostgreSQL no Wildfly
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.