首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tomcat配置数据库连接池

tomcat配置数据库连接池

作者头像
the5fire
发布于 2019-02-28 02:52:03
发布于 2019-02-28 02:52:03
4.4K00
代码可运行
举报
运行总次数:0
代码可运行

其实就是一个挺简单的配置,可却花费了我不少时间,何故?都是那个界面惹的祸呀。

数据库连接池是干啥的我就不用多少了,从名字上就可以看的出来(A:我看不出来。B:去看百科:http://baike.baidu.com/view/84055.htm)。因此在这就说一下简单的配置经过。

本来想通过tomcat 管理界面来完成数据库连接池配置,结果到apache官网下面一个apache-tomcat-5.5.31-admin,下载下来怎么搞也出来了界面,把所有的异常提示都看了,也查了,依然没有解决问题,貌似网上那些写文章的人都是经过一些挫折后都顺利通过,可我这确实试了网上各种方法,依然无法解决。郁闷。。。有知道的告诉俺一声。 于是跳过了界面的配置,毕竟界面不过是一个人性化的工具,重点还是配置文件的编写。

要配置数据库连接池需要用到一个配置文件: context.xml,在tomcat的conf目录下的文件。这里需要说明一下,配置conf下的context.xml文件之后,以后由该tomcat启动的网站都将会使用数据库连接池来进行连接,如果你只是想当前项目使用,那么你需要把这个context.xml文件剪切到项目中的META-INFO里面下。

具体配置,在context.xml里面的<Content></Content>标签中间添加:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Resource name="jdbc/drp1"
     auth="Container" type="javax.sql.DataSource"
     driverClassName="com.mysql.jdbc.Driver"
     maxIdle="20"
     maxWait="500"
     username="root"
     password="root"
     url="jdbc:mysql://192.168.1.100/drp1"
     maxActive="1000"
     removeAbandoned="true"
     removeAbandonedTimeout="60"
     logAbandoned="true"/>

比如我的是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- The contents of this file will be loaded for each web application -->
<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- <ResourceLink name="jdbc/drp1" global="jdbc/drp1" type="javax.sql.DataSource"/> -->
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->

    <Resource name="jdbc/drp1"
         auth="Container" type="javax.sql.DataSource"
         driverClassName="com.mysql.jdbc.Driver"
         maxIdle="20"
         maxWait="500"
         username="root"
         password="root"
         url="jdbc:mysql://192.168.1.100/drp1"
         maxActive="1000"
         removeAbandoned="true"
         removeAbandonedTimeout="60"
         logAbandoned="true"/>

    <!-- Uncomment this to enable Comet connection tacking (provides events
         on session expiration as well as webapp lifecycle) -->
    <!--
    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
    -->

</Context>

测试代码testDB.jsp:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@page import="java.sql.Connection"%>
<%@page import="javax.naming.Context"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%
   //连接池的获取
    Connection conn = null;
    ResultSet rs  =null;
    Statement stmt = null;
    // 初始化查找命名空间
    Context initContext = new InitialContext();
    // 找到DataSource
    DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/drp1");
    if(ds!=null){
        out.println("已经获得DataSource!");
        out.println("<br>");
        conn = ds.getConnection();
       try{
        stmt = conn.createStatement();
        String sql ="select * from t_user";
        rs = stmt.executeQuery(sql);
        out.println("以下是从数据库中读取出来的数据:<br>");
            while(rs.next()){
                out.println("<br>");
                out.println(rs.getString("user_id"));
            }
       }catch(Exception ex){
         ex.printStackTrace();
       }finally{
          //conn.close();
          rs.close();
          stmt.close();
       }
   }
%>

如果测试或者启动tomcat失败,可能是因为你没有把相应的包拷贝到tomcat的lib目录下:需要的jar有: commons-logging-x.x.x.jar(一些列文件) http://mirror.bjtu.edu.cn/apache/commons/logging/ ,commons-modeler-x.x.x.jar(一系列文件)http://mirror.bjtu.edu.cn/apache//commons/modeler/ ,要连接的数据库驱动,我这里是mysql 具体效果你可以把七宗的maxActive的值做一下修改,然后启动之后打开testDB页面,疯狂的刷新,如果发现没有出现错误,那你需要修改一下测试代码中关于conn.close这一块,你让它不关闭。这样的结果是你每次请求都会从连接池中拿出来一个连接,但是却不放回去,如果拿的数量达到了你设置的maxActive就会出现Timeout waiting for idle object异常。 因此在进行数据库方面的编程的时候要特别注意conn的操作,每次打开都要对应着关闭。养成良好的习惯。

补充一下,忘了配置web.xml文件了。在web.xml中需要添加<resource-ref></resource-ref> 标签:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/drp1</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

解释:为了让 JNDI 解析 java:comp/env/jdbc/drp1 引用,部署人员必须把 <resource-ref> 标签插入 web.xml 文件(Web 应用程序的部署描述符)。 <resource-ref> 标签的意思就是“这个组件依赖于外部资源”。

深入了解JNDI:http://www.ibm.com/developerworks/cn/java/j-jndi/index.html强力推荐

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-01-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tomcat5配置常见数据库连接池的例子.
环境: w2kp sp4, jsdk1.4.2_8; tomcat5.0.2.8; oracle817, sqlserver2000 sp3 , mysql5 beta
jack.yang
2025/04/05
2060
Tomcat 6 JNDI数据源详解
数据库连接池这个概念应该都不陌生,在Java中连接池也就是数据库的连接池,它是一种采用连接复用的思想避免多次连接造成资源的浪费机制。 最常见的连接池就是DBCP和C30P了,在tomcat中默认使用
用户1154259
2018/01/17
1K0
Tomcat 6 JNDI数据源详解
JNDI数据库连接池
JNDI的全称是java命名与目录接口(Java Naming and Directory Interface),是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口。我们可以把JNDI简单地理解为是一种将对象和名字绑定的技术,即指定一个资源名称,将该名称与某一资源或服务相关联,当需要访问其他组件和资源时,就需要使用JNDI服务进行定位,应用程序可以通过名字获取对应的对象或服务。 JNDI方式 - 配置Tomcat6.0 连接池 数据库连接池的基本思想就是为数据库连
汤高
2018/01/11
2.3K0
开源数据库连接池的使用
上篇博客刚刚说完如何去自定义一个数据库连接池,当然,这个自定义的数据库连接池是十分简易的,凭借自己的能力也无法写出优秀的连接池。但是,不用担心,我们可以使用开源的数据库连接池,开源的优势体现于此。
wangweijun
2020/01/19
1.5K0
tomcat7中配置c3p0数据库连接池 原
参考的是:http://bioubiou.iteye.com/blog/1776589和http://bbs.csdn.net/topics/390708897
克虏伯
2019/04/15
9950
tomcat7中配置c3p0数据库连接池
                                                                            原
[数据库连接池二]Java数据库连接池--C3P0和JDNI.
前言: 上一篇文章中讲了DBCP的用法以及实现原理, 这一篇再来说下C3P0和JDNI的用法.  1.1、C3P0数据源   C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。C3P0数据源在项目开发中使用得比较多。   c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能 1.2、在应用程序中加入C3P0连接池   1.导入相关jar包        
一枝花算不算浪漫
2018/05/18
1.2K0
Tomcat中用JNDI方式加载JDBC DataSource以连接数据库
下载与所要连接的数据库版本对应的JDBC驱动程序,加入到应用的CLASSPATH。如果用tomcat部署,tomcat中最好也加上(笔者觉得好像没必要加,可是不加的话会报错……所以还是加了)。应该有办法不加的,若有高手路过,请指点。
Java天坑
2018/10/23
8800
JDBC(三)数据库连接池(DBCP、C3P0)
前言   这段时间状态有一点浮躁,希望自己静下心来。还有特别多的东西还没有学懂。需要学习的东西非常的多,加油! 一、JDBC复习   Java Data Base Connectivity,java数据库连接,在需要存储一些数据,或者拿到一些数据的时候,就需要往数据库里存取数据。那么java如何连接数据库呢?需要哪些步骤? 1.1、注册驱动   1)什么是驱动      驱动就是JDBC实现类,通俗点讲,就是能够连接到数据库功能的东西就是驱动,由于市面上有很多数据库,Oracle、MySql等等,所以jav
用户1195962
2018/01/18
3.9K0
JDBC(三)数据库连接池(DBCP、C3P0)
hibernate 在tomcat7.X 下配置mysql数据源「建议收藏」
今天刚看到hibernate,发如今hibernate配置数据源时网上的资料都太久远了,一般以tomcat 5 版本号下的配置居多。而tomcat 7下的配置略有变化,新手找资料困难,可能会略受打击,故整理资料与大家共享。也可作备忘之用。若有不当之处。还请指教!
全栈程序员站长
2022/07/07
6100
java数据库连接池
Java数据库连接池是一种用于管理数据库连接的技术,它可以大大提高应用程序的性能和可扩展性。下面是一个简单的Java数据库连接池示例,以连接到MySQL数据库并执行查询。
堕落飞鸟
2023/04/03
1.1K0
Java Web学习总结之数据库连接池
  用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示:
Java团长
2018/08/06
1K0
数据源及分层开发
Java Naming and Directory Interface,Java命名和目录接口
xiaozhangStu
2023/05/04
4110
Tomcat配置JNDI数据源
本文将介绍Tomcat配置JNDI数据源的方法,主要分为配置局部数据源(仅供单个应用使用)和全局数据源(所有用该Tomcat的应用都可以使用) 一、思考 从我们学习Web开发以来,我们都是通过程序代码来实现数据库的访问的。从一开始直接将数据库配置信息写在代码中,到后来将配置信息抽取出来写在了Properties文件中,我们访问数据库的代码更加精简。 而通过JNDI方式访问数据库则更为直接,JNDI连接数据库的方式直接将数据库信息放在Tomcat中,而项目代码里直接通过JNDI技术就可以得到数据源。他们之间通
陈树义
2018/04/13
2.3K0
tomcat数据源配置
配置webRoot/WEB-INF/aurora.database/datasource.config文件:
栋先生
2018/09/29
3.6K0
tomcat数据源配置
数据库连接池-tomcat-jdbc食用笔记
现在 主流的数据库连接池有:Proxool、C3P0、DBCP、tomcat-jdbc、Druid。其中tomcat-jdbc是tomcat服务器比较可靠的 数据库连接池。 Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是DBCP存在一些问题:     DBCP 是单线程的,为了保证线程安全会锁整个连接池     DBCP 性能不佳     DBCP 太复杂,超过60个类,发展滞后。     因此,通常J2EE中还会使用其它的高性能连接池,如C3P0,还有阿里系
斯武丶风晴
2018/03/01
3.8K0
数据库连接池-tomcat-jdbc食用笔记
数据库连接池入门(c3p0、Druid)
数据库连接池其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
共饮一杯无
2022/11/28
5080
数据库连接池入门(c3p0、Druid)
JDBC【数据库连接池、DbUtils框架、分页】
1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的。。。 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开、关闭连接造成系统性能低下 编写连接池 编写连接池需实现java.sql.DataSource接口 创建批量的Connection用LinkedList保存【既然是个池,当然用集合保存、、LinkedList底层是链表,对增删性能较好】 实现getConnetion(),让getConnection()每次调用,都是在LinkedList中取一个
Java3y
2018/03/15
1.1K0
JDBC【数据库连接池、DbUtils框架、分页】
数据库连接池简单连接
模型      -----     Model 视图      -----     View 控制器  -----     Controller
qubianzhong
2018/08/10
3.4K0
Eclipse配置JNDI连接池
之前用Eclipse JEE开发web工程,按照网上的一些说法,配置,发现很麻烦。而且每次project重新remove再加载,配置就丢失了。
pollyduan
2019/11/04
1.1K0
Tomcat-9.JNDI资源
Tomcat为每个在其上运行的web应用提供了一个JNDI的** InitialContext**实现实例,它与Java EE应用服务器提供的对应类完全兼容。 Java EE标准在/WEB-INF/web.xml文件中提供了一系列标准元素,用来引用或者定义资源。
悠扬前奏
2019/05/28
1.3K0
相关推荐
tomcat5配置常见数据库连接池的例子.
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档