tomcat8的jdbc连接池的配置问题

wula0010 2015-09-16 08:19:00
项目的context.xml配置了jdbc池:

<Resource name="jdbc/myjdbc" auth="Container"
type="javax.sql.DataSource" driverClassName="com.informix.jdbc.IfxDriver"
url="jdbc:informix-sqli://10.*.*.*:1100/mydb:informixserver=myserver;newlocale=en_us,zh_cn;newcodeset=gbk,8859-1,819;IFX_USE_STRENC=true;"
username="username"
password="password"
maxActive="30" maxIdle="10" maxWait="1000"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"/>


在项目中:

Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myjdbc");
conn1 = dataSource.getConnection();


这个在tomcat6中都没问题,但是在tomcat8里报错:
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myjdbc");
错误:NamingException 错误信息:Could not load resource factory class。

谁知道tomcat8的该怎么配置?
...全文
325 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wula0010 2015-09-17
  • 打赏
  • 举报
回复
搞了一天,终于搞定了: 把原来的:factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 换成新的:factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 一切正常。 原因: Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题: (1)dbcp 是单线程的,为了保证线程安全会锁整个连接池 (2)dbcp 性能不佳 (3)dbcp 太复杂,超过 60 个类,发展滞后。 因此,通常J2EE中还会使用其它的高性能连接池,如 C3P0,还有阿里系的 druid 等。为此,Tomcat 从 7.0 开始引入一个新的模块: Tomcat jdbc pool tomcat jdbc pool 近乎兼容 dbcp ,性能更高 异步方式获取连接 tomcat jdbc pool 是 tomcat 的一个模块,基于 tomcat JULI,使用 Tomcat 的日志框架 使用 javax.sql.PooledConnection 接口获取连接 支持高并发应用环境 超简单,核心文件只有8个,比 c3p0 还少 更好的空闲连接处理机制 支持 JMX 支持 XA Connection。 tomcat jdbc pool 可在 Tomcat 中直接使用,也可以在独立的应用中使用。
澹若水/漠 2015-09-17
  • 打赏
  • 举报
回复
你看看是不是缺少jar包啊

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧