打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置
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 中直接使用,也可以在独立的应用中使用。

1.Tomcat 中直接使用的方法:
在conf/server.xml下的<GlobalNamingResources>节点里配置resource,例如:

Xml代码
 
  1. <Resource name="jdbc/ens"  
  2.       auth="Container"  
  3.       type="javax.sql.DataSource"  
  4.       factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"  
  5.       testWhileIdle="true"  
  6.       testOnBorrow="true"  
  7.       testOnReturn="false"  
  8.       validationInterval="30000"  
  9.       timeBetweenEvictionRunsMillis="30000"  
  10.       maxActive="100"  
  11.       minIdle="10"  
  12.       maxWait="10000"  
  13.       initialSize="10"  
  14.       removeAbandonedTimeout="60"  
  15.       removeAbandoned="true"  
  16.       logAbandoned="true"  
  17.       minEvictableIdleTimeMillis="30000"  
  18.       jmxEnabled="true"  
  19.       jdbcInterceptors=  
  20. "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"  
  21.       username="root"  
  22.       password="123"  
  23.       driverClassName="com.mysql.jdbc.Driver"  
  24.       url="jdbc:mysql://localhost:3306/ens"/>  
  25.   
  26. 然后,在context.xml文件的<Context></Context>节点中添加如下配置:  
  27. <ResourceLink global="jdbc/ens" name="jdbc/ens" type="javax.sql.DataSource"/>  


global="jdbc/ens" 中的参数值("jdbc/ens")必须和上一段<Resource >配置中的name属性的值保持一样。name="jdbc/ens" 这个可以随便取,但是在程序中调用的时候,就应该与name的值保持一致。到这里,连接池已经配置好啦。

用JSP测试一下:

Html代码
 
  1. <%@ page language="java" pageEncoding="gbk"%>  
  2. <%@page import="java.sql.Connection"%>  
  3. <%@page import="javax.naming.Context"%>  
  4. <%@page import="javax.naming.InitialContext"%>  
  5. <%@page import="javax.sql.DataSource"%>  
  6. <%@page import="java.sql.Statement"%>  
  7. <%@page import="java.sql.ResultSet"%>  
  8. <%  
  9.    //连接池的获取  
  10.     Connection conn = null;  
  11.     DataSource ds = null;  
  12.     ResultSet rs  =null;  
  13.     Statement stmt = null;  
  14.     Context initCtx = new InitialContext();  
  15.     ds =(DataSource)initCtx.lookup("java:comp/env/jdbc/ens");  
  16.    if(ds!=null){  
  17.         out.println("已经获得DataSource!");  
  18.         out.println("<br>");  
  19.         conn = ds.getConnection();  
  20.        try{  
  21.         stmt = conn.createStatement();  
  22.         String sql ="select * from ens_area";  
  23.         rs = stmt.executeQuery(sql);  
  24.         out.println("以下是从数据库中读取出来的数据:<br>");  
  25.             while(rs.next()){  
  26.                 out.println("<br>");  
  27.                 out.println(rs.getString("area_name"));  
  28.             }  
  29.        }catch(Exception ex){  
  30.          ex.printStackTrace();  
  31.        }finally{  
  32.           conn.close();  
  33.           rs.close();  
  34.           stmt.close();  
  35.        }  
  36.    }  
  37.   
  38. %>  
分享到:
评论
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Tomcat 7 的新JDBC连接池的使用说明
在Tomcat配置JNDI数据源的三种方式
JNDI Spring获取配置数据源的三种方法
Tomcat 5.5 配置 MySQL 数据库连接池
《Tomcat4.1.31的数据库连接池配置》
Tomcat 5.0.XX与6.0xx 配置连接池
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服