JBoss AS7, PostgreSQL als Modul

Wenn man im JBoss PostgreSQL in zentral definierten Datasources (z. B. standalone.xml) verwenden will, z. B. für JNDI-Lookup, muss der entsprechende Treiber auch zentral eingetütet werden.

Hierfür kann man den Treiber als Modul im JBoss einfügen. Die geschieht relativ einfach, indem man das Treiber-Jar in einen Ordner $JBOSS_HOME/modules/org/postgresql/main kopiert.

Dann legt man an gleichem Ort einen Modul-Deskriptor modules.xml an.


<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.1-903.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>

Dieses Modul kann man nun in der standalone.xml einfügen (Pfad des Modules muss übereinstimmen, wie auch der Name):


<driver name="postgresql" module="org.postgresql"><xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class></driver>

Dieses Modul kann nun in der Definition der Datasource (standalone.xml) verwendet werden:


<datasource jndi-name="java:jboss/datasources/MyDataSource" pool-name="MyDataSource" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://localhost:5432/testdb?charSet=utf-8</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgresql</driver>
<security>
<user-name>USER</user-name>
<password>PASSWORD</password>
</security>
</datasource>

Aber: Es scheint von Belang zu sein, dass man als Modul einen JDBC-4-Treiber-JAR verwendet. Jedenfalls funktioniert nun folgendes JAR postgresql-9.1-903.jdbc4.jar.

Ein klasse Quelle für Informationen ist die JBoss-Community, herzlichen Dank.