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

Tomcat 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是 dbcp存在一些问题:

1dbcp 是单线程的,为了保证线程安全会锁整个连接池

2dbcp 性能不佳

3dbcp 太复杂,超过 60 个类,发展滞后。

因此,通常J2EE中还会使用其它的高性能连接池,为此,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 7中直接使用的方法:

conf/server.xml下的<GlobalNamingResources>节点里配置resource,例如:

<Resource name="jdbc/sqlserver" auth="Container"

type="javax.sql.DataSource" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"  url="jdbc:sqlserver://localhost:1433;DatabaseName=test"

username="sa" password="sa"

maxActive="5000" maxIdle="10" maxWait="-1"/>

 

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

<ResourceLink global="jdbc/sqlserver" name="jdbc/sqlserver" type="javax.sql.DataSource"/>

 

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

 

2.JSP代码:

<%@ page language="java" contentType="text/html; charset=GB2312"

    pageEncoding="GB2312"%>

<%@ page import="java.sql.*" %>

<%@ page import="javax.naming.*" %>

<%

try{

   Context initCtx=new InitialContext();

   Context ctx=(Context)initCtx.lookup("java:comp/env");

   //获取连接池对象

   Object obj=(Object)ctx.lookup("jdbc/sqlserver");

   //类型转换

   javax.sql.DataSource ds=(javax.sql.DataSource)obj;

   Connection conn=ds.getConnection();

   Statement stmt=conn.createStatement();

   String strSql="select * from userTable";

   ResultSet rs=stmt.executeQuery(strSql);

   out.print("<table border style='font-size:10pt'>");

    out.print("<tr><td colspan=8 align='center'>用户数据</td></tr>");

    out.print("<tr>");

    out.print("<td width=60>用户ID</td>");

    out.print("<td width=50>用户名</td>");

    out.print("<td width=100>用户真实姓名</td>");

    out.print("<td width=40>年龄</td>");

    out.print("<td width=40>性别</td>");

    out.print("<td width=100>联系地址</td>");

    out.print("<td width=100>联系电话</td>");

    out.print("<td width=100>添加时间</td>");

    out.print("</tr>");

    while(rs.next()){

        out.print("<tr>");

        out.print("<td>"+rs.getLong(1)+"</td>");

        out.print("<td>"+rs.getString(2)+"</td>");

        out.print("<td>"+rs.getString(4)+"</td>");

        out.print("<td>"+rs.getInt("user_age")+"</td>");

        out.print("<td>"+rs.getString("user_sex")+"</td>");

        out.print("<td>"+rs.getString("user_address")+"</td>");

        out.print("<td>"+rs.getString("user_telephone")+"</td>");

        out.print("<td>"+rs.getString("add_time")+"</td>");

        out.print("</tr>");

    }

    out.print("</table>");

    }catch(Exception ex){

     out.print(ex);

    }

 %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB2312">

<title>Insert title here</title>

</head>

<body>

</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值