Tomcat6.0的Mysql数据库连接池设置与举例(总结)

 

连接池绝对注意事项:

使用连接池时需要牢记的最重要事项是,无论在代码中出现了什么(异常、控制流等),连接以及由连接创建的任何部分(语句、结果集等)均应被关闭,以 便能再次使用它们。如不然,它们将纠缠在一起,在最好的情况下,意味着它们所代表的MySQL 服务器资源(缓冲区、锁定、套接字等)可能会捆绑一段时间, 在最坏的情况下,可能会导致永久捆绑。

连接池的最佳大小是什么?

与所有其他配置经验规则一样, 回答是 它取决于具体情况 。尽管最佳大小取决与预期的负载和平均的数据库事务时间,最佳的连接池大小小于你的预期。例如,如果使用的是Sun 公司的 Java Petstore Blueprint 应用程序,对于包含1520 个连接的连接池,使用MySQLTomcat ,在可接受的相应时间下,可服务于中等程度的负载(600 个并发用户)。

要想确定用于应用程序的连接池大小,应使用诸如Apache JmeterThe Grinder 等工具创建负载测试脚本,并对应用程序进行负载测试。

确定出发点的一种简单方法是,将连接池的最大连接数配置为 无限 ,运行负载测试,并测量最大的并发连接数。随后,应进行反向操作,确定出使应用程序具有最佳性能的连接池的最小和最大值。

 

 

 

 

 

 

 

1 .将数据库驱动程序的JAR 文件放在Tomcat /lib  中;

2. .
配置tomcat 下的conf 下的context.xml 文件,<context></context> 之间添加连接池如下:

<Resource name="jdbc/MySQL"  

    auth="Container"  

    type="javax.sql.DataSource"  

    driverClassName="com.mysql.jdbc.Driver"  

    url="jdbc:MySQL://localhost/notes"  

    username="root"  

    password="13579147"  

    maxActive="100"  

    maxIdle="30"  

maxWait="10000" />  

 

属性说明: name ,数据源名称,通常取 ”jdbc/XXX” 的格式;
            type
”javax.sql.DataSource”;
            password
,数据库用户密码;
            driveClassName
,数据库驱动;
            maxIdle
,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
                     
接将被标记为不可用,然后被释放。设为 0 表示无限制。
            MaxActive
,连接池的最大数据库连接数。设为 0 表示无限制。
            maxWait 
,最大建立连接等待时间。如果超过此时间将接到异常。设为 -1 表示
                     
无限制。


3
.在你的web 应用程序的web.xml 中设置数据源参考,如下:
  
<web-app></web-app> 节点中加入,
 
< resource-ref >   

< description > DB Connection </ description >   

< res-ref-name > jdbc /MySQL </ res-ref-name >   

< res-type > javax.sql.DataSource </ res-type >   

< res-auth > Container </ res-auth >   

</ resource-ref >    

  子节点说明: description ,描述信息;

 res-ref-name ,参考数据源名字;
res-type
,资源类型,”javax.sql.DataSource”
 res-auth
”Container”

 res-sharing-scope ”Shareable”


4
.建立一个测试jsp ,代码如下:

  


!doctype html public "-//w3c//dtd html 4.0 transitional//en"   
  


"http://www.w3.org/TR/REC-html40/strict.dtd">
   
  


<

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


<

%@ page import
="javax.sql.*"
%>
   
  


<

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


<

%@ page session
="false"
 %>
   
  


<

html

>

   
  


<

head

>

   
  


<

meta

 http-equiv
="Content-Type"
 content
="text/html; charset=gb2312"
>
   

<

title

></

title

>

   

<
%   

out.print("
我的测试开始");   

DataSource ds
 = null
;   

try{   

InitialContext ctx
=new
 InitialContext();   

ds

=(DataSource)ctx.lookup("java:comp/env/jdbc/MySQL");   

Connection conn
 = ds
.getConnection();   

Statement stmt
 = conn
.createStatement();   

提示:users 必须是数据库已有的表,
这里的数据库前文提及的Data Source URL 配置里包含的数据库。

  


String strSql
 = " select * from users"
;   
  


ResultSet rs
 = stmt
.executeQuery(strSql);   
  


while(rs.next()){   
  


out.print(rs.getString(1));   
  


}   
 
out.print(" 我的测试结束");   

}   
  


catch(Exception ex){   
  


out.print(“
出现例外信息是:”+ex.getMessage());   

ex.printStackTrace();   

}   

%>
   

</

head

>

   

<

body

>

   

</

body

>

   

</ html >  

2 . 在要用到数据库操作的类或jsp 页面中,用DBPool.getPool().getConnection() ,获得一个Connection 对象,就可 以进行数据库操作,最后别忘了对Connection 对象调用close() 方法, 注意:这里不会关闭这个Connection ,而是将这个 Connection 放回数据库连接池。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值