现在的位置: 首页 >> 网站编程 >> JSP >> 当Tomcat遭遇JBDC Driver,出现 'Cannot create resource instance' !
添加时间:2005-11-7 来源:网教中国 作者:
当Tomcat遭遇JBDC Driver,出现 'Cannot create resource instance' !

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

一般我们都是用Tomcat自带的DBCP来处理,配置如下:
<Resource name="jdbc/MyDS" auth="Container" type="javax.sql.DataSource" />
<ResourceParams name="jdbc/MyDS">
 <parameter>
  <name>driverClassName</name>
  <value>oracle.jdbc.driver.OracleDriver</value>
 </parameter>
 <parameter>
  <name>driverName</name>
  <value>jdbc:oracle:thin:@server:port:sid</value>
 </parameter>
 <parameter>
  <name>user</name>
  <value>########</value>
 </parameter>
 <parameter>
  <name>password</name>
  <value>########</value>
 </parameter>
</ResourceParams>


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:
<Resource name="jdbc/MyDS" type="oracle.jdbc.pool.OracleConnectionCacheImpl"/>
<ResourceParams name="jdbc/MyDS">
 <parameter>
  <name>factory</name>
  <value>oracle.jdbc.pool.OracleDataSourceFactory</value>
 </parameter>
 <parameter>
  <name>driverClassName</name>
  <value>oracle.jdbc.driver.OracleDriver</value>
 </parameter>
 <parameter>
  <name>url</name>
  <value>jdbc:oracle:thin:@server:port:sid</value>
 </parameter>
 <parameter>
  <name>user</name>
  <value>########</value>
 </parameter>
 <parameter>
  <name>password</name>
  <value>########</value>
 </parameter>
</ResourceParams>

原来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

需要如下配置:
<Resource name="jdbc/MyDS" auth="Container" type="com.microsoft.jdbcx.sqlserver.SQLServerDataSource"/>
<ResourceParams name="jdbc/MyDS">
  <parameter>
    <name>factory</name>
    <value>com.microsoft.jdbcx.sqlserver.SQLServerDataSourceFactory</value>
  </parameter>
  <parameter>
    <name>driverClassName</name>
    <value>com.microsoft.jdbcx.sqlserver.SQLServerDataSource</value>
  </parameter>
  <parameter>
    <name>driverName</name>
    <value>SQLServer</value>
  </parameter>
  <parameter>
    <name>description</name>
    <value>My DataSource</value>
  </parameter>
  <parameter>
    <name>serverName</name>
    <value>########</value>
  </parameter>
  <parameter>
    <name>portNumber</name>
    <value>1433</value>
  </parameter>
  <parameter>
    <name>selectMethod</name>
    <value>cursor</value>
  </parameter>
  <parameter>
    <name>databaseName</name>
    <value>########</value>
  </parameter>
  <parameter>
    <name>user</name>
    <value>########</value>
  </parameter>
  <parameter>
    <name>password</name>
    <value>########</value>
  </parameter>
  <parameter>
    <name>loginTimeout</name>
    <value>3000</value>
  </parameter>
</ResourceParams>



[1] [2]  下一页


上一篇:关于web中下拉列表的几种实现方法 下一篇:zip版本Tomcat配置新手入门
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·Servlet、Jsp中的多国语言显示
·Java/jsp 好的入门文章共赏
·新手入门经典:Jsp环境配置
·产生彩色验证码_(javabean实现)
·Java入门需掌握的30个基本概念
·Freebsd+Resin成功建立支持jsp平
·配置JSP交互网站的步骤
·JBuilder2005实战JSP之错误处理
·Servlet/JSP配置详解(基础篇)
·Eclips使用秘技(绝对经典)
相关文章
 
最新文章
·十一、JSP及语法概要
·十、会话状态
·九、处理Cookie
·八、设置HTTP应答头
·七、HTTP应答状态
·六、访问CGI变量
·五、读取HTTP请求头
·四、处理表单数据
·三、第一个Servlet
·二、设置开发、运行环境
Google