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
Was this topic helpful?
Document Information
Modified date:
15 June 2018
UID
swg21660862