数据库连接池(connection pool)的工作原理:
为了解决资源的频繁分配,释放所造成的问题,可以采用数据库连接池技术.数据库连接池的基本思想就是为数据库连接建立一个"缓冲池".预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从"缓冲池"中取出一个,使用完毕之后再放回去.我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接.更为重要的是我们可以通过连接池的管理机制监视数据库的连接数量,使用情况,为系统开发,测试及性能调整提供依据.
以SqlServer2000为例,将数据库驱动程序Jar文件放到Tomcat的common/lib目录下,JDBC驱动的相关Jar文件(mssqlserver.jar,msutil.jar,msbase.jar);
全局配置(Tomcat里的任何Web应用都能使用该配置的连接池)
1.打开Tomcat/conf/server.xml文件,在<GlobalNamingResources></GlobalNamingResources>中插入如下内容:
<Resource name="jdbc/poolName"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"
username="sa"
password="sa"
maxActive="100"
maxIdle="30"
maxWait="10000"/>
2.打开Tomcat/conf目录下的context.xml文件,在<Context></Context>中插入如下内容:
<ResourceLink global="jdbc/poolName" name="jdbc/poolName" type="javax.sql.DataSource"/>
局部配置(仅为一个具体的Web项目所配置的数据源)
1.打开Tomcat/conf/server.xml文件,在<Host></Host>中插入如下内容:
<Context path="/pool" docBase="pool" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/poolName"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"
username="sa"
password="sa"
maxActive="100"
maxIdle="30"
maxWait="10000"/>
</Context>
注解:
maxActive:最大活跃连接数,指同时可以有多少个连接,设置为0没有限制.
maxIdle:最大空闲连接数,表示没有数据库连接时,连接池必须保持最大空闲连接数,设置为0没有限制.
maxWait:连接建立等待时间,单位为毫秒,设置为-1没有限制.
测试: pool.jsp
<%@page contentType="text/html;charset=utf-8" %>
<%@page import="java.sql.*" %>
<%@page import="javax.sql.*" %>
<%@page import="javax.naming.*" %>
<html>
<head>
<title>Tomcat连接池测试</title>
</head>
<body>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/poolName");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from sales");
while(rs.next()) {
out.println(rs.getInt(1));
out.println(rs.getString(2));
out.println(rs.getString(3));
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
本文详细介绍了数据库连接池的工作原理,以Tomcat为例,阐述了如何配置全局和局部的数据库连接池,包括在`server.xml`和`context.xml`文件中的配置步骤。此外,还解释了连接池参数如`maxActive`、`maxIdle`和`maxWait`的作用,并提供了测试连接池的JSP代码示例。

3618

被折叠的 条评论
为什么被折叠?



