My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > JSP > 综合文章
数据库连接缓冲池
作者:佚名 时间:2005-04-13 11:12 出处:互连网 责编:MyFAQ
              摘要:数据库连接缓冲池
一个数据库缓冲池指的是缓存于内存空间中的数据库物理连接,这些数据库连接可以被重复使用。数据库缓冲池对于提高Java 数据库应用程序的性能十分重要,尤其是当这个Java 数据库应用程序运行于中间层服务器环境时。

数据缓冲池存在于中间层服务器环境当中,可以被不同的Java 应用程序所调用。javax.sql.RowSet 包添加了对缓冲数据源的支持,即可以将缓冲池缓冲的数据库连接看作是一个是实实在在的数据源服务来使用。RowSet 包提供了好几个接口用于处理数据库缓冲池,主要的接口有:
1、DataSource 接口:DataSource 接口的实例对象代表了存在于中间层服务器中的缓冲数据源服务。使用它可以返还数据库缓冲池中现存的数据库连接,DataSource 接口的实例对象实际上是某个JNDI 服务的提供者,在使用它之前,该JNDI 服务对象必须先在中间层服务器环境中注册,并且和某个服务名绑定在一起,然后它才能被别的Java 应用程序调用。
2、ConnectionPoolDataSource 接口:该接口可以用于创建一个被缓冲于缓冲池的数据库物理连接,它有可能会被DataSource 接口的实例对象调用。
3、PooledConnection 接口:该接口代表被缓冲的数据库连接,它定义了一个getConnection()方法使用这个方法可以返回java.sql.Connection 接口的实例对象。
如何使用RowSet 包定义的类和接口操作数据库缓冲池,下面的JSP 代码段提供了一个简单的不完整的例子



<%

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup(“jdbc/EmployeeDB”);

// First get a Connection. Connection pooling is done

// internally by the DataSource object.

Connection con = ds.getConnection(jdbc/webDatabase” "sa” “");

// Do all the work as a single transaction (optional).

con.setAutoCommit(false);

// The actual work (queries and updates) would go here.

// Work is done using standard JDBC code as defined in the

// rest of the JDBC API.

// Commit the transaction.

con.commit();

// Close the connection. This returns the underlying physical

// database connection to the pool.

con.close();

%>

上面的JSP 代码段的运行机理如下

???? 1、首先程序代码获取初始化的JNDI 环境并且调用Context.lookup()方法从JNDI服务提供者那里获一个DataSource 对象

???? 2、中间层JNDI 服务提供者返回一个DataSource 对象给当前的Java 应用程序这个DataSource 对象代表了中间层服务上现存的缓冲数据源

????3、 应用程序调用DataSource 对象的getConnection()方法

???? 4、当DataSource 对象的getConnection()方法被调用时中间层服务器将查询数据库连接缓冲池中有没有PooledConnection 接口的实例对象这个PooledConnection对象将被用于与数据库建立物理上的数据库连接

???? 5、如果在缓冲池中命中了一个PooledCoonection 对象那么连接缓冲池将简单地更新内部的缓冲连接队列并将该PooledConnection 对象返回如果在缓冲池内没有找到现成的PooledConnection 对象那么ConnectionPoolDataSource 接口将会被用来产生一个新的PooledConnection 对象并将它返回以便应用程序使用

???? 6\中间层服务器调用PooledConnection 对象的getConnection()方法以便返还一个java.sql.Connection 对象给当前的Java 应用程序

???? 7、当中间层服务器调用PooledConnection 对象的getConnection()方法时JDBC 数据库驱动程序将会创建一个Connection 对象并且把它返回中间层服务器

???? 8、中间层服务器将Connection 对象返回给应用程序Java 应用程序可以认为这个Connection 对象是一个普通的JDBC Connection 对象使用它可以和数据库建立事实上的连接与数据库引擎产生交互操作

???? 9、当应用程序不需要使用Connection 对象时,可以调用Connection 接口的close()方法。请注意这种情况下close()方法并没有关闭事实上的数据库连接,仅仅是释放了被应用程序占用的数据库连接,并将它还给数据库连接缓冲池,数据库连接缓冲池会自动将这个数据库连接交给请求队列中下一个的应用程序使用。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有