IBM Support

在测试连接或者在应用程序中创建数据库连接时出现J2CA0036E和DSRA0023E的错误信息

Troubleshooting


Problem

[6/29/06 13:38:56:670 EDT] 00000050 J2CUtilityCla E J2CA0036E: 对资源SiBuss DB2_CF 使用的com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl调用方法setDataSourceProperties时发生异常:DSRA0023E: 找不到 DataSource 实现类 "COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource"。处理异常终止。

Cause

这个问题的根源在于,WebSphere应用服务器(WAS)的Java虚拟机(JVM)无法在其类路径里找到该JDBC驱动的jar文件(在上述的例子里,是DB2的驱动jar文件)来获取实现类。最常见的原因是,这个JDBC提供程序的类路径的配置里用到了WebSphere变量,例如DB2_JDBC_DRIVER_PATH,而这个变量里定义的路径不正确;还有一种可能的原因是在Unix环境下用户没有足够的访问驱动程序jar文件的权限。

Diagnosing The Problem

您可以通过使用管理控制台来查看JDBC提供程序和数据源的配置来确认您是否在JDBC提供程序的类路径里使用了WAS系统变量;如果使用了,该变量是否是在正确的作用域上定义的(作用域有单元级别,节点级别,集群级别和服务器级别这几种)。您可以在管理控制台里确认资源是定义在哪个作用域上的,通过点击资源> JDBC提供程序资源,选择数据源使用的JDBC提供程序,检查其类路径里是否使用了WebSphere变量。在这个例子里,您可以查看类路径里是否使用了WAS里配置的DB2_INSTALL_ROOT以及DB2_JDBC_DRIVER_PATH这样的变量。

其次您可以排查这些变量是否指向了正确的驱动程序的路径。您可以在管理控制台里,点击资源>WebSphere变量,查看该变量里设置的存放驱动程序的路径,并确定正确的驱动程序确实在该路径下。

您需要注意的是,JDBC提供程序定义的作用范围必须与系统变量定义的作用范围相同,例如,如果您的JDBC提供程序是定义在节点级别的,那么里面使用的系统变量也必须要在节点级别上定义。

Resolving The Problem

您可以通过上述方法查看JDBC提供程序的配置来确定是否它使用了WebSphere变量,并查看变量是否指向了保存数据库驱动程序的正确路径;如果您使用的是Unix环境的话,您也可以确认运行WAS的用户ID有足够的权限去访问该数据库驱动程序。

Related Information

[{"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":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"9.0;8.5.5;8.0;7.0","Edition":"Base;Express;Network Deployment;WebSphere Business Integration Server Foundation","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
15 June 2018

UID

swg21660862