当Tomcat遭遇JBDC Driver,出现 'Cannot create resource instance' !

用Tomcat,最担心的就是配置JNDI的DataSource的时候出现问题,随着各大厂商发布自己的JDBC的实现,兼容性的问题也就越来也突出了...

一般我们都是用Tomcat自带的DBCP来处理,配置如下:


 
  driverClassName
  oracle.jdbc.driver.OracleDriver
 
 
  driverName
  jdbc:oracle:thin:@server:port:sid
 
 
  user
  ########
 
 
  password
  ########
 


Oracle JDBC Driver for JDK 1.4 or JDK 1.5
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc_10201.html

不过这个写法,如果在JBuilderX中,跑Tomcat 4.1,加上最新版的 Oracle JDBC Driver会存在问题,系统抛出的错误为:

javax.naming.NamingException: Cannot create resource instance
 at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:189)
 at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:834)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
 at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)
 at javax.naming.InitialContext.lookup(InitialContext.java:347)
看来DBCP针对java.sql.DataSource相关的实现与ojdbc14.jar存在兼容性的问题,需要按照下面的写法才能OK:


 
   factory
   oracle.jdbc.pool.OracleDataSourceFactory
 
 
   driverClassName
   oracle.jdbc.driver.OracleDriver
 
 
   url
   jdbc:oracle:thin:@server:port:sid
 
 
   user
   ########
 
 
   password
   ########
 

原来Oracle自己实现了DataSource的工厂类来管理DataSource的建立!
同样发现微软的SQL Server 2000 Driver for JDBC Service Pack 3也存在这个问题!
http://www.microsoft.com/downloads/details.aspx?familyid=07287b11-0502-461a-b138-2aa54bfdc03a&displaylang=en

需要如下配置:


 
    factory
    com.microsoft.jdbcx.sqlserver.SQLServerDataSourceFactory
 
 
    driverClassName
    com.microsoft.jdbcx.sqlserver.SQLServerDataSource
 
 
    driverName
    SQLServer
 
 
    description
    My DataSource
 
 
    serverName
    ########
 
 
    portNumber
    1433
 
 
    selectMethod
    cursor
 
 
    databaseName
    ########
 
 
    user
    ########
 
 
    password
    ########
 
 
    loginTimeout
    3000
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
问题的原因是无法创建JDBC驱动程序的类'com.mysql.jdbc.Driver'来连接URL 'true'。这个问题可能有几个可能的原因。 首先,可能是缺少必要的JDBC驱动程序。根据引用\[2\]和引用\[3\]的描述,您需要确保在Tomcat服务器的lib目录下包含了正确的MySQL JDBC驱动程序的jar文件,例如mysql-connector-java-3.1.8-bin.jar。此外,根据引用\[2\]的描述,您还可能需要将aspectjrt.jar一起放在WEB-INF\lib目录下。 其次,可能是Tomcat服务器的配置问题。根据引用\[3\]的描述,您需要在Tomcat服务器的context.xml文件中添加正确的JDBC驱动程序的配置。确保在<Resource>元素中指定了正确的驱动程序类名(driverClassName)和连接URL(url)。 最后,还有可能是连接URL的格式不正确。根据引用\[1\]的描述,连接URL应该是以jdbc:mysql://开头,后面跟着主机名、端口号和数据库名称等信息。请确保连接URL的格式正确,并且数据库服务器正在运行。 综上所述,您可以尝试以下解决方法: 1. 确保正确安装了MySQL JDBC驱动程序,并将其放置在Tomcat服务器的lib目录下。 2. 检查Tomcat服务器的context.xml文件,确保正确配置了JDBC驱动程序的信息。 3. 检查连接URL的格式是否正确,并确保数据库服务器正在运行。 希望这些信息对您有所帮助! #### 引用[.reference_title] - *1* [Cannot create JDBC driver of class 'com.mysql.jdbc](https://blog.csdn.net/fengyun111999/article/details/5753289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JNDI数据源局部配置(解决Cannot create JDBC driver of class '' for connect URL 'null')](https://blog.csdn.net/weixin_42475535/article/details/113563808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SQL: Cannot create JDBC driver of class '' for connect URL(使用JDNI数据源)](https://blog.csdn.net/immenselee/article/details/103991126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值