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

2016-01-29 12:16 92 1 收藏

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

【 tulaoshi.com - Java 】

 

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

一般我们都是用Tomcat自带的DBCP来处理,配置如下:
<Resource name="jdbc/MyDS" auth="Container" type="javax.sql.DataSource" /
<ResourceParams name="jdbc/MyDS"
 <parameter
  <namedriverClassName</name
  <valueoracle.jdbc.driver.OracleDriver</value
 </parameter
 <parameter
  <namedriverName</name
  <valuejdbc:oracle:thin:@server:port:sid</value
 </parameter
 <parameter
  <nameuser</name
  <value########</value
 </parameter
 <parameter
  <namepassword</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)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/java/)


看来DBCP针对java.sql.DataSource相关的实现与ojdbc14.jar存在兼容性的问题,需要按照下面的写法才能OK:
<Resource name="jdbc/MyDS" type="oracle.jdbc.pool.OracleConnectionCacheImpl"/
<ResourceParams name="jdbc/MyDS"
 <parameter
  <namefactory</name
  <valueoracle.jdbc.pool.OracleDataSourceFactory</value
 </parameter
 <parameter
  <namedriverClassName</name
  <valueoracle.jdbc.driver.OracleDriver</value
 </parameter
 <parameter
  <nameurl</name
  <valuejdbc:oracle:thin:@server:port:sid</value
 </parameter
 <parameter
  <nameuser</name
  <value########</value
 </parameter
 <parameter
  <namepassword</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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/java/)

需要如下配置:
<Resource name="jdbc/MyDS" auth="Container" type="com.microsoft.jdbcx.sqlserver.SQLServerDataSource"/
<ResourceParams name="jdbc/MyDS"
  <parameter
    <namefactory</name
    <valuecom.microsoft.jdbcx.sqlserver.SQLServerDataSourceFactory</value
  </parameter
  <parameter
    <namedriverClassName</name
    <valuecom.micr

来源:https://www.tulaoshi.com/n/20160129/1485325.html

延伸阅读
import Java.awt.Color; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.MalformedURLException; import com.lowagie.text.*; import com.lowagie.text.rtf.*; /*  * Created on 2004-11-10  *  * TODO ...
标签: 电脑入门
Linux环境下进行编译的时候有时会出现/usr/bin/ld:cannot find -lxxx错误提示,这个提示是什么意思呢?该如何处理?下面图老师小编就教你如何处理该情况。 在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息: 代码如下: /usr/bin/ld: cannot find -lxxx 这些讯息会随着编译不同类型的source code 而有不同的结...
标签: 育儿知识
无论是在幼儿园还是在家里,只要有两个以上的宝宝在一起玩耍,战争就不可避免,有的时候只是为了争夺一个玩具,还可能是为了争宠,争吵也会升级为大打出手,不过孩子之间的矛盾一般都持续不了多久,没过一会就又会到一起玩耍了。 但是有很多家长却把孩子间的矛盾看的太严重,把成人世界评判是非的标准强加到孩子的头上,一旦孩子间发生争吵...
标签: 怀孕 孕前
孕妇须防黄褐斑 因怀孕而损坏娇好的容颜,这对爱美的女性来说多少会有一点遗憾。孕妇在怀孕期间随着时间的推长,脸上往往容易出现深褐色的对称斑点,这便是女性的美容“杀手”———黄褐斑。黄褐斑的发生与孕妇体内的雌孕激素升高是密切相关的,因此如何调节人体的激素平衡,纠正人体的内分泌紊乱是防斑治斑的关键。 为了达到防斑治斑的目的...
标签: 电脑入门
Tomcat是Apache基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。它是一个 集成了Servlet容器的免费开源Web服务器,所以既能解析JSP/Servlet,也能提供Web服务。本程序中采用的是tomcat- 6.0.10版,下面详细介绍它的安装过程。 工具/原料 tomcat-6.0.10 步骤/方法 1.双击安装程序图标,开始安装 ...

经验教程

916

收藏

92
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部