300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置

时间:2020-04-15 17:16:44

相关推荐

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代码

<Resourcename="jdbc/ens"

auth="Container"

type="javax.sql.DataSource"

factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

testWhileIdle="true"

testOnBorrow="true"

testOnReturn="false"

validationInterval="30000"

timeBetweenEvictionRunsMillis="30000"

maxActive="100"

minIdle="10"

maxWait="10000"

initialSize="10"

removeAbandonedTimeout="60"

removeAbandoned="true"

logAbandoned="true"

minEvictableIdleTimeMillis="30000"

jmxEnabled="true"

jdbcInterceptors=

"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"

username="root"

password="123"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/ens"/>

然后,在context.xml文件的<Context></Context>节点中添加如下配置:

<ResourceLinkglobal="jdbc/ens"name="jdbc/ens"type="javax.sql.DataSource"/>

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

用JSP测试一下:

Html代码

<%@pagelanguage="java"pageEncoding="gbk"%>

<%@pageimport="java.sql.Connection"%>

<%@pageimport="javax.naming.Context"%>

<%@pageimport="javax.naming.InitialContext"%>

<%@pageimport="javax.sql.DataSource"%>

<%@pageimport="java.sql.Statement"%>

<%@pageimport="java.sql.ResultSet"%>

<%

//连接池的获取

Connectionconn=null;

DataSourceds=null;

ResultSetrs=null;

Statementstmt=null;

ContextinitCtx=newInitialContext();

ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/ens");

if(ds!=null){

out.println("已经获得DataSource!");

out.println("<br>");

conn=ds.getConnection();

try{

stmt=conn.createStatement();

Stringsql="select*fromens_area";

rs=stmt.executeQuery(sql);

out.println("以下是从数据库中读取出来的数据:<br>");

while(rs.next()){

out.println("<br>");

out.println(rs.getString("area_name"));

}

}catch(Exceptionex){

ex.printStackTrace();

}finally{

conn.close();

rs.close();

stmt.close();

}

}

%>

分享到:

发送 GET 和 POST请求 |Java的文件路径

-10-04 20:01

浏览 3859

分类:企业架构

查看更多

评论

发表评论

您还没有登录,请您登录后再发表评论

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。