当前位置:文档之家› tomcat数据库连接池

tomcat数据库连接池

tomcat数据库连接池
tomcat数据库连接池

tomcat+SQL Server2000数据库连接池配置- -

环境:

1. 数据库:Microsoft SQL Server 2000

2. 数据库驱动程序:net.sourceforge.jtds.jdbc.Driver

JNDI(Java Naming and Directory Interface)概述:

Tomcat4(5)提供了一个与Java Enterprise Edition应用服务相兼容的

JNDI--InitialContext实现实例。它的初始数据设置在

$CATALINA_HOME/conf/server.xml文件里,并可能在网页应用环境描述

(/WEB-INF/web.xml)里被下列元素引用:

1) --环境入口,设置应用程序如何操作。

2) --资源参数,一般是数据库驱动程序、JavaMail Session、自定义类工厂等。

3) --在Servlet 2.4里用来简化设置不需认证信息的资源资源如环境参数、resource-ref变量。

InitialContext在网页应用程序初始化时被设置,用来支持网页应用程序组件。所有的入口和资源都放在JNDI命名空间里的java:comp/env段里。点击下列网址以获取更多信息:

1) Java命名和目录接口(Java Naming and Directory Interface)

2) J2EE平台说明(J2EE Platform Specification)

设置JNDI资源

设置JNDI资源要在$CATALINA_HOME/conf/server.xml文件里使用下列标志符:1) --设置域个可变的JNDI InitialContext入口的名字和值(同上面说的等价)。

2) --设置应用程序可用的资源的名字和类型(同上面说的

等价)。

3) --设置Java资源类工厂的名称或将用的JavaBean属性。

4) --给全局JNDI环境(JNDI Context)添加一个链接。

上述这些标志符必须放在之间(针对专门的网页应用程序)或之间。

此外,设在网页应用环境描述(Web Application Descriptor)

(/WEB-INF/web.xml)里的名字和值也在初始环境(Initial Context)里被设置,当被元素值允许时将被重设初始值。

全局变量能在子元素的里设置。

数据库连接池概述:

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术

能明显提高对数据库操作的性能。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;

2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

配置Tomcat数据库连接池的前提:

1. 必须装有Java运行环境;

2. 必须有SQL Server2000数据库服务器(可以不在本地);

3. 必须有jtds.jar,并将它放在$CATALINA_HOME/common/lib目录下(只能是这里)。使用它是因为Microsoft公司的Java SQL Server驱动程序不支持二次查询,可到网上搜到。目前使用的是jtds-0.6.jar。

在$CATALINA_HOME/conf/server.xml里设置数据库连接池:

下面是配置的代码,必须放在之间。

prefix="localhost_quality_log." suffix=".txt" timestamp="true"/>

type="javax.sql.DataSource"/>

maxActive

100

maxIdle

30

maxWait

10000

removeAbandoned

true

removeAbandonedTimeout

60

logAbandoned

false

factory

https://www.doczj.com/doc/f713301709.html,mons.dbcp.BasicDataSourceFactory

username

Iorishinier

password

mypasswd

driverClassName

net.sourceforge.jtds.jdbc.Driver

url

jdbc:jtds:sqlserver://127.0.0.1:1433/jiangpf

下面是一些参数的说明:

其中:

1) path 指定路径,这里设定的是$CATALINA_HOME/webapps下的quality目录;

2) docBase 文件根目录。

3) reloader 当网页被更新时是否重新编译。

4) maxActive 连接池的最大数据库连接数。设为0表示无限制。

5) maxIdle 数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。

6) maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。

7) removeAbandoned 回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。

8) removeAbandonedTimeout 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。

9) logAbandoned 将被遗弃的数据库连接的回收记入日志。

10) driverClassName JDBC驱动程序。

11) url 数据库连接字符串

在$CATALINA_HOME/webapps/quality/WEB-INF/web.xml里设置被引用的资源:下面是配置代码,必须放在里。

connectDB test

jdbc/connectDB

javax.sql.DataSource

Container

下面是一下参数的必要说明:

1) description 对被引用的资源的描述。

2) res-ref-name 资源名称。见上面的

name="jdbc/connectDB">

3) res-type 资源类型。见上面的

auth="Container" type="javax.sql.DataSource"/>

在JSP中使用资源:

这是在$CATALINA_HOME/webapps/quality下的某级子目录里的jsp网页文件部分代码:

<%@ page contentType="text/html;charset=GBK"%>

<%@ page errorPage="error.jsp"%>

<%@ page import="javax.naming.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="java.sql.*"%>

<%

………………

………………

// 数据库操作

Context ctx=null;

Connection cnn=null;

Statement stmt=null;

ResultSet rs=null;

try

{

ctx=new InitialContext();

if(ctx==null)

throw new Exception("没有匹配的环境");

DataSource

ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");

if(ds==null)

throw new Exception("没有匹配数据库");

cnn=ds.getConnection();

stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSe t.CONCUR_READ_ONLY);

rs=stmt.executeQuery("select * from table1");

………………

………………

}

finally

{

if(rs!=null)

rs.close();

if(stmt!=null)

stmt.close();

if(cnn!=null)

cnn.close();

if(ctx!=null)

ctx.close();

}

%>

代码说明:

DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB"); 上面这句应用了刚才设的资源。

资源使用完要释放,尤其是Context资源,见try-catch-finally部分的finally 代码段,这是一种好的习惯。

- 作者:eagle080 2005年06月16日, 星

Tomcat5的数据库连接池配置时间:2007-12-24 12:26:27 来源:站长资讯收集整理作者:在Tomcat5.5.20这个版本下数据库连接池的配置,及程序对连接池的JNDI查找,并提供相应测试代码。最后指出配置及应用过程中的常见问题及解决方法。

1 .配置环境:Tomcat5.5.20 + jdk1.5.0_09+ Sql Server 2000+Win2000

2.配置步骤:

第一步:

启动Tomcat,打开IE在地址栏内输入http://localhost:8080/admin 进入Tomcat的管理界面;点击右边的Data Sources 在右上角的下拉菜单中选择Create New Data Source 在下边的输入框中输入需要的配置信息。之后保存并提交。

JNDI Name:jdbc/SQL //(SQL为自己所命的名字)

Data Source URL:jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=employeedb JDBC Driver Class: com.microsoft.jdbc.sqlserver.SQLServerDriver

User Name:sa

Password: sa

Max. Active Connections: 4 //最大连接数

Max. Idle Connections: 2 //最大的空闲连接数

Max. Wait for Connection:5000 //最大等待连接时间

第二步:配置tomcat添加JDBC驱动

首先要下载安装sqlserver-jdbc-驱动,然后将其lib下的三个jar文件放到tomcat/common/lib下。

第三步:配置tomcat安装路下的/con/context.xml文件,添加如下内容:

< Resource name="jdbc/SQL" type="javax.sql.DataSource" maxActive="4"

maxIdle="2" username="sa" maxWait="5000"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

password="sa"

url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=employeedb" />

第四步:测试:编写JSP文件。

< %@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

< %@ page import="java.sql.*"%>

< %@ page import="javax.sql.*"%>

< %@ page import="javax.naming.*"%>

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

< html>

< head>

< title>tomcat数据库连接池技术测试< /title>

< /head>

< body>

Tomcat数据库连接池测试

< br>

< %

Connection conn = null;

Context initCtx = new InitialContext();

Context ctx = (Context) initCtx.lookup("java:comp/env");

javax.sql.DataSource ds = (javax.sql.DataSource) ctx

.lookup("jdbc/SQL");

conn = ds.getConnection();

Statement stmt = conn.createStatement();

PreparedStatement ps = conn.prepareStatement("select * from employee");

ResultSet rs = ps.executeQuery();

while (rs.next()) {

out.println(rs.getInt(1) + "< br>");

out.println(rs.getString(2) + "< br>");

out.println(rs.getString(3) + "< br>");

out.println(rs.getInt(4) + "< br>");

}

rs.close();

stmt.close();

conn.close();

out.println("测试成功");

%>

< /body>

< /html>

本篇文章来源于站长资讯网原文链接:

https://www.doczj.com/doc/f713301709.html,/2007/119847042017453.shtml

JSP中tomcat的SQL Server2000数据库连接池的配置

作者:未知来源:转载发布时间:2005-9-16 10:12:18 发布人:acx

减小字体增大字体颜色默认灰度橄榄色绿色蓝色褐色红色

JSP中tomcat的SQL Server2000数据库连接池的配置

环境:

1. 数据库:Microsoft SQL Server 2000

2. 数据库驱动程序:net.sourceforge.jtds.jdbc.Driver

JNDI(Java Naming and Directory Interface)概述:

Tomcat4(5)提供了一个与Java Enterprise Edition应用服务相兼容的JNDI--InitialContext实现实例。它的初始数据设置在$CA TALINA_HOME/conf/server.xml文件里,并可能在网页应用环境描述(/WEB-INF/web.xml)里被下列元素引用:

1) --环境入口,设置应用程序如何操作。

2) --资源参数,一般是数据库驱动程序、JavaMail Session、自定义类工厂等。

3) --在Servlet 2.4里用来简化设置不需认证信息的资源资源如环境参数、resource-ref变量。

InitialContext在网页应用程序初始化时被设置,用来支持网页应用程序组件。所有的入口和资源都放在JNDI命名空间里的java:comp/env段里。点击下列网址以获取更多信息:

1) Java命名和目录接口(Java Naming and Directory Interface)

2) J2EE平台说明(J2EE Platform Specification)

设置JNDI资源

设置JNDI资源要在$CA TALINA_HOME/conf/server.xml文件里使用下列标志符:

1) --设置域个可变的JNDI InitialContext入口的名字和值(同上面说的等价)。

2) --设置应用程序可用的资源的名字和类型(同上面说的等价)。

3) --设置Java资源类工厂的名称或将用的JavaBean属性。

4) --给全局JNDI环境(JNDI Context)添加一个链接。

上述这些标志符必须放在之间(针对专门的网页应用程序)或之间。

此外,设在网页应用环境描述(Web Application Descriptor)(/WEB-INF/web.xml)里的名字和值也在初始环境(Initial Context)里被设置,当被元素值允许时将被重设初始值。

全局变量能在子元素的里设置。

数据库连接池概述:

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;

2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。配置Tomcat数据库连接池的前提:

1. 必须装有Java运行环境;

2. 必须有SQL Server2000数据库服务器(可以不在本地);

3. 必须有jtds.jar,并将它放在$CA TALINA_HOME/common/lib目录下(只能是这里)。使用它是因为Microsoft公司的Java SQL Server驱动程序不支持二次查询,可到网上搜到。目前使用的是jtds-0.6.jar。

在$CATALINA_HOME/conf/server.xml里设置数据库连接池:

下面是配置的代码,必须放在之间。

maxActive

100

maxIdle

30

maxWait

10000

removeAbandoned

true

removeAbandonedTimeout

60

logAbandoned

false

factory

https://www.doczj.com/doc/f713301709.html,mons.dbcp.BasicDataSourceFactory

username

Iorishinier

password

mypasswd

driverClassName

net.sourceforge.jtds.jdbc.Driver

url

jdbc:jtds:sqlserver://127.127.127.127:1433/Northwind

下面是一些参数的说明:

其中:

1) path 指定路径,这里设定的是$CA TALINA_HOME/webapps下的quality目录;

2) docBase 文件根目录。

3) reloader 当网页被更新时是否重新编译。

4) maxActive 连接池的最大数据库连接数。设为0表示无限制。

5) maxIdle 数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。

6) maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。

7) removeAbandoned 回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。

8) removeAbandonedTimeout 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。

9) logAbandoned 将被遗弃的数据库连接的回收记入日志。

10) driverClassName JDBC驱动程序。

11) url 数据库连接字符串

在$CATALINA_HOME/webapps/quality/WEB-INF/web.xml里设置被引用的资源:

下面是配置代码,必须放在里。

connectDB test

jdbc/connectDB

javax.sql.DataSource

Container

下面是一下参数的必要说明:

1) description 对被引用的资源的描述。

2) res-ref-name 资源名称。见上面的

3) res-type 资源类型。见上面的

在JSP中使用资源:

这是在$CATALINA_HOME/webapps/quality下的某级子目录里的jsp网页文件部分代码:<%@ page contentType="text/html;charset=GBK"%>

<%@ page errorPage="error.jsp"%>

<%@ page import="javax.naming.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="java.sql.*"%>

<%

………………

………………

// 数据库操作

Context ctx=null;

Connection cnn=null;

Statement stmt=null;

ResultSet rs=null;

try

{

ctx=new InitialContext();

if(ctx==null)

throw new Exception("没有匹配的环境");

DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");

if(ds==null)

throw new Exception("没有匹配数据库");

cnn=ds.getConnection();

stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ ONL Y);

rs=stmt.executeQuery("select * from table1");

………………

………………

}

finally

{

if(rs!=null)

rs.close();

if(stmt!=null)

stmt.close();

if(cnn!=null)

cnn.close();

if(ctx!=null)

ctx.close();

}

%>

代码说明:

DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");

上面这句应用了刚才设的资源。

资源使用完要释放,尤其是Context资源,见try-catch-finally部分的finally代码段,这是一种好的习惯。资源释放时如果释放了上级资源,下级资源将先被释放。如:释放了ctx,那么资源释放顺序将是rs,stmt,cnn,ctx。换句话说,如果释放了ctx,那么rs,stmt和cnn 都将不可用了。

这里的释放资源只是将数据库连接返回连接池中,并不是把资源真正释放掉,见数据库连接

池概述。

将本文收藏到QQ书签与更多好友分享

本篇文章来源于中国建站之家原文链接:https://www.doczj.com/doc/f713301709.html,/Article/10/132/2005/2005091613182.html

JSP中tomcat的SQL Server2000数据库连

接池的配置

作者: 来源:https://www.doczj.com/doc/f713301709.html,/ 时间:2005-11-5 0:25:07

同时按下键盘Ctrl+D会有惊喜发生

2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

配置Tomcat数据库连接池的前提:

1. 必须装有Java运行环境;

2. 必须有SQL Server2000数据库服务器(可以不在本地);

3. 必须有jtds.jar,并将它放在$CATALINA_HOME/common/lib目录下(只能是这里)。使用它是因为Microsoft公司的Java SQL Server驱动程序不支持二

次查询,可到网上搜到。目前使用的是jtds-0.6.jar。

在$CATALINA_HOME/conf/server.xml里设置数据库连接池:

下面是配置的代码,必须放在之间。

prefix="localhost_quality_log." suffix=".txt" timestamp="true"/>

type="javax.sql.DataSource"/>

maxActive

100

maxIdle

30

maxWait

10000

removeAbandoned

true

removeAbandonedTimeout

<>

tomcat5.5.9+sql2000数据库连接池配置

https://www.doczj.com/doc/f713301709.html, 05年12月06日 00:00 我要

投稿

关键词:Tomcat5 , 数据库连接池, 配置, SQL , 数据, CA , 连接

终于解决了困扰多天的连接池的问题,写下这编文章与大家一起分享。我是在tomcat5.5.9下配置的,tomcat5.5.X和以前的版本有一些差别,所以配置上也有差别。我就说一下在tomcat5.5.9配置的基本步骤:(确定你以安装好tomcat5.5.9、sql2000)

1、把数据库JDBC驱动拷贝到%TOMCAT_HOME%/common/lib 和%TOMCAT_HOME%/webapps/yourweb/WEB-INF/lib下(我的web文件夹名字叫quickstart)

这一步大家都知道,不然tomcat无法与数据库连接。

2、修改%TOMCAT_HOME%/conf/server.xml文件,在之间

添加以下内容:

name="jdbc/quickstart"

type="javax.sql.DataSource"

password="123456"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

maxIdle="2"

maxWait="5000"

username="sa"

url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart" maxActive="4"/>

以上内容根据大家的具体情况进行相应修改,比如:把name="jdbc/quickstart"中的quickstart改成和你web文件夹名称一样,把password="123456"中的“123456”改成你数据库的密码。

3、在%TOMCAT_HOME%/conf/Catalina/localhost下新建一个与你web文件夹同名的xml文件(我的是quickstart.xml)

这一步非常重要,如果没有这步就会出错,会出现org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for

connect URL 'null'

这样的错误,在文件中加入第2步的内容,如下:

name="jdbc/quickstart"

type="javax.sql.DataSource"

password="123456"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

maxIdle="2"

maxWait="5000"

username="sa"

url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart"

maxActive="4"/>

根据个人具体情况进行相应修改。

4、修改%TOMCAT_HOME%/webapps/yourweb/WEB-INF下的web.xml文件,在之间添加以下内容

sqlserverDB Connection

jdbc/quickstart

javax.sql.DataSource

Container

jdbc/quickstart中的quickstart改成你的web文件夹名称。

5、测试,在quickstart下新建一个index.jsp文件

<%@ page contentType="text/html; charset=gb2312" %><%@ page import="javax.naming.*" %><%@ page import="javax.sql.*" %><%@ page import="java.sql.*" %>JDBC Test<% Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

ResultSetMetaData md=null;

try

{

Context initCtx=new InitialContext();

DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/quickstart");

if(ds!=null)

{

out.println("已经获得DataSource");

out.println(ds.toString());

conn=ds.getConnection();

stmt=conn.createStatement();

out.println("aa");

中tomcat的SQL Server2000数据库连接池的配置

环境:

1. 数据库:Microsoft SQL Server 2000

2. 数据库驱动程序:net.sourceforge.jtds.jdbc.Driver

JNDI(Java Naming and Directory Interface)概述:

Tomcat4(5)提供了一个与Java Enterprise Edition应用服务相兼容的JNDI--InitialContext实现实例。它的初始数据设置在$CA TALINA_HOME/conf/server.xml文件里,并可能在网页应用环境描述(/WEB-INF/web.xml)里被下列元素引用:

1) --环境入口,设置应用程序如何操作。

2) --资源参数,一般是数据库驱动程序、JavaMail Session、自定义类工厂等。

3) --在Servlet 2.4里用来简化设置不需认证信息的资源资源如环境参数、resource-ref变量。

InitialContext在网页应用程序初始化时被设置,用来支持网页应用程序组件。所有的入口和资源都放在JNDI命名空间里的java:comp/env段里。点击下列网址以获取更多信息:

1) Java命名和目录接口(Java Naming and Directory Interface)

2) J2EE平台说明(J2EE Platform Specification)

设置JNDI资源

设置JNDI资源要在$CA TALINA_HOME/conf/server.xml文件里使用下列标志符:

1) --设置域个可变的JNDI InitialContext入口的名字和值(同上面说的等价)。

2) --设置应用程序可用的资源的名字和类型(同上面说的等价)。

3) --设置Java资源类工厂的名称或将用的JavaBean属性。

4) --给全局JNDI环境(JNDI Context)添加一个链接。

上述这些标志符必须放在之间(针对专门的网页应用程序)或之间。

此外,设在网页应用环境描述(Web Application Descriptor)(/WEB-INF/web.xml)里的名字和值也在初始环境(Initial Context)里被设置,当被元素值允许时将被重设初始值。

全局变量能在子元素的里设置。

数据库连接池概述:

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证

至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:

1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;

2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。

3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。配置Tomcat数据库连接池的前提:

1. 必须装有Java运行环境;

2. 必须有SQL Server2000数据库服务器(可以不在本地);

3. 必须有jtds.jar,并将它放在$CA TALINA_HOME/common/lib目录下(只能是这里)。使用它是因为Microsoft公司的Java SQL Server驱动程序不支持二次查询,可到网上搜到。目前使用的是jtds-0.6.jar。

在$CATALINA_HOME/conf/server.xml里设置数据库连接池:

下面是配置的代码,必须放在之间。

maxActive

100

maxIdle

30

maxWait

10000

removeAbandoned

true

removeAbandonedTimeout

60

logAbandoned

false

factory

https://www.doczj.com/doc/f713301709.html,mons.dbcp.BasicDataSourceFactory

username

Iorishinier

password

mypasswd

driverClassName

net.sourceforge.jtds.jdbc.Driver

url

jdbc:jtds:sqlserver://127.127.127.127:1433/Northwind

下面是一些参数的说明:

其中:

1) path 指定路径,这里设定的是$CA TALINA_HOME/webapps下的quality目录;

2) docBase 文件根目录。

3) reloader 当网页被更新时是否重新编译。

4) maxActive 连接池的最大数据库连接数。设为0表示无限制。

5) maxIdle 数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。

6) maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。

7) removeAbandoned 回收被遗弃的(一般是忘了释放的)数据库连接到连接池中。

8) removeAbandonedTimeout 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。

9) logAbandoned 将被遗弃的数据库连接的回收记入日志。

10) driverClassName JDBC驱动程序。

11) url 数据库连接字符串

在$CATALINA_HOME/webapps/quality/WEB-INF/web.xml里设置被引用的资源:

下面是配置代码,必须放在里。

connectDB test

jdbc/connectDB

javax.sql.DataSource

Container

下面是一下参数的必要说明:

1) description 对被引用的资源的描述。

2) res-ref-name 资源名称。见上面的

3) res-type 资源类型。见上面的

在JSP中使用资源:

这是在$CATALINA_HOME/webapps/quality下的某级子目录里的jsp网页文件部分代码:<%@ page contentType="text/html;charset=GBK"%>

<%@ page errorPage="error.jsp"%>

<%@ page import="javax.naming.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="java.sql.*"%>

<%

………………

………………

// 数据库操作

Context ctx=null;

Connection cnn=null;

Statement stmt=null;

数据库连接池的好处

数据库连接池的好处.txt-//自私,让我们只看见自己却容不下别人。如果发短信给你喜欢的人,他不回,不要再发。看着你的相片,我就特冲动的想P成黑白挂墙上!有时,不是世界太虚伪,只是,我们太天真。数据库连接池的好处 对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。 连接复用。通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。 对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放所造成的问题的。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套高效的连接分配、使用策略,最终目标是实现连接的高效、安全的复用。 数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接获取和返回方法。如: 外部使用者可通过getConnection 方法获取连接,使用完毕后再通过releaseConnection 方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 数据库连接池技术带来的优势: 1.资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。 2.更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。 3.新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。

关于DBCP数据库连接池配置整理

1.简介 DBCP(DataBase Connection Pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是tomcat 使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。 dbcp提供了数据库连接池可以在spring,iBatis,hibernate中调用dbcp完成数据库连接,框架一般都提供了dbcp连接的方法; tomcat中也提供了dbcp的jndi设置方法,也可以不在框架中使用dbcp,单独使用dbcp 需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar 2.参数说明 翻译自https://www.doczj.com/doc/f713301709.html,

这里可以开启PreparedStatements池. 当开启时, 将为每个连接创建一个statement 池,并且被下面方法创建的PreparedStatements将被缓存起来: ●public PreparedStatement prepareStatement(String sql) ●public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) 如果容许则可以使用下面的方式来获取底层连接: Connection conn = ds.getConnection(); Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate(); ... conn.close() 默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.(关闭底层 连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,并且仅当需要直接访问驱动的特定功能时使用. 注意: 不要关闭底层连接, 只能关闭前面的那个 如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发。 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.在resultset中游历不被计算为被使用。 3.使用注意点

hibernate配置数据库连接池的三种方法

?数据库连接池的概念(是什么,做什么用的,有什么好处) ?首先,我们还是老套的讲讲连接池的基本概念,概念理解清楚了,我们也知道后面是怎么回事了。?以前我们程序连接数据库的时候,每一次连接数据库都要一个连接,用完后再释放。如果频繁的数据库操作,就会导致性能很低。连接池的出现,为开发过程提供了一个很好的管理平台。当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。 ?而Hibernate的出现把连接池的使用引入了一个新的利用方式,让你充分享受配置化给开发带来的便利。 1 C3P0 (以验证可用) 只需在hibernate.cfg.xml中加入 omdssd_admin omdssd_hskj jdbc:oracle:thin:@10.142.1.138:1521:omds oracle.jdbc.driver.OracleDriver org.hibernate.dialect.Oracle9Dialect true true oracle10g_112 org.hibernate.connection.C3P0ConnectionProvider 5 //连接池中数据库连接的最小数目 30 //连接池中数据库连接的最大数目 1800 //设定数据库连接的过期时间,以秒为单位 50 //可以被缓存的PreparedStatement实例的最大数目。缓存适量的PreparedStatement实例,能够大大提高Hibernate的性能。 120//在使数据库连接自动生效之前处于空闲状态的时间,以秒为单位

01关于数据库连接池和动态数据源的实现课案

关于数据库连接池和动态数据源的实现、使用 对于一个简单的数据库应用,由于数据库的访问不是很频繁。这时可以很简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样就不会带来更多的性能上的开销。但是对于复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。这就意味我们需要去考虑怎样把一个连接多次使用。 连接复用,通过建立数据库的连接池以及一套连接使用的管理策略,使得一个数据库连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭给系统带来的开销。外部使用者可以通过getConnection方法获取连接,使用完毕之后再通过releaseConnection 方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 一般的数据库连接池,是使用配置文件在项目启动的使用加载配置文件,根据文件中描述,生成对应的数据库连接池。连接池有许多的属性比如:连接池的初始化连接处、连接池的最大连接数、每次的自增连接数、最大空闲连接数等等 数据库连接池技术带来的优势: 1.资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减 少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以 及数据库临时进程/线程的数量) 2.更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用,此 时连接的初始化工作均已完成,对于业务处理而言,直接利用现有的可以连接,避 免了数据库连接初始化和释放过程的时间开销,从而缩短了系统整体的响应时间。 3. 统一的连接管理,避免数据库连接泄露 在较为完备的数据库连接池实现中可以根据预先的连接占用超时设定,强制回收被 占用的连接。从而避免常规数据库连接操作中可能出现的资源泄露。 一个数据库连接池的实现 1.前言 数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游标(ResultSet)、Statement、连接(Connection)等资源),往往会直接导致系统的稳定。这类不稳定因素,不单单由数据库或者系统本身一方引起,只有系统正式使用后,随着流量、用户的增加,才会逐步显露。 在基于Java开发的系统中,JDBC是程序员和数据库打交道的主要途径,提供了完备的数据库操作方法接口。但考虑到规范的适用性,JDBC只提供了最直接的数据库操作规范,对数据库资源管理,如:对物理连接的管理及缓冲,期望第三方应用服务器(Application Server)的提供。下面以JDBC规范为基础,介绍相关的数据库连接池机制,并就如果以简单的方式,实现有效地管理数据库资源介绍相关实现技术。

数据库连接池原理

一、连接池的基本工作原理 1、基本概念及原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量和使用情况,为系统开发、测试及性能调整提供依据。 2、服务器自带的连接池 JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如BEA的WebLogic 和IBM的WebSphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。 二、连接池关键问题分析 1、并发问题 为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为Java语言自身提供了对并发管理的支持,使用synchronized关键字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized关键字,如:public synchronized Connection getConnection () 2、多数据库服务器和多用户 对于大型的企业级应用,常常需要同时连接不同的数据库(如连接Oracle和Sybase)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的地址、用户名、密码等信息。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。 对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。 3、事务处理 我们知道,事务具有原子性,此时要求对数据库的操作符合“ALL-ALL-NOTHING”原则,即对于一组SQL语句要么全做,要么全不做。 在Java语言中,Connection类本身提供了对事务的支持,可以通过设置Connection的AutoCommit属性为false,然后显式的调用commit或rollback方法来实现。但要高效的进行Connection复用,就必须提供相应的事务支持机制。可采用每一个事务独占一个连接来实现,这种方法可以大大降低事务管理的复杂性。 4、连接池的分配与释放 连接池的分配与释放,对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。 对于连接的管理可使用空闲池。即把已经创建但尚未分配出去的连接按创建时间存放到一个空闲池中。每当用户请求一个连接时,系统首先检查空闲池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的那个连接分配给它(实际是先做连接是否有效的判断,如果可用就分配给用户,如果不可用就把这个连接从空闲池删掉,重新检测空闲池是否还有连接),如果没有则检查当前所开连接池是否达到连接池所允许的最大连接数(maxConn),如果没有达到,就新建一个连接,如果已经达到,就等待一定的时间(timeout)。如果在等待的时间内有连接被释放出来就可以把这个连接分配给等待的用户,如果等待时间

Java数据库连接池

Java数据库连接池 Tomcat6.0 Tomcat6.0连接池配置 1. 配置tomcat下的conf下的context.xml文件,在之间添加连接池配置: 2. 配置你的应用下的web.xml中的之间加入 DB Connection jdbc/oracle javax.sql.DataSource Container 3.把连接数据库的第三方驱动放到common/lib下面就ok了 4.测试程序我就不写了 1.配置tomcat下的conf下的server.xml中的host标签中添加连接池配置: 1.

Java中数据库连接池原理机制

连接池的基本工作原理 基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效治理。我们知道,对于共享资源,有一个很闻名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的治理机制监视数据库的连接的数量?使用情况,为系统开发?测试及性能调整提供依据。 服务器自带的连接池 JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如BEA的WebLogic 和IBM的WebSphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。 连接池要害问题分析

1、并发问题 为了使连接治理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为java语言自身提供了对并发治理的支持,使用synchronized要害字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized要害字,如:public synchronized Connection getConnection() 2、多数据库服务器和多用户 对于大型的企业级应用,经常需要同时连接不同的数据库(如连接Oracle和Sybase)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池治理类,在连接池治理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址()?用户名()?密码()等信息。如tx.url=172.21.15.123:5000/tx_it,https://www.doczj.com/doc/f713301709.html,er=yang,tx.passWord=yang321。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池治理类实例为每个连接池实例取一个名字,通过不同的名字来治理不同的连接池。 对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。 3、事务处理 我们知道,事务具有原子性,此时要求对数据库的操作符合“ALL-ALL-NOTHING”原则,即对于一组SQL语句要么全做,要么全不做。

04. 数据库连接池(DataSource)

数据库连接池(DataSource) 1、概念 在三层架构中,DAO层直接与数据库交互,首先要建立与数据库的连接,如果采用下图(a)所示,则用户每次的请求都要创建连接,用完又关闭,而数据库连接的创建和关闭需要消耗较大的资源,因此实际开发中常采用图(b)所示,在应用程序启动时创建一个包含多个Connection对象的连接池,DAO层使用时直接从池子里取一个Connection对象,用完后放回池子,避免了重复创建关闭数据库连接造成的开销。 2、数据库连接池原理 下面的代码模拟了数据库连接池的原理(代码中的JDBCUtil工具类见《MySQL(JDBC)》),池子里保持了10个Connection对象,并提供了getConnection和release方法: public class ConnectionPoolDemo { //连接池实际上就是一个List private static List pool = new LinkedList();

static{//加载连接池类时在池子中放入10个连接 for(int i = 0;i < 10;i ++){ Connection conn; try { conn = JDBCUtil.getConnection(); pool.add(conn); } catch (Exception e) { e.printStackTrace(); } } } //从池子中取出一个连接 public synchronized Connection getConnection(){ return pool.remove(0); } //把连接还回池子中 public static void release(Connection conn){ pool.add(conn); } } 3、编写一个符合规范的连接池 上节模拟数据库连接池原理的代码也实现了一个简单连接池,但是不符合规范(Sun公司制定)。编写一个符合规范的连接池需要实现javax.sql.DataSource接口。(DataSource接口中定义了两个重载的getConnection方法) 编程难点☆:当用户使用完Connection,执行conn.close()时,Connection对象应保证将自己还给连接池,而不要把conn关闭。之所由Connection对象保证将自己返回到LinkedList 中,是因为DataSource接口中并未定义上节例子中类似release的方法。所以必须改写Connection中的close方法,使得用户执行conn.close()时,将Connection对象还给连接池。解决方案☆:改写驱动程序中Connection类的close方法。对已知类的某些方法进行功能上的改变,有以下几种编码方案(☆): 1)编写子类,覆写需要改变的方法。此处行不通,原因有:①程序中不知道继承哪个驱动的Connection实现类②数据库驱动对Connection接口的实现类是final的,不允许被继承。 2)装饰(包装)设计模式(静态代理) ①定义包装类:MyConnection,该类完成了对com.mysql.jdbc.Connection类的包装。 关键词:保持被包装对象的原有信息、对某个/某些方法进行改写。包装类的编写过程如下:/**

连接池优缺点

数据库连接池的好处 对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数 据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但 是对于一个复杂的数据库应用,情况就完全不同了。频繁的建立、关闭连接,会极大的减低系统 的性能,因为对于连接的使用成了系统性能的瓶颈。 连接复用。通过建立一个数据库连接池以及一套连接使用管理策略,使得一个数据库连接可以 得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。 对于共享资源,有一个很著名的设计模式:资源池。该模式正是为了解决资源频繁分配、释放 所造成的问题的。把该模式应用到数据库连接管理领域,就是建立一个数据库连接池,提供一套 高效的连接分配、使用策略,最终目标是实现连接的高效、安全的复用。 数据库连接池的基本原理是在内部对象池中维护一定数量的数据库连接,并对外暴露数据库连接 获取和返回方法。如: 外部使用者可通过getConnection方法获取连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 数据库连接池技术带来的优势: 1.资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的 基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。 2.更快的系统响应速度 数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。此时连接的初始 化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和 释放过程的时间开销,从而缩减了系统整体响应时间。 3.新的资源分配手段 对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池 技术,几年钱也许还是个新鲜话题,对于目前的业务系统而言,如果设计中还没有考虑到连接池 的应用,那么…….快在设计文档中加上这部分的内容吧。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 4.统一的连接管理,避免数据库连接泄漏 在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从 而避免了常规数据库连接操作中可能出现的资源泄漏。一个最小化的数据库连接池实现: 连接池的优缺点 优点 使用连接池的最主要的优点是性能。创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的(网络)距离,而且这个过程通常是一个很耗时的过程。而采用 数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到 数据库服务器,这样就节省了时间。 缺点 数据库连接池中可能存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。

数据库连接池的研究与实现lunwen

数据库连接池的研究与实现 摘要 在基于JDBC的数据库实际应用开发中,对数据库连接的管理是一个重点也是一个难点,频繁对数据库的连接与关闭操作、多客户对数据库的并发访问,一定程度上决定了WEB系统的响应以及应用性能。使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍、分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在数据库连接池方面的使用现状后,总结一了些数据库连接池开发程序中容易忽略的问题。并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略,在这种策略思想的指导下实际开发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和容易,从实际上论证了这种设计方案的可行性。 关键词:连接池;数据库;JDBC;并发访问

Research and realization of the Database Connection Pool Abstract In the practically application development of database based on JDBC, the management of database connection is a key point and also a difficulty. The response and performance of the WEB system are depended on frequently connecting, closing and multi-user accessing in a certain extent. Using the Database Connection Pool can provide management and maintenance for connections of the database. The upper applications may access the database recourse via the Database Connection Pool, in order to upgrade system performance and fully utilize the system recourse. This article summarizes some issues which are easily ignored in the application development of the Database Connection Pool by the way of introducing and analyzing the basal working principles of the Database Connection Pool ,comprehending the using actuality of the Database Connection Pool on the popular WEB servers. Besides, I established a comparatively highly effective policy of the Connection Pool management after having learned and comprehended key technique of implementing the Connectivity Pool, and actually had developed a Database Connection Pool module under the guidance of that policy, causing the access of system resource by the upper applications via current Connectivity Pool becoming relatively highly effective and easy, demonstrated the feasibility of this design project in practice. Key words:Database Connection Pool; Database; JDBC; Concurrence access

数据库连接池配置的几种方法

今天遇到了关于数据源连接池配置的问题,发现有很多种方式可以配置,现总结如下,希望对大家有所帮助:(以Mysql数据库为例) 一,Tomcat配置数据源: 方式一:在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,内容如下: 方式二:在tomcat6.0的目录conf下面的context.xml中,修改原来的context标签,改成内容如下: WEB-INF/web.xml 方式三:在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内改成如下形式:

JAVA数据库连接池详解

Java中数据库连接池原理机制的详细讲解 1、基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量?使用情况,为系统开发?测试及性能调整提供依据。 2、服务器自带的连接池 JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如BEA的W ebLogic和IBM的WebSphere等提供了连接池的机制,但是必须有其第三方的专用类方法支持连接池的用法。 连接池关键问题分析 1、并发问题 为了使连接管理服务具有最大的通用性,必须考虑多线程环境,即并发问题。这个问题相对比较好解决,因为Java语言自身提供了对并发管理的支持,使用synchronized 关键字即可确保线程是同步的。使用方法为直接在类方法前面加上synchronized关键字,如: public synchronized Connection getConnection() 2、多数据库服务器和多用户 对于大型的企业级应用,常常需要同时连接不同的数据库(如连接Oracle和Sybas e)。如何连接不同的数据库呢?我们采用的策略是:设计一个符合单例模式的连接池管理类,在连接池管理类的唯一实例被创建时读取一个资源文件,其中资源文件中存放着多个数据库的url地址()?用户名()?密码()等信息。如tx.url=172.21.15.123:5000/tx_it,https://www.doczj.com/doc/f713301709.html,er=yan g,tx.password=yang321。根据资源文件提供的信息,创建多个连接池类的实例,每一个实例都是一个特定数据库的连接池。连接池管理类实例为每个连接池实例取一个名字,通过不同的名字来管理不同的连接池。 对于同一个数据库有多个用户使用不同的名称和密码访问的情况,也可以通过资源文件处理,即在资源文件中设置多个具有相同url地址,但具有不同用户名和密码的数据库连接信息。

Java实现数据库连接池的代码.

1 package com.kyo.connection; 2 3 import java.sql.Connection; 4 import java.sql.DatabaseMetaData; 5 import java.sql.Driver; 6 import java.sql.DriverManager; 7 import java.sql.SQLException; 8 import java.sql.Statement; 9 import java.util.Enumeration; 10 import java.util.Vector; 11 12 public class ConnectionPool { 13 14 private ConnectionParam param; 15 16 private String testTable = ""; // 测试连接是否可用的测试表名,默认没 有测试表 17 18 private Vector connections = null; // 存放连接池中数据库连接的向量 , 初始时为 19 // null,它中存放的对象为PooledConnection 型 20 21 public void setParam(ConnectionParam param { 22 this.param = param; 23 } 24 25 public ConnectionParam getParam( { 26 return param;

27 } 28 29 /** 30 * 构造函数 31 * 32 * @param param 33 */ 34 public ConnectionPool(ConnectionParam param { 35 this.param = param; 36 } 37 38 /** 39 * 40 * 获取测试数据库表的名字 41 * 42 * @return 测试数据库表的名字 43 */ 44 45 public String getTestTable( { 46 return this.testTable; 47 } 48 49 /** 50 * 51 * 设置测试表的名字 52 * 53 * @param testTable

JAVA数据库连接池

package com.persistent.util; import java.sql.*; public class DBConnector { private Connection connection; private Statement statement; public DBConnector(Connection connection,Statement statement){ this.connection = connection; this.statement = statement; } public Connection getConnection(){ return this.connection; } public Statement getStatement(){ return this.statement; } public void setConnection(Connection connection){ this.connection = connection; } public void setStatement(Statement statement){ this.statement = statement; } } package com.persistent.util; import java.io.*; import java.util.*; import java.sql.*; import com.microsoft.util.*; import com.microsoft.jdbc.base.*; import com.microsoft.jdbc.sqlserver.*; public class DBConnectorPool { private String dbDriver; private String dbURL;

数据库连接池配置步骤

为了使用 was连接池,部署应用之前需要配置 步骤1:新建JDBC提供程序。 2.选择作用域【集群 =cluster08】 3.点击新建按钮

4.选择【数据类型】为 【Oracle】 5.选择【提供程序类型】为 【Oracle JDBC Driver】 7.填写【名称】和【描述】(默 认即可),点击【下一步】 8.查看ojdbc14.jar的路径 (/oracle/ora10g/jdbc/lib),并确保root有读

9.填写【类路径】,修改路径 (/oracle/ora10g/jdbc/lib/ojdbc14.jar)。点击 下一步。 注意:【ojdbc14.jar】的路径为绝对路径。 必须保证启动was应用的用户(root)对该 文件有读权限。如果无法添加读权限,上 传文件【ojdbc14.jar】到was下的新建的 lib目录下,并赋予读权限。并把绝对路径 填写到【类路径】。 10.点击【完成】

11.点击【保存】 步骤2:新建【数据源】 1.【资源】下,点击【数据 源】

2.点击【新建】 3.填写【数据源名】和【JNDI名称】为 【jfdb】,点击【下一步】。 注意:此处【JNDI名称】的内容与应用 的applicationContext-datasource.xml文 件中记入的jndi名字一致)

4.选择现有的JDBC提供程序【Oracle JDBC Driver】,点击下一步。 5.填写URL(内容与jdbc.properties中得jdbc.url的内容保持一致) 6.选择【数据存储器helper类名】为【Oracle10g数据存储器helper】 7.CMP为默认设置,点击下一步。

数据库连接池

数据库连接池技术研究和实现 唐满英 (永州市职业技术学院,湖南永州 425100) 摘要数据库和数据库连接池技术已经得到了广泛的应用,数据库连接池建立的例子也很多。本文先简要介绍了数据库连接池的概念,然后分析了连接池的管理,即:连接池建立、连接池管理和连接池关闭。随后介绍了如何在基于Java的基础上建立连接池:定义连接池类、创建管理类、管理类与主程序的接口。最后简要分析了数据库连接池的优化架构,优化的主要目标是能动态调整连接池的容量,避免资源浪费。 关键词数据库;连接池;技术实现 1 数据库连接池简介 数据库连接池是一个存储数据库连接的缓冲池。在实际应用中,同一个数据库可能有多个用户反复连接和断开数据库,这会消耗数据库的很多资源,造成浪费。在具体操作上,连接池会选择性地保留程序释放的数据库连接,以便用户以后使用。当用户在连接上调用Open时,池进程就会检查池中是否有可用的连接,如果某个池连接可用,会将该连接返回给调用者,而不是打开新连接,以此节约连接资源,提高数据库的使用效率。同理,应用程序在该连接上调用Close时,池进程会将连接返回到活动连接池中,而不是真正关闭连接。连接返回到池中之后,即可供其它用户在下一个Open调用中使用。图1表示了连接池遇到新连接时的工作过程[1]: 图1 数据库连接池的工作机制 图1解释了数据库连接池的机制,即当用户申数据库连接时,在数据库池内连接匹配的情况下,便会从数据库连接池中直接获得一个一直被保持的连接。

2 连接池管理 连接池管理主要由三部分组成:连接池的建立、连接的使用管理、连接池的关闭。通过这三部分,连接池成为众多连接对象的“缓冲存储池”,也就是连接对象的集合体,它提供一种管理机制来控制连接池内部连接对象的数目,对应用程序提供获取、释放连接的接口。 2.1 连接池的建立 应用程序中要建立一个在系统初始化时就已分配好连接数目的静态连接池,且这些连接不能随意关闭。这些连接对象作为系统可分配的自由连接,以后所使用的连接都从连接池获取,这样可避免随意建立、释放连接所带来的开销。 2.2 连接的使用管理 连接的使用管理是连接池管理机制的核心。有了连接池,所有用户申请连接时直接向连接池申请,而非数据库。同理,所有用户释放连接时,是向连接池释放连接而非关闭数据库连接。连接池分配释放策略是[2]:连接池先检查有否未被分配的空闲连接,若有则把空闲连接分配给用户;反之要检查连接个数是否达到了连接上限。如果没有达到上限可以建立一个新连接分配给用户,否则需要等待,直到有别的用户释放连接时再把释放后的连接分配给该用户。由此可知:连接池技术能够保证数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源开销。 2.3 连接池的关闭 用户退出程序时,与连接池的建立是一个相反的过程,即把在连接池建立时向数据库申请的连接对象统一归还给数据库连接池,以便连接池分配给其它用户。 3 基于java的连接池类的设计 主要要分为三个步骤:定义连接池类;创建管理类;管理类与主程序的接口。 3.1 定义连接池类 数据库连接池设计的方法很多,但是连接池的构建首先都要确定类,本方法构建如下五个类[3]:①GetProperty类,该类的功能用于从文件poolfile中读取数据库连接池的一般属性,如连接用户名,密码等验证信息。采用该方法的好处就是连接池不用关心操作的是什么类型的数据库,以及数据库的属性。当数据库的类型或属性发生改变时,管理员只要修改文件PropFile即可。②ConnectionFactory类,该类为连接池的工厂类,其中定义一些参数如:正在使用的连接池参数use、空闲连接池参数idle、最大连接数maxactive、最小连接数minactive、当前连接数active和管理策略参数等。③FactoryMangeThreadl类,该类的功能是实现静态管理和动态管理两种策略,并设置了最大限制和恒定的连接数,它将连接池又细分为两级小连接池,一个空闲连接池,一个使用池。④FactoryParam类,该类是连接池工厂的参数类,定义了最大连接数和最小连接数,并定义了回收策略,提供良好的用户接口等。⑤Substituteconnection类,该类定义了数据库连接和监控连接创建的语句,数据库上一次访问的时间和数据库的状态是否为忙,要接管的函数的名字等参数。它通过触发java.1ang.reflect包中invocationHandler的invoke方法,运用动态代理机制接管接口的方法接管,并实现了连接池的名字与其对象之间的映射。

相关主题
文本预览
相关文档 最新文档