快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

当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>
返回类别: 教程
上一教程: 使用JAVABEAN高效处理JSP
下一教程: 配置J2EE支持MYSQL

您可以阅读与"当TOMCAT遭遇JBDC DRIVER,出现 \'CANNOT CREATE RESOURCE INSTANCE\'!"相关的教程:
· 优化apache/tomcat配置
· Apache和Tomcat整合之道
· 配置Eclpise+tomcat与实现JSP部署
· WINDOWS2000下整合MYSQL4.0.13与TOMCAT4.1.24搭建JSP环境
· Tomcat下配置MySQL数据库连接池
    微笑服务 优质保证 索取样品