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

来源:互联网 发布:中班亲子美工活动教案 编辑:程序博客网 时间:2024/05/22 17:19

 

连接池绝对注意事项:

使用连接池时需要牢记的最重要事项是,无论在代码中出现了什么(异常、控制流等),连接以及由连接创建的任何部分(语句、结果集等)均应被关闭,以 便能再次使用它们。如不然,它们将纠缠在一起,在最好的情况下,意味着它们所代表的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放回数据库连接池。

原创粉丝点击