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.

Troubleshooting


Problem

[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.

[{"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"DB Connections\/Connection Pooling","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF012","label":"IBM i"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"8.0;7.0;6.1;6.0;5.1","Edition":"Base;Express;Network Deployment;WebSphere Business Integration Server Foundation","Line of Business":{"code":"LOB15","label":"Integration"}},{"Product":{"code":"SSNVBF","label":"Runtimes for Java Technology"},"Business Unit":{"code":"BU050","label":"BU NOT IDENTIFIED"},"Component":"Java SDK","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
15 June 2018

UID

swg21265784