Use"isolate the resource provider" to establish data source connections using a different JDBC driver from the same database vendor

Technote (troubleshooting)


Problem(Abstract)

Customer has defined 3 Oracle JDBC Providers at cell, node and server
scope. Client have following configuration in websphere JDBC provider.

In Cell Scope - C:\jdbc\ojdbc5\ojdbc5.jar

In Node Scope - C:\jdbc\ojdbc6_g\ojdbc6_g.jar

In Server Scope- C:\jdbc\ojdbc6\ojdbc6.jar

In this case value of JDBC driver path in WebSphere variable is identical. Nornally, If JDBC provider configure at server level then server level driver will get load first. But in this case since all three drivers are from same vendor, So we can not control which driver is picking up. In this case
"C:\jdbc\ojdbc6\ojdbc6.jar" should be loaded first but instated, ojdbc5.jar was load first

[13. 4. 5 12:05:15:625 KST] 00000023 CompoundClass < loadClass

oracle.jdbc.driver.OracleDriver

loader=com.ibm.ws.bootstrap.ExtClassLoader@5dc95dc9

source=file:/C:/jdbc/ojdbc5/ojdbc5.jar Exit




Symptom

Due to multiple JDBC drivers from the same vendor were configured in different scopes, the wrong driver class was loaded.


Cause

When multiple versions of the JDBC driver are configured in WebSphere Application Server, irrespective of the scopes, there is a possibility of a collision of the classes and we cannot predict from which version of the driver jar the class got loaded.

Resolving the problem

In order to support the existence of multiple versions of the driver jars, the "isolate the resource provider" configuration helps to ensure there are no conflicts. This needs to be configured on each JDBC Provider. you cannot isolate only one resource provider, all the provider configure in different scope will have to configure isolate the resource provider. In this scenario, the resource provider classes from different versions of the jars are not imported or accessed to verify if the

isolation has indeed worked. In order to use the server scoped resource provider the datasource using the server scoped jdbc provider will have to be referenced from the application after isolating the resource providers and using resource reference in application.

Go to the JDBC Provider and enable "isolate the resource provider". When "isolate the resource provider" is enabled, it ensures that only the jar that was specified in the classpath will be used for all the datasources under that particular JDBC provider.


http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.base.doc%2Finfo%2Faes%2Fae%2Fudat_manjdbcprodet.html

http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Frdat_isolatedlimitations.html

Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

WebSphere Application Server
DB Connections/Connection Pooling

Software version:

7.0, 8.0, 8.5

Operating system(s):

AIX, HP-UX, Linux, Solaris, Windows

Reference #:

1634612

Modified date:

2013-05-17

Translate my page

Machine Translation

Content navigation