[JBoss.org AS7] Datasource configuration with Postgresql.
January 2, 2012
Well, recently I tried to make my application work on JBoss.org AS7.
Just to check if I should have to do some code modifications in my application when JBoss.com EAP 6 will be released.
FYI, you can download freely JBoss.org AS7 at the following URL - http://www.jboss.org/jbossas – however as it is a community project you will not have any support with SLA.
In case of you would need one(s) then I would suggest you to subscribe to JBoss EAP Solutions – http://www.jboss.com/ -
So, one of my main targets was to make AS7 work with Postgresql as its underlying database.
1] I wanted to use an updated Postgresql JDBC then I had to download it from the JDBC Postgresql website - http://jdbc.postgresql.org/download.html -
I used postgresql-9.1-901.jdbc4.jar
2] I had to create dedicated directories and files inside the JBoss.org AS7 directory.
jboss-as-7.0.2.Final/modules/org/postgres/main
Then, to upload the postgresql-9.1-901.jdbc4.jar in the following path : jboss-as-7.0.2.Final/modules/org/postgres/main
And then to create specific xml file named : module.xml with the following content :
<module xmlns="urn:jboss:module:1.0" name="org.postgres"> <resources> <resource-root path="postgresql-9.1-901.jdbc4.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies></module>jboss-as-7.0.2.Final/modules/org/postgres/main path you should retrieved the following files :> postgresql-9.1-901.jdbc4.jar – Postgresql JDBC4 driver.
> postgresql-9.1-901.jdbc4.jar.index – Index file generated by JBoss. That file should automatically created by the JBoss instance as soon as the Postgresql JDBC Driver will be discover by the instance.
> module.xml – Module Description
4] Then, I had to add a Posgresql node in the following section of the jboss-as-7.0.2.Final/standalone/configuration/standalone.xml file.
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
</connection-url>
<driver>
h2
</driver>
<pool>
<prefill>
false
</prefill>
<use-strict-min>
false
</use-strict-min>
<flush-strategy>
FailingConnectionOnly
</flush-strategy>
</pool>
<security>
<user-name>
sa
</user-name>
<password>
sa
</password>
</security>
</datasource>
<datasource jndi-name="java:jboss/datasources/PostgresqlDS" pool-name="java:jboss/datasources/PostgresqlDS_Pool" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:postgresql://localhost:5432/mydb
</connection-url>
<driver>
postgresql
</driver>
<security>
<user-name>
myuser
</user-name>
<password>
mypassword
</password>
</security>
</datasource> <drivers> <driver name="postgresql" module="org.postgres"> <xa-datasource-class> org.postgresql.xa.PGXADataSource </xa-datasource-class> </driver> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class> org.h2.jdbcx.JdbcDataSource </xa-datasource-class> </driver> </drivers></datasources></subsystem>5] You can check in the JBoss Administration Console your JDBC connection is rcognized – http://localhost:9990/console/App.html#server/datasources
You should see a green light if everything is OK.
6] Finally, do not forget to change the persistence -persistence.xml – file of your application to check your application works with the new Posgresql datasource.
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="astroDatabase">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/PostgresqlDS</jta-data-source>
<class>com.hornain.as.astro.Users</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="false"/>
<property name="hibernate.use_sql_comments" value="false"/>
</properties>
</persistence-unit>
</persistence>
Ref #1 : http://community.jboss.org/wiki/JBossAS7-DatasourceConfigurationForPostgresql
Ref #2 : http://community.jboss.org/thread/168958
Best Regards
Frederic
