IBM Support

J2CA0036E and DSRA0023E are logged in SystemOut.log when testing the connection or when attempting to create a connection from an application to a database.

Technote (troubleshooting)


Problem(Abstract)

[6/29/06 13:38:56:670 EDT] 00000050 J2CUtilityCla E J2CA0036E: An
exception occurred while invoking method setDataSourceProperties on
com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl used by resource SiBuss DB2_CF : com.ibm.ws.exception.WsException: DSRA0023E: The DataSource implementation class
"COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource" could not be found.

Cause

The cause of the problem is that the WebSphere Application Server Java™ virtual machine (JVM) could not find the JDBC JAR file, in this example the DB2 JAR, in its classpath that contains the implementation class. The most likely cause is that the classpath of the JDBC Provider configuration has used a WebSphere Application Server variable, for example, DB2_JDBC_DRIVER_PATH, which has not been set for the corresponding WebSphere Application Server jvm process. This could also be caused on Unix based servers by the userID not having permission to access the jar that contains the class.

Diagnosing the problem

Check the database provider and data source configuration to see if the WebSphere Application Server JDBC driver path system variable is used in the classpath in the JDBC Provider and ensure the variable is set for the correct scope; the scope could be cell, node, cluster, or server. To determine which scope the resource is defined, one can use the Administrative Console. This can also be determined by which SystemOut.log file contains the J2CA0036E and DSRA0023E errors.

If the J2CA0036E and DSRA0023E are logged in the application server's SystemOut.log, then check the JDBC Provider configuration to see if it uses WebSphere variables for its classpath setting. From the Administrative Console select Resources > JDBC Provider > DB_Provider_Used_By_DataSource, and inspect the classpath. For this example, one would check to see if the JDBC Provider configuration uses the Application Server's DB2_INSTALL_ROOT and DB2_JDBC_DRIVER_PATH variable.

Then confirm that variable points to the correct location of the driver. To do this, from the Administrative Console, select Resources > WebSphere Variables. View the location specified in the DB driver path variable and confirm that the driver is installed in that location.

Similarly, if the JDBC provider is defined at the node scope, the JDBC driver path system variable must be defined at the node scope. And if the JDBC provider is defined at the cell scope, then the Deployment Manager's (DMgr's) JDBC provider configuration must be checked.


Resolving the problem

Check the JDBC Provider's configuration to see if the variable is used and confirm that variable points to the correct location for the driver and correct it if it does not. Also, for Unix based servers, confirm the userID that is used to run the Application Server jvm process has correct permission to use the driver.

Related information

A simplified Chinese translation is available

Cross reference information
Segment Product Component Platform Version Edition
Application Servers Runtimes for Java Technology Java SDK

Document information

More support for: WebSphere Application Server
DB Connections/Connection Pooling

Software version: 5.1, 6.0, 6.1, 7.0, 8.0

Operating system(s): AIX, HP-UX, IBM i, Linux, Solaris, Windows

Software edition: Base, Express, Network Deployment, WebSphere Business Integration Server Foundation

Reference #: 1265784

Modified date: 19 November 2009