EJB数据源和连接池.doc
文本预览下载声明
连接池和数据源
知识点
连接池和数据源的基本概念
配置Tomcat数据源
配置struts数据源
一.概述:
在实际项目的开发中,特别是web应用程序中,如Jsp,Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据方请求必须建立连接,存取数据,关闭连接等步骤,而数据库连接是一种非常昂贵的资源,频繁的建立连接,关闭连接必定是数据库性能降低,再者,JDBC直接连接数据库的方式还存在数据库连接泄漏问题。使用数据库连接池技术是解决上述问题的最常用的方法,在许多应用服务器(如 websphere, weblogic ,jBoss)中都提供了这种技术.
二.连接池实现的原理:
就是在应用启动时建立一定数量的数据库连接,并将这些数据库连接作为对象存储在一个容器对象中。而程序中所有的数据库请求访问都可以共享这些连接,这样,通过复用这些已经建立的数据库连接,不必在每次访问数据库时都重新建立连接,极大的节省了系统资源和时间。另外,为了回收并重新使用那些没有及时关闭的数据库连接,连接池都提供了一种超时回收机制。也就是当数据库的连接在指定的时间内没有活动,连接池就把这些连接重新放到可以使用的队列。新的连接请求到来时便可以再次使用这些连接。这种超时回收连接的机制可以克服数据库链接泄漏的问题。
三.几个常见的开源的数据库连接池
DBCP连接池
它是一个依赖于Jakata commons-pool对象池机制的数据库连接池,DBCP可以直
接在应用程序中使用。
官方下载网址:/commons/dbcp/
将下载後的文件解压获得三个jar文件
commons-dbcp-1.2.1.jar, commons-pool-1.3.jar, commons-collections-3.2.jar
将上述三个.jar文件保存到项目的WEB-INF\lib下,即加入到CLASSPATH中。
使用方法
直接在程序中使用
首先要创建BasicDataSource,然后通过它来获得数据库连接对象Connection
Properties p=new Properties();
1.4.2. 通过tomcat使用DBCP数据源
需要修改tomcat的server.xml文件或者配置位于tomcat文件夹下
conf\Catelina\local文件夹下的 “项目名称.xml”文件
Class.forName(“xool.ProxoolDriver”);//加载驱动程序
Connection conn=DriverManager.getConnection(proxool.)
三.在 Tomcat上配置连接池
与配置数据源基本相同。唯一需要的就是在server.xml文件中的ResourceParams标签
之间添加几个与连接池相关的参数设置。
配置连接池时需要添加的配置代码段:
!—回收被遗弃的(一般是忘了释放的)数据库链接到连接池中(
parameter
nameremoveAbandoned/name
valuetrue/value
/parameter
!—数据库链接超过60秒不用将视为被遗弃而回收到连接池中(
parameter
nameremoveAbandonedTimeout/name
value60/value
/parameter
!—将被遗弃的数据库链接的回收记入日至(
parameter
namelogAbandoned/name
valuetrue/value
/parameter
Tomcat中的数据源
数据源是JDBC2.0种引入的一个概念。并且在javax.sql包中定义了接口DataSource来描述这个概念。在数据库的JDBC驱动程序中有该接口的实现类。例如:
mysqlconnector-java-3.1.10-ben.jar中的com.mysql.jdbc.jdbc2.optional.MysqlDataSource类就实现了DataSource接口。
在程序中使用数据源有两种方式:一种是在程序中直接创建类的对象,该对象实现了JDBC驱动程序中的DataSource接口.并使用该对象获得数据库连接;另一种方法是使用JNDI注册数据源,然后在程序中查询JNDI服务中的数据源,这样用户就只需要提供一个逻辑名称,而不是数据库登录的具体细节。
配置数据源
要使用第二种形式的JNDI数据源,必须首先进行配置数据源的 JNDI命名服务。由于Tomcat提供了一个称为DBCP(Database Connection Pool)的数据源实现,所以可以在server.xml文件中进行数据源的配置即可。
安装DBCP
DBCP依赖于以下几个apache jakarta项目的几个公用包:
Co
显示全部