由于基于HTTP协议的Web程序是无状态的,因此,在应用程序中使用JDBC时,每次处理客户端请求都会重新建立数据库链接,如果客户端的请求频繁的话,这将会消耗非常多的资源,因此,在Tomcat中提供了数据库连接池技术,数据库连接池负责分配、管理和释放数据库链接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个数据库连接,在使用完一个数据库连接后,将其归还数据库连接池,以备其他程序使用,在Tomcat中配置数据库连接池有如下两种方法:

1.配置全局的数据库连接池

(1)在Tomcat安装目录\conf\server.xml文件中找到<GlobalNamingResources>标签,并加入一个子标签<Resource>,这个子标签的配置如下:

<!--Connect MySqlDb-->
<Resource name="jdbc/DBname" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"
username="root"
password="jiangwei"
maxActive="200"
maxIdle="50"
maxWait="3000"/>

(test为数据库名称)

上面的配置代码有几个和数据库连接池性能有关的属性需要说明一下:

<1>maxActive:连接池可以存储的最大连接数,也就是应用程序可以同时获得的最大连接数。这个属性值一般根据Web程序的最大访问量设置

<2>maxIdle:最大空闲连接数。当应用程序使用完一个数据库连接后,如果连接池中存储的连接数小于maxIdle,这个数据库连接并不马上释放,而是存储在连接池中,以备其他程序使用,这个属性值一般根据Web程序的平均访问量设置

<3>maxWait:暂时无法获得数据库连接的等待时间(单位:毫秒)。如果应用程序从数据库连接池中获得的数据库连接已经等于maxActive,而且都没有归还给数据库连接池,这时在有程序想获得数据库连接,就会等待maxWait所指定的时间,如果超过maxWait所指定的时间还无法获得数据库连接,就会抛出异常。

<4>其他参数这里就不多做介绍了

(2)在Tomcat安装目录\conf\Catalina\localhost中建立一个webdemo.xml文件(文件名要和<Context>标签中的path属性值一致,同时也要和项目名称一致),然后在webdemo.xml中输入以下内容:

<Context path="/MySqlDataSourceDemo" doBase="MySqlDataSourceDemo" debug="0">
<ResourceLink name="jdbc/DBname" global="jdbc/DBname" type="javax.sql.DataSource"/>
</Context>

至此全局配置数据库连接池的方法就到这结束了,要记得从新启动服务器才有效

2.局部配置数据库连接池

在Tomcat安装目录\conf\Catalina\localhost中建立一个webdemo.xml文件(文件名要和<Context>标签中的path属性值一致,同时也要和项目名称一致),然后在webdemo.xml中输入以下内容:

<Context path="/webdemo" docBase="webdemo" debug="0">
<Resource name="jdbc/DBname" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"
username="root"
password="jiangwei"
maxActive="200"
maxIdle="50"
maxWait="3000"/>
</Context>

(test为数据库名称)

同样也需要重新启动服务器才会有效果

最后在代码中访问:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Context sourceCtx;
try {
sourceCtx = new InitialContext();
DataSource ds = (DataSource) sourceCtx.lookup("java:comp/env/jdbc/DBname");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
stmt.executeQuery("select * from student");
ResultSet rs = stmt.getResultSet();
rs.next();
out.print(rs.getString(1));
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
out.flush();
out.close();
}
注意:
(1)Tomcat 错误“inside the host appBase has been specified, and will be ignored”
错误信息:
警告: A docBase D:/Tomcat/webapps/myApp inside the host appBase has been specified, and will be ignored
错误原因:
假设要部署工程 "myApp", 放到了 ${catalina.home}/webapps 下。(这相当于隐性的定义了一个 docBase ,指向
" ${catalina.home}/webapps/myApp " )。
同时在 /conf/Catalina/localhost 下建立了配置文件 myApp.xml ,在其中定义了 docBase , 目标指向 " ${catalina.home}/webapps/myApp " 。
这样,在 Tomcat 启动的时候,先找到了 myApp.xml 配置文件中定义的 docBase, 然后 Tomcat 自动检测 ${catalina.home}/webapps 下是否存放了合法的工程,并自动加载(根据配置文件的设置)。这样,Tomcat 又找到了一个相同的 docBase, 所以输出了错误信息。
解决办法:
将 myApp 工程 从 ${catalina.home}/webapps 目录移出, 然后 修改 配置文件 myApp.xml 指向该目录。即在Tomcat安装目录中的webapps目录中删除myApp应用
(2)最好使用第二种方式局部配置数据库连接池的方法,因为对于全局的配置数据库连接池中修改server.xml这个文件最好不要做修改,后面可能还需要做修改,所以如果我们要做修改的话,最好拷贝一份出来!





												

Apache中配置数据库连接池(数据源)的更多相关文章

  1. tomcat项目中配置数据库连接池

    1. 在项目中新建context.xml文件,不要在tomcat服务器的目录中修改context.xml(会对整个服务器生效)..   在web项目的META-INF中存放context.xml 2. ...

  2. 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...

  3. java配置数据库连接池的方法步骤

    java配置数据库连接池的方法步骤 java配置数据库连接池的方法步骤,需要的朋友可以参考一下   先来了解下什么是数据库连接池数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vecto ...

  4. WebSphere配置数据库连接池

    通过WebSphere配置数据库连接池一共需要三项:     1.配置连接驱动,在这里叫:JDBC提供程序;    2.配置数据库连接池,在这里叫:配置数据源;  3.配置数据库登录帐号,密码,在这里 ...

  5. SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池

    三.读取外部的资源配置文件并配置数据库连接池 1.读取外部的资源配置文件 通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: @Configuration ...

  6. 项目经验——jboss 配置数据库连接池

    数据库的连接和关闭是非常消耗系统资源的,在多层结构的应用环境中,这种资源消耗又直接的反映到系统性能上来.在项目实际应用中,最常用的解决方案便是建立数据库连接池. 一.数据库连接池基本原理 当程序启动时 ...

  7. Druid + spring 配置数据库连接池

    1. Druid的简介 Druid是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBo ...

  8. Jsp中使用数据库连接池.

    原文 Jsp中使用数据库连接池. 1. 在tomcat服务器目录下面的conf中找到一个叫Context.xml的配置文件,在其中加入以下代码 <Resource name="jdbc ...

  9. web.config文件中配置数据库连接的两种方式

    web.config文件中配置数据库连接的两种方式 标签: 数据库webconfig 2015-04-28 18:18 31590人阅读 评论(1)收藏举报    分类: 数据库(74)  在网站开发 ...

随机推荐

  1. Hadoop 家族技能图谱skill-map

    ----# Hadoop 家族技能图谱- Hadoop- Zookeeper- Avro- Chukwa- Ambari- Whirr- Bigtop- HCatalog- Hue- HBase- P ...

  2. php环境搭建以及优化

    WampServer 配置伪静态 httpd.conf文件 搜索找到“LoadModule rewrite_module modules/mod_rewrite.so”这一行,去掉前面的“#”: 搜索 ...

  3. PouchContainer 容器技术演进助力阿里云原生升级

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 作者 | 杨育兵(沈陵) 阿里巴巴高级技术专家 我们从 2016 年开始在集团推广全面的镜像化容器化,今年是集团全面镜像化容器 ...

  4. 关于sql中日期操作

    select * from account where  DAYOFWEEK('2019-11-30') =7 limit 10 DAYOFWEEK对应结果: 周日:1 周一:2 周二:3 周三:4 ...

  5. 运维 03 Linux之文档与目录结构

    Linux之文档与目录结构   Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到 ...

  6. 3.Jmeter 快速入门教程(三-1) --添加响应断言(即loadrunner中所指的检查点)

    上一节课,我们创建了一个测试场景,并进行了少量vuser的负载测试. 有时候我们执行了测试,但是发现并不是所有事务都执行成功了. 那是因为我们只是发起了测试,但并没有对每次请求测试的返回作校验. 所以 ...

  7. Safari的CSS HACK方法

    以前的文章里提到过IE6/IE7/IE8/IE9/.Firefox的CSS HACK方法,那么Safari的CSS HACK是什么呢?   请看以下CSS代码: .box { color: black ...

  8. 专业解决 MySQL 查询速度慢与性能差!

    Java技术栈 ,一般把连接数设置得大一些). 并发量:同一时刻数据库服务器处理的请求数量 3.超高的 CPU使用率:CPU资源耗尽出现宕机. 4.磁盘 IO:磁盘 IO性能突然下降.大量消耗磁盘性能 ...

  9. leetcode.矩阵.766托普里茨矩阵-Java

    1. 具体题目 如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵.给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True. 示例 1: 输入: ma ...

  10. c# PID算法入门

    离开工控行业已经有一段时间了,最近回忆起以前的工作,又对 PID 算法有了兴趣.所以写了一个小项目,希望可以帮到需要的人,也算是对那段工作经历的一个总结. 这是一个 winform 的项目.负载是一个 ...