Tomcat 和 JDBC
Posted
技术标签:
【中文标题】Tomcat 和 JDBC【英文标题】:Tomcat and JDBC 【发布时间】:2011-08-16 16:57:36 【问题描述】:我正在尝试在 Tomcat 上配置以下内容。
Resource auth="Container" name="jdbc/yourDataSourceName"
driverClassName="oracle.jdbc.OracleDriver"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
type="oracle.jdbc.pool.OracleDataSource"
connectionCacheProperties=""
connectionCachingEnabled="true"
user="foo"
password="bar"
url="jdbc:oracle:thin:@foo.bar.com:1521:foobar"
当我将以下内容放入我的应用程序 META-INF/context.xml
文件中时,我收到以下错误:
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.BasicDataSource cannot be cast to oracle.jdbc.pool.OracleDataSource
当我把它移到$TOMCAT_HOME/conf/context.xml
时,它工作正常。它不允许我配置特定于应用程序。有什么想法吗?
我的应用程序文件夹的$TOMCAT_HOME/lib
和WEB-INF/lib
中有ojdbc6.jar。请指教。我错过了什么吗?感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:您可以尽量不要在数据源配置中使用特定的 Oracle 类,例如“OracleDataSourceFactory”。 Oracle Conn.pool 似乎与 DBCP 不兼容。 只定义 driverClass。
你可以试试这样的:
<Resource
name="jdbc/yourDataSourceName" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@foo.bar.com:1521:foobar"
user="foo"
password="bar"
maxActive="5" maxIdle="1" maxWait="-1"/>
希望对你有帮助
【讨论】:
以上是关于Tomcat 和 JDBC的主要内容,如果未能解决你的问题,请参考以下文章
一道阿里面试题:JDBCTomcat为什么要破坏双亲委派模型
深度思考:老生常谈的双亲委派机制,JDBCTomcat是怎么反其道而行之的?