Nim's braindump Swords, code and a dirty mind!

7Dec/090

Howto: PostgreSQL data source in JDeveloper/OC4J

Today I had to create a postgres connection pool in JDeveloper's embedded oc4j container. JDeveloper being the horrible piece of software that it is, and its documentation being rather lacking, this took a lot longer than it should have. The pretty GUI wizards aren't able to pull it off either -- these measly conjurers really aren't worthy of the name.

The biggest hurdly was postgres' connection pool not being happy with just a jdbc URL. Instead it expects a hostname, port number and database name. These things are all in the jdbc url, but never mind, that would've been too simple. After reading through the XSD for data-sources.xml, I realised that there's an option to provide custom properties to the factory. Quite simple really. A connection pool definition looks something like this:

<connection-pool name="myPool" disable-server-connection-pooling="false">
	<connection-factory
		factory-class="org.postgresql.jdbc3.Jdbc3PoolingDataSource"
		user="postgres" password="1234"
		url="jdbc:postgresql://localhost:5432/db">
		<property name="serverName" value="localhost" />
		<property name="portNumber" value="5432" />
		<property name="databaseName" value="db" />
	</connection-factory>
</connection-pool>
<managed-data-source name="dataSource" jndi-name="jdbc/postgresDS" connection-pool-name="myPool" />

Once this is done, all that's left to do is place the postgres driver JAR in the j2ee/home/applib folder in your JDeveloper folder. If you don't place it there, you'll get very nice class not found errors.

That's it. Not very hard at all!

flattr this!

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment

No trackbacks yet.