数据库连接池在web开发中的应用

今天上班遇到了几个人问我数据库连接池在web应用中的使用问题。所以总结一下发表一篇关于数据库连接池在web开发中的使用。希望对一些人有帮助。
OK,言归正传:

关于数据库连接池的原理在此就不作解释(本篇文章是基于已经了解数据库连接池原理的朋友参考)。
在这我们就讲一下基于tomcat的连接池使用。
基于tomcat的连接池使用有两种方式:
第一种:在tomcat的安装目录下的conf文件夹下会有个context.xml文件,基于这种方式使用的连接池,在当前tomcat下web应用都可以用到该连接池资源。
第二种:就是为每一个web应用单独配置连接池。这时候我们要在web应用的META——INF文件夹下配置context.xml文件。把jdbc的驱动包方法哦tomcat的lib下。
context.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/mysql"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/shop?characterEncoding=utf-8"
username="root"
password="root"
maxActive="40"
maxIdle="2"
minIdle="1"
maxWait="50000"
/>

</Context>

上面是对连接池的配置。
下面就应该是对连接池的使用了,ok。对连接池的应用涉及到另外一种新的技术JNDI(java的命名和目录接口),来获得我们的连接池资源。
怎么获得资源的也就是我们连接池的连接呢?OK,下面我们写个web应用的监听器,让服务启动的时候去加载资源。
类DBCPListener:

package com.wuxw920.dbcp.Listener;

import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.sql.DataSource;

import com.wuxw920.dbcp.dbutil.DataSourceProvider;

/**
* web应用的监听器 用来初始化连接池
*
* @author wuxw920
*
*/
public class DBCPListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
System.out.println("WEB应用销毁……");
DataSource ds = DataSourceProvider.getInstance().getDataSource();
try {
ds.getConnection().close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
System.out.println("WEB应用初始化……");
try {
Context context = new InitialContext();
DataSource ds = (DataSource) context
.lookup("java:/comp/env/jdbc/mysql");
DataSourceProvider.getInstance().initDataSource(ds);
} catch (NamingException e) {
e.printStackTrace();
}
}

}

我们再写使用的时候如何获得连接,再写一个类DataSourceProvider

package com.wuxw920.dbcp.dbutil;

import javax.sql.DataSource;

/**
* 用来初始化连接
*
* @author wuxw920
*
*/
public class DataSourceProvider {

private DataSource ds;
private static DataSourceProvider instance;

private DataSourceProvider() {

}

public static DataSourceProvider getInstance() {
if (instance == null) {
instance = new DataSourceProvider();
}
return instance;
}

public void initDataSource(DataSource ds) {
this.ds = ds;
}

public DataSource getDataSource() {
return ds;
}

}

到此为止启动tomcat应用服务器。我们就获得了连接。测试通过。呵呵……
数据库连接池的基本使用就到这了,其实还有很多方法去实现它。这个例子是利用tomcat本身再带的DBCP连接池。我们当然也可以在tomcat中集成第三方提供的连接池产品。同样通过JNDI取得资源。一般情况下还是比较推荐使用第三方的数据库连接池产品的。

下面我们讲下tomcat集成第三方连接池的配置方案:
1.将数据库的jdbc驱动程序以及第三方的数据库连接池程序包放置到web项目下的web-inf\lib目录下
2.在应用的meta_inf下创建一个名为context.xml的文件,具体内容请参考附件
3.使用jndi api来获取由tomcat初始化的连接池对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值