易截截图软件、单文件、免安装、纯绿色、仅160KB

使用JAVA中的动态代理实现数据库连接池

        作者通过使用JAVA中的动态代理实现数据库连接池,使使用者可以以普通的jdbc连接的使用习惯来使用连接池。
数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的连接数据库对服务性能来讲是一个瓶颈,使用缓冲池技术可以来消除这个瓶颈。我们可以在互联网上找到很多关于数据库连接池的源程序,但是都发现这样一个共同的问题:这些连接池的实现方法都不同程度地增加了与使用者之间的耦合度。很多的连接池都要求用户通过其规定的方法获取数据库的连接,这一点我们可以理解,毕竟目前所有的应用服务器取数据库连接的方式都是这种方式实现的。但是另外一个共同的问题是,它们同时不允许使用者显式的调用Connection.close()方法,而需要用其规定的一个方法来关闭连接。这种做法有两个缺点:
第一:改变了用户使用习惯,增加了用户的使用难度。
首先我们来看看一个正常的数据库操作过程:
int executeSQL(String sql) throws SQLException
{
Connection conn = getConnection(); //通过某种方式获取数据库连接
PreparedStatement ps = null;
int res = 0;
try{
ps = conn.prepareStatement(sql);
res = ps.executeUpdate();
}finally{
try{
ps.close();
}catch(Exception e){}
try{
conn.close();//
}catch(Exception e){}
}
return res;
}

使用者在用完数据库连接后通常是直接调用连接的方法close来释放数据库资源,如果用我们前面提到的连接池的实现方法,那语句conn.close()将被某些特定的语句所替代。
第二:使连接池无法对之中的所有连接进行独占控制。由于连接池不允许用户直接调用连接的close方法,一旦使用者在使用的过程中由于习惯问题直接关闭了数据库连接,那么连接池将无法正常维护所有连接的状态,考虑连接池和应用由不同开发人员实现时这种问题更容易出现。
综合上面提到的两个问题,我们来讨论一下如何解决这两个要命的问题。
首先我们先设身处地的考虑一下用户是想怎么样来使用这个数据库连接池的。用户可以通过特定的方法来获取数据库的连接,同时这个连接的类型应该是标准的java.sql.Connection。用户在获取到这个数据库连接后可以对这个连接进行任意的操作,包括关闭连接等。
通过对用户使用的描述,怎样可以接管Connection.close方法就成了我们这篇文章的主题。
为了接管数据库连接的close方法,我们应该有一种类似于钩子的机制。例如在Wind


相关文档:

Java压缩类库的使用 3.Apache Ant中的打包、压缩类库

  inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish)。
  这里需要关注的是BZIP2格式,经过测试,总是无法正确压缩,原因未知,而apache commons bzip2格式的文件压缩正常。(来源:http://blog.csdn.net/inkfish)
Ant ZIP压缩:(来源:http://blog.csdn.net/inkfish)
package stu ......

Java数据压缩格式程序设计方法之JAR压缩格式

1、JAR格式文件介绍
在JDK1.1版中,定义了用于将与Java应用程序相关的多个文件以及相关资源整合在一起的数据文件类型-JAR。也许读者会注意到:Sun以及其它公司发布的多种类型Java库都是以JAR形式进行文件压缩和封装的。
从本质上讲,JAR压缩文件采用ZIP格式进行数据压缩。由于最初引入JAR数据压缩类型的目的在于将开发完 ......

Java web 学习笔记

 
---09 11 29---
Servlet&Servlet容器:
Java Servlet(Java服务器小程序)是一个基于Java技术的小程序,
运行在服务器端,由Servlet容器所管理,用于生成动态的内容.
Servlet是平台独立的Java类,所以编写一个Servlet实际上就是按
照servlet规范编写一个Java类.
Servlet容器也叫做Servlet引擎,是web服务器或应用 ......

JAVA文件操作File类和FilenameFilter的使用

File类
创建目录,用mkdir和mkdirs的函数
public boolean mkdir():创建此抽象路径名指定的目录。
public boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必需的父目录。
mkdir例子:
 File dir = new File("E:/mydir/");
if(!di ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号