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/libWEB-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为什么要破坏双亲委派模型

深度思考:老生常谈的双亲委派机制,JDBCTomcat是怎么反其道而行之的?

详解Tomcat的安装和优化

Spring Boot自定义的Tomcat打印catalina和tomcat日志

如何在myeclipse中安装tomcat和部署项目到tomcat中