Thread: Is it possible to load two different versions of the JDBC driver in the same application?

I have a Java application that is using Postgres 9.1, and we use the latest 9.1 JDBC driver.
The same Java app requires access now to a Redshift cluster. Amazon recommends to use a Postgres 8 JDBC driver.

Can I load both drivers in the same application ?

I currently use the Apache database connection pool configured through Tomcat's context.xml to load the driver and handle the connection pool.


-Jorge




On Apr 11, 2014, at 2:28 PM, Tecno Brain <cerebrotecnologico@gmail.com> wrote:

> I have a Java application that is using Postgres 9.1, and we use the latest 9.1 JDBC driver.
> The same Java app requires access now to a Redshift cluster. Amazon recommends to use a Postgres 8 JDBC driver.

Why?  That’s ancient!  Have you tested that the newer driver does not work?

>
> Can I load both drivers in the same application ?

Technically, yes.  You can load each driver in a separate classloader.  You may wish to look into a container solution
likeOSGI if you go this path. 

I wouldn’t recommend it.  Diagnosing problems when multiple class loaders have the same classes loaded but different
versionswill quickly melt your brain into a puddle of mush. 



On 4/11/2014 2:28 PM, Tecno Brain wrote:
> I have a Java application that is using Postgres 9.1, and we use the
> latest 9.1 JDBC driver.
> The same Java app requires access now to a Redshift cluster. Amazon
> recommends to use a Postgres 8 JDBC driver.

the current JDBC driver works with all versions interchangeably.

--
john r pierce                                      37N 122W
somewhere on the middle of the left coast



Because the Amazon Redshift documentation states the following:

"The PostgreSQL 9.x JDBC and ODBC drivers might not work correctly with all applications when accessing Amazon Redshift. Currently, Amazon Redshift recommends the following version 8.4 JDBC and ODBC drivers:"


On Fri, Apr 11, 2014 at 2:32 PM, Steven Schlansker <stevenschlansker@gmail.com> wrote:

On Apr 11, 2014, at 2:28 PM, Tecno Brain <cerebrotecnologico@gmail.com> wrote:

> I have a Java application that is using Postgres 9.1, and we use the latest 9.1 JDBC driver.
> The same Java app requires access now to a Redshift cluster. Amazon recommends to use a Postgres 8 JDBC driver.

Why?  That’s ancient!  Have you tested that the newer driver does not work?

>
> Can I load both drivers in the same application ?

Technically, yes.  You can load each driver in a separate classloader.  You may wish to look into a container solution like OSGI if you go this path.

I wouldn’t recommend it.  Diagnosing problems when multiple class loaders have the same classes loaded but different versions will quickly melt your brain into a puddle of mush.