Подключение сервера приложений Jboss 7.X к серверу баз данных PostgreSQL
Качаю: с сайта https://jdbc.postgresql.org/download.html Драйвер postgresql-9.4-1201.jdbc41.jar
$ mkdir -p /opt/jboss/7.1.1/modules/org/postgresql/main
$ cd /opt/jboss/7.1.1/modules/org/postgresql/main
$ wget https://jdbc.postgresql.org/download/postgresql-9.4-1201.jdbc41.jar
jboss
Подключение JDBC драйвера как модуля Jboss
$ vi /opt/jboss/7.1.1/modules/org/postgresql/main/module.xml
// Чтобы текст в vi не уехал вправо
:set paste
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.4-1201.jdbc41.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
// Отменяю ранее введенный параметр. // Далее не буду умоминать его вызов.
:set nopaste
PostgreSQL Datasource
// Делаю резервную копию файла standalone.xml
$ cp /opt/jboss/7.1.1/standalone/configuration/standalone.xml /opt/jboss/7.1.1/standalone/configuration/standalone.xml.orig
$ vi /opt/jboss/7.1.1/standalone/configuration/standalone.xml
Вроде можно вынести описание datasourses в отдельный файл заканчивающийся на
Заменяю datasources на вот это:
<datasources>
<datasource jta="false" jndi-name="java:jboss/postgresDS" pool-name="PostgresDS" enabled="true" use-ccm="false">
<connection-url>jdbc:postgresql://192.168.56.3:5432/mydatabase</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgresql</driver>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>200</max-pool-size>
</pool>
<security>
<user-name>scott</user-name>
<password>tiger</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<background-validation-millis>1</background-validation-millis>
</validation>
<statement>
<prepared-statement-cache-size>0</prepared-statement-cache-size>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.Driver</xa-datasource-class>
</driver>
</drivers>
</datasources>
PostgreSQL XA Datasource
$ vi /opt/jboss/7.1.1/standalone/configuration/standalone.xml
<datasources>
***
<xa-datasource jndi-name="java:jboss/PostgresXADS" pool-name="PostgresXADS" enabled="true" use-ccm="false">
<xa-datasource-property name="ServerName">
192.168.56.3
</xa-datasource-property>
<xa-datasource-property name="PortNumber">
5432
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
mydatabase
</xa-datasource-property>
<driver>postgresqlXA</driver>
<xa-pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>200</max-pool-size>
<is-same-rm-override>false</is-same-rm-override>
<interleaving>false</interleaving>
<pad-xid>false</pad-xid>
<wrap-xa-resource>false</wrap-xa-resource>
</xa-pool>
<security>
<user-name>scott</user-name>
<password>tiger</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</xa-datasource>
---
<drivers>
***
<driver name="postgresqlXA" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
***
</drivers>
</datasources>
Ошибка:
Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "scott" ...
Была по причине того, что неправильно были настроены правила в конфиге postgresql сервера.
/var/lib/pgsql/data/pg_hba.conf
На тестовом окружении, я просто тупо поменял записи вида ident на trust. Все заработало.
local all all peer
https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Administration_and_Configuration_Guide/Example_PostgreSQL_XA_Datasource.html