dbcp的销毁
使用commons-dbcp-1.2.2.jar的DataSource,发现每次动态编译后连接池中的连接不会释放,新的连接池建立有mssql多出一组连接,只有重新启动tomcat或weblogic才可以释放。
package aaplan.dbutil; import java.io.InputStream;
import java.util.Properties; import java.sql.*; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; public class JdbcUtil { private static DataSource dataSource=null;
/**
* @param args
*/ public static Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
public static DataSource getDataSource() {
return dataSource;
}
public static void release() {
if(dataSource !=null){
try {
((org.apache.commons.dbcp.BasicDataSource)dataSource).close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}
static{
try{
Properties properties=new Properties();
InputStream inputStream= JdbcUtil.class.getClassLoader().getResourceAsStream("dbcp.properties");
properties.load(inputStream);
inputStream.close();
dataSource =BasicDataSourceFactory.createDataSource(properties); System.out.println(dataSource);
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("JdbcUtil Init Error!"); } } }
package aaplan.dbutil; import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener; /**
* Application Lifecycle Listener implementation class DataSorceMgrListener
*
*/
public class DataSorceMgrListener implements ServletContextListener { /**
* Default constructor.
*/
public DataSorceMgrListener() {
// TODO Auto-generated constructor stub
} /**
* @see ServletContextListener#contextInitialized(ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
System.out.println("Init context!");
JdbcUtil.getDataSource();
} /**
* @see ServletContextListener#contextDestroyed(ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("Destoryed Context!");
JdbcUtil.release();
} }
解决,写了个ServerContextListener,在里面的Destroyed中人工释放
dbcp的销毁的更多相关文章
- 【Java EE 学习 16 上】【dbcp数据库连接池】【c3p0数据库连接池】
		
一.回顾之前使用的动态代理的方式实现的数据库连接池: 代码: package day16.utils; import java.io.IOException; import java.lang.ref ...
 - DBCP数据源连接池实现原理分析
		
前些天在调试公司系统的时候发现这样的一个问题:mysql数据库服务停止一段时间后再次重启后吗,tomcat服务无法请求数据库服务,调试了半天对这个问题进行定位解决,期间也搞了很多有关mysql数据库的 ...
 - [数据库连接池] Java数据库连接池--DBCP浅析.
		
前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务 ...
 - [转] DBCP 的validationQuery
		
原文地址:http://blog.csdn.net/fgakjfd/article/details/5600462 网上很多评论说DBCP有很多BUG,但是都没有指明是什么BUG,只有一部分人说数据库 ...
 - 数据库连接池dbcp基本配置
		
DBCP(DataBase connection pool),数据库连接池.是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件.单独使用dbcp需要2个包: com ...
 - DBCP、C3P0、Proxool 、 BoneCP开源连接池的比《转》
		
简介 使用评价 项目主页 DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用 可以设置最大和最小连接,连接等待时 ...
 - dbcp基本配置和重连配置 -- mysql 8小时自动断开连接的问题
		
1. 引入dbcp (选择1.4) Java代码 com.alibaba.external jakarta.commons.dbcp 1.4 2. dbcp的基本配置 相关配置说明: initia ...
 - 开源DBCP、C3P0、Proxool 、 BoneCP连接池的比较
		
简介 项目主页 使用评价 DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用 http://homepages.nild ...
 - DBCP连接池介绍
		
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
 
随机推荐
- 1006 Sign In and Sign Out (25)(25 分)思路:普通的时间比较题。。。
			
1006 Sign In and Sign Out (25)(25 分) At the beginning of every day, the first person who signs in th ...
 - SQL判断NULL的几种常见方式
			
第一种 where XX ='NULL' ,XX字段存的值就是NULL这四个字符, 第二种 where XX is null ,XX字段什么也没存,这是数据库的判断语法, 第三种 where isnu ...
 - 在Centos中导入sql文件的方法
			
在Centos中导入sql文件的方法 利用mysql -u root -p进入mysql数据库 对于文件的导入,在Centos下里面的是首先要新建一个和文件相同名字的数据库.例如:mysql>c ...
 - ProducerConsumerQueue
			
folly/ProducerConsumerQueue.h The folly::ProducerConsumerQueue class is a one-producer one-consumer ...
 - 为什么多线程读写 shared_ptr 要加锁?
			
https://www.cnblogs.com/Solstice/archive/2013/01/28/2879366.html 为什么多线程读写 shared_ptr 要加锁? 陈硕(giantch ...
 - Python Tuples
			
1. basic Tuples is a sequence of immutable object. It's a sequence, just like List. However, it cann ...
 - Python Tkinter编程
			
声明:主要是为了自己方便,所以把别人的教程搬到这里来,没有其他的意思. 如果有侵犯您的权益,请联系我QQ:3121922008 我会在第一时间妥善处理,抱歉. 还有其他的一些搜集的资源连接放在http ...
 - C# 重构
			
重构是在编写代码后在不更改代码的外部行为的前提下通过更改代码的内部结构来改进代码的过程. 一.何时需要重构 1.代码中存在重复的代码: 如果类中有重复的代码块,需将其提炼出一个新的独立方法,如果是不同 ...
 - 关于在Arduino中调用DS1302模块
			
DS1302时钟模块中的电池是起掉电保存作用的,在实际运行中必须给他的GND和VCC供电,否则得到的是错误的时间. 也就是说,电池是保存日期的,而无法提供芯片正常运行所需的电力. 从芯片引脚上可以看出 ...
 - GPU架构图
			
找了几张GPU架构图,对理解图形渲染管线很有帮助