ConnectionPool的概念

原创 2006年06月09日 00:56:00

package org.adam.proxy;

import java.lang.reflect.*;
import java.sql.*;

import org.com.pool.*;

/**
* 采用了Dynamic Proxy模式来解决程序员的惯性动作---

* connection.close()---如果真正把连接关闭了,那么连接池的

* 的概念就不存在了,要做到真正重用,不是把连接关闭,而是要

* 使用完的连接重新放到池里,等待下次重用.所以,这里采用了

* 方法拦截器来实现这个connection.close()所带来的关闭连接

* 问题.当客户调用connection.close()将触发方法拦截器,这个

* 时候就可以在invoke(...)方法里进行相关操作,如---把连接

* 重新放回连接池 !---Proxy模式比Decorator模式方便多了,

* 在此便是一个好例子,^_^

* @author Adam Email: yangjh@tarena.com

* @version 1.0.2

*

*/

public class ConnectionHandler implements InvocationHandler{
 Connection dbconn;
 TestConnectionPoolSecond pool;
 
 public ConnectionHandler(TestConnectionPoolSecond pool){
  this.pool = pool;
 }

 /**
 * 将动态代理绑定到指定的Connection

 * @param conn;
 
 * @return 绑定代理后的Connection

 */

 public Connection bind(Connection conn){
  this.dbconn = conn;

  Connection proxyConn = (Connection)Proxy.newProxyInstance(conn.getClass().getClassLoader(),conn.getClass().getInterfaces(),this);

  return proxyConn;
 }

 /**
 * 方法调用拦截器
 
 * 判断当前调用的方法是否为"close"方法

 * 如果是的话,调用pool.returnConnection(Connection con)

 * 方法作为标准close方法的替代!

 */

 public Object invoke(Object proxy,Method method,Object[]args)throws Throwable{
  Object obj = null;
  //如果调用的是close方法,则永pool.returnConnection(Connection con)将其替换
  if("close".equals(method.getName())){
   pool.returnConnection(dbconn);
  }else{
   obj = method.invoke(dbconn,args);
  }
  return obj;
 }
}

 

package org.adam.proxy;

import java.lang.reflect.*;
import java.sql.*;

import org.com.pool.*;

/**
* 采用了Dynamic Proxy模式来解决程序员的惯性动作---

* connection.close()---如果真正把连接关闭了,那么连接池的

* 的概念就不存在了,要做到真正重用,不是把连接关闭,而是要

* 使用完的连接重新放到池里,等待下次重用.所以,这里采用了

* 方法拦截器来实现这个connection.close()所带来的关闭连接

* 问题.当客户调用connection.close()将触发方法拦截器,这个

* 时候就可以在invoke(...)方法里进行相关操作,如---把连接

* 重新放回连接池 !---Proxy模式比Decorator模式方便多了,

* 在此便是一个好例子,^_^

* @author Adam Email: yangjh@tarena.com

* @version 1.0.2

*

*/

public class ConnectionHandler implements InvocationHandler{
 Connection dbconn;
 TestConnectionPoolSecond pool;
 
 public ConnectionHandler(TestConnectionPoolSecond pool){
  this.pool = pool;
 }

 /**
 * 将动态代理绑定到指定的Connection

 * @param conn;
 
 * @return 绑定代理后的Connection

 */

 public Connection bind(Connection conn){
  this.dbconn = conn;

  Connection proxyConn = (Connection)Proxy.newProxyInstance(conn.getClass().getClassLoader(),conn.getClass().getInterfaces(),this);

  return proxyConn;
 }

 /**
 * 方法调用拦截器
 
 * 判断当前调用的方法是否为"close"方法

 * 如果是的话,调用pool.returnConnection(Connection con)

 * 方法作为标准close方法的替代!

 */

 public Object invoke(Object proxy,Method method,Object[]args)throws Throwable{
  Object obj = null;
  //如果调用的是close方法,则永pool.returnConnection(Connection con)将其替换
  if("close".equals(method.getName())){
   pool.returnConnection(dbconn);
  }else{
   obj = method.invoke(dbconn,args);
  }
  return obj;
 }
}

 

jdbcinfo.properties

# Sample ResourceBundle properties file
driver_name=com.pointbase.jdbc.jdbcUniversalDriver
db_url=jdbc:pointbase:server://localhost/Adam
user_name=PBPUBLIC
password=PBPUBLIC
initialConnections=2
incrementalConnections=5
maxConnections=10


ConnectionPool.java

package coreservlets; import java.sql.*;import java.util.*; /** A class for preallocating, recycling...

ConnectionPool

原文地址:http://hi.baidu.com/guowei4634/blog/item/bb16c85c66e90a47faf2c076.html:::http://blog.csdn.net/l...

基于ConnectionPool的 JDBC 工具类

1.jar:  ConnectionPool.jar 2.将  init.properties 拷贝于 src 目录下进行数据库配置 init.properties: datasource.dr...

Okhttp之连接池ConnectionPool简单分析(一)

ConnectionPool

java数据库连接池connectionPool.jar

  • 2008年08月28日 13:35
  • 5KB
  • 下载

ConnectionPool

  • 2008年07月28日 11:10
  • 55KB
  • 下载

Linux C——多线程的基本概念及API函数

一、线程和进程之间的关系,与进程相比线程有哪些优点? 1.线程与进程之间的关系 ①线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 ②一个进程由几个线...

Snap-ConnectionPool资料

  • 2007年09月29日 22:27
  • 355KB
  • 下载

ConnectionPool数据库连接池例子.doc

  • 2011年08月30日 10:43
  • 83KB
  • 下载

android 3D系列之基本概念篇

最近不是很忙,所以打算从这周开始学习android的3D绘图。网络上已经有大量有关OpenGL的好教程和书籍。但是,却没有多少是关于OpenGLES,更加没有多少是专门针对学习android上3D编程...
  • hmg25
  • hmg25
  • 2011年09月01日 13:52
  • 14143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ConnectionPool的概念
举报原因:
原因补充:

(最多只允许输入30个字)