Java数据库连接池的配置

为什么使用数据库连接池:

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能

数据库连接池的配置过程:

1.项目WebContent/META-INF下新建context.xml文件,代码如下

<?xml version="1.0" encoding="UTF-8"?>

<Context>

<Resource name="jdbc/mysql"

auth="Container"

type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:13306/bookshop"

username="root"

password="123456"

maxActive="1000"

maxIdle="20"

maxWait="10000" />

</Context>

2.打开WebContent/WEB-INF/web.xml 添加如下代码

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

</web-app>

3.下面就可以写代码了

在src 下建立DataSourceManager.java 部分代码如下

public class DataSourceManager {

private static Context context;

private static DataSource dataSource;

static

{

try {

//实例上下文目录

context = new InitialContext();

//在命名空间和目录空间中查找 数据源名称 返回数据库连接池对象 JNDI

dataSource = (DataSource)context.lookup("java:comp/env/jdbc/mysql");

} catch (NamingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

4.可以建立一个jsp页面测试datasource连接的建立是否成功,如下,在浏览器访问页面

<body>

<%

Connection connection = DataSourceManager.getConnection();

out.println("连接成功!");

%>

</body>