Tomcat中设置数据源和连接池

对于大型网站来说,信息查询的次数会非常多,每次查询都需要这样的过程:加载驱动程序、创建连接、创建语句对象、执行SQL语句、关闭这些对象。这样使得每一个用户访问的时候都需要服务器做出相应,这样的话服务器端承受巨大的压力,如此效率就会下降,建立与数据库之间的连接和释放连接会占用很多系统的时间。如果能够让所有用户共享连接,仅仅创建一次连接,谁需要连接谁就使用,这样可以大大减少创建连接所占用的时间。让所有用户共享连接,并且在需要的时候就能够使用,就需要有专门的机制来创建连接,数据库连接池(Dababase Connection Pool,简称DBCP)技术就是来解决这个问题的。

工作原理:

如果连接池中有空闲的连接,Tomcat就分配给客户端;如果没有空闲的连接,请求客户端将会在队列池中等待。

配置过程:

实例使用的是Tomcat 7.0,使用的方法是在Tomcat的conf/server.xml中配置虚拟目录时配置

在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内添加池配置

在说该方法之前,先说一下,如何用tomcat配置虚拟目录

配置虚拟目录:

在tomcat\conf下server.xml中找到

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
在
<Host>标签下面添加:
<Context path="/website" docBase="F:/myweb" reloadable="true"></Context>

注意:

docBase要改成你的实际项目的目录

path为虚拟路径,访问时的路径,注意一定要加“/”

debug建议设置为0

reloadable设置为true

接下来添加池配置,如下

<Context path="/myWebSiteV2.0" docBase="D:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\myWebSiteV2.0" reloadable="true">
            <Resource name="TestDBCP"
            auth="Container"
            type="javax.sql.DataSource"
            username="sa"
            password="123456"
            maxIdle="10"
            maxWait="-1"
            maxActive="200"
            driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
            url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=TestServlet"
            />
</Context>

各属性的含义如下:

  • name:给数据源设置名字
  • auth:表示数据源由谁管理(Container  容器,即tomcat管理)
  • username 和 password:连接数据库的用户名和口令
  • maxIdle:池中最大空闲数据库连接数。如果为-1,则没有限制。
  • axWait:等待一个连接变成可用的最长时间,单位是ms,这个例子中是10毫秒,如果超时将抛出异常。如果设置为-1,将无限等待
  • maxActive:池中连接的最大数。如果为0,则没有最大数量限制。
  • driverClassName:数据库的JDBC驱动程序的名字
  • url:JDBC连接数据库的url

最后在Servlet中获得连接即可:

/**
 * @(#)ConnDB.java
 *
 *连接到数据库
 * @author
 * @version 2.00 2017/3/26
 */
package com.chongqing;  

import java.sql.*;
import javax.sql.*;
import javax.naming.*;

public class ConnDB {  

   private Connection ct = null;  

   public Connection getConn(){  

        try {  

        	//使用数据源连接池的方式连接数据库
        	//创建一个上下文环境
            Context con=new javax.naming.InitialContext();  

            //通过con得到数据源
            DataSource ds=(DataSource)con.lookup("java:comp/env/TestDBCP");  //这里的TestDBCP是数据源的名字  

            ct=ds.getConnection();  

            System.out.println ("使用连接池的方式"); 

        	/*
            //连接到数据库
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            ct = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=TestServlet","sa","123456");
            */
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
        //不用关闭资源  

        return ct;
   }
}
时间: 2024-11-19 09:48:22

Tomcat中设置数据源和连接池的相关文章

Tomcat中配置数据源和连接池

(1)为什么需要配置数据源和连接池? 我们知道在每次java程序俩接数据库的时候我们都需要请求连接数据库然后打开读取数据然后关闭, 这样使得每一个用户访问的时候都需要服务器做出相应,这样的话服务器端承受巨大的压力,如此效率就会下降, 为了解决这个问题我们可以让数据库提前打开连接等待用户连接当有用户连接的时候,就把数据库已存在的连接 给用户即可 而我们就把这条连接叫做"连接池"  当连接池中的连接足够的话 就分给用户,如果不够用户则在"|队列池"中等待: (2)实现过

JDBC数据源和连接池

数据库连接池就是在应用程序启动时就创建足够多的数据库连接池,在java程序中需要访问 数据库时就可以通过数据源取得一个空闲连接,用完在返还到连接池中 实例: 在Tomcat6.0中+MySQL5.5数据源和连接池的配置 (1)将数据库的JDBC驱动程序复制到<CATALINA_HOME>/common/lib目录下 (2)在<CATALINA_HOME>/conf/server.xml中配置数据源和连接池,例如 <Context path="/JSP_JDBC&qu

数据源和连接池

数据源 从接触DBMS开始就在用数据源(DataSource),它其中很重要的一个作用就是可以管理Connection,管理的方式也就是经常听到的ConnectionPool.它的管理其实就是对DriverManager获取Connection进行了包装. 下面就首先看看用DataSource来取代DriverManager来获取Connection的好处: 一般DataSource内部会用一个连接池来缓存Connection,这样获得Connection速度很快,可以大幅度提高数据库的访问速度

数据源和连接池介绍

为什么使用数据源和连接池 我们现在开发的应用程序,基本上都是基于数据的,而且是需要频繁的连接数据库的.如果每次操作都连接数据库,然后关闭,这样做性能一定会受限.所以,我们一定要想办法复用数据库的连接.因此针对这种情况,提出了数据源和连接池的概念.使用数据源和连接池可以达到复用数据库连接的目的. 数据源和连接池概念 其实,数据源和连接池是两个不同的概念.有些人会把它们弄混. 数据源是用来连接数据库 获得Connection对象的,在Java中使用javax.sql.DataSource接口来表示.

【数据库学习笔记】(4)JDBC数据源和连接池

在 Tomcat 中设置 HTTP 基本认证

在 Tomcat 中设置 HTTP 基本认证的示例 在 $TOMCAT_HOME\conf\tomcat-users.xml 文件中配置角色和用户: <tomcat-users> <role rolename="all"/> <role rolename="admin"/> <user username="all" password="all" roles="all"

mybatis3中自带的连接池的问题

想在新项目中使用mybatis,于是这几天在看官方问题. 发现mytatis3中自带的连接池,不知道性能如何? 配置了连接池,为了验证连接池返回的连接是否是同一个连接 把poolMaximumActiveConnections这个属性配置为1,那么连接池中最多只有一个活跃连接了 然后用以下代码验证: while (true) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); if (str.equals("bye

在Tomcat中使用数据连接池

在TOMCAT中使用方法: 以mySql为例进行使用说明: 1.将mysql的jdbc驱动jar包(mysql-connector-java-3.1.13-bin.jar)拷到tomcat/common/lib目录下 2.配置Tomcat/conf/server.xml,在server.xml文件中找到 <GlobalNamingResources>标签并添加: <Resource name="jdbc/mysqljdbc"     <!--连接池的名称--&g

数据源和数据库连接池

Java中的数据源就是javax.sql.DataSource.DataSource的创建可以有不同的实现.DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接池. JNDI方式创建DataSource: (Java Naming and Directory Interface,Java命名和目录接口).首先要配置数据源的相关连接信息,也就是数据源连接池.该配置应该在Tomcat安装目录下的conf/context.xml文件中