精华内容
下载资源
问答
  • 详细的tomcat目录下Context.xml的配置文件配置数据库连接池,
  • tomcat 配置 数据库连接

    万次阅读 2018-09-06 20:57:32
    1.在项目的META-INF下面,添加context.xml文件(指定单个项目使用数据库连接池,也可配置全局的): <?xml version="1.0" encoding="UTF-8"?> &amp...

    1.在项目的META-INF下面,添加context.xml文件(指定单个项目使用数据库连接池,也可配置全局的):

    <?xml version="1.0" encoding="UTF-8"?>
    <Context >  
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
        <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    
        <Resource  
            <!-- 数据库名称 -->
            name="drp"
             <!-- 数据源对应的java类型  -->
            type="javax.sql.DataSource" 
            <!-- 数据库连接池中最大连接数,0表示无限制  -->
            maxActive="3" 
             <!--连接池处于空闲状态的数据库连接的最大数目,取0表示不受限制--> 
            maxIdle="1" 
           <!--  最大等待连接时间,若超出此时间则出现异常,-1表示无限制 -->
            maxWait="1000"   
            <!-- 数据库连接地址 -->
            url="jdbc:oracle:thin:@localhost:1521:orcl"  
            <!-- 数据库驱动 -->
            driverClassName="oracle.jdbc.driver.OracleDriver" 
            <!-- 数据库登录名和密码  -->
            username="DRP" password="DRP123456"  
        />   
    </Context> 

    2.取得连接

    Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try { 
            //new DBCP....
            Context ctx = new InitialContext();
            //通过JNDI查找DataSource
            DataSource ds = (DataSource)ctx.lookup("java:comp/env/drp");
            conn = ds.getConnection();
            pstmt = conn.prepareStatement("select * from t_user");
            rs = pstmt.executeQuery();
            ...
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            if (rs != null) {rs.close();}
            if (pstmt != null) {pstmt.close();}
            if (conn != null) {
                //将Connection放到连接池中
                conn.close();
            }
        }   

    用完连接时一定要释放

          对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配﹑释放所造成的问题。为解决我们的问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。

    为什么使用连接池
          连接,是我们的编程语言与数据库交互的一种方式。我们经常会听到这么一句话“数据库连接很昂贵“。
          有人接受这种说法,却不知道它的真正含义。因此,下面通过实例解释它究竟是什么。
          下面是Mysql数据库创建连接的的一段代码:

    String connUrl ="jdbc:mysql://your.database.domain/yourDBname";  
    
    Class.forName("com.mysql.jdbc.Driver");  
    
    Connection con =DriverManager.getConnection (connUrl);  
    

          当我们创建了一个Connection对象,它在内部都执行了什么:

    1. “DriverManager”检查并注册驱动程序;
    2. “com.mysql.jdbc.Driver”就是我们注册了的驱动程序,它会在驱动程序类中调用“connect(url…)”方法。
    3. com.mysql.jdbc.Driver的connect方法根据我们请求的“connUrl”,创建一个“Socket连接”,连接到IP为“your.database.domain”,默认端口3306的数据库。
    4. 创建的Socket连接将被用来查询我们指定的数据库,并最终让程序返回得到一个结果。

          简单的获取一个连接,系统却要在背后做很多消耗资源的事情,大多时候,创建连接的时间比执行sql语句的时间还要长。

    传统的获取连接方式如下图所示:
    这里写图片描述
          用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。

    采用连接池技术后的过程如下:
    这里写图片描述
          连接过程:maxActive=”3” , maxIdle=”1” ,maxWait=”1000” ,在连接池处于空闲状态时,里面有1个连接,如果再有请求,连接池就会再创建连接,但连接池中最多有3个连接,如果第4个请求连接过来了,必须等待了,知道有个连接释放(断开连接时,连接不会立即被释放,而是1000毫秒后才释放),如果此时没有超时,第4个连接就用释放的,当没有用户连接时,连接池中还是保持1个连接
          数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。


    四个流行的Java连接池:

    • C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection
      和Statement 池的DataSources
      对象。(主页:http://sourceforge.net/projects/c3p0/
    • BoneCP 是一个开源的快速的 JDBC 连接池。BoneCP很小,只有四十几K(运行时需要log4j和Google
      Collections的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。另外个人觉得 BoneCP
      有个缺点是,JDBC驱动的加载是在连接池之外的,这样在一些应用服务器的配置上就不够灵活。当然,体积小并不是 BoneCP 优秀的原因,BoneCP 到底有什么突出的地方呢,请看看性能测试报告。(主页:http://jolbox.com/
    • DBCP(Database Connection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP目前 DBCP 有两个版本分别是 1.3 和 1.4。1.3 版本对应的是 JDK 1.4-1.5 和 JDBC 3,而1.4 版本对应 JDK 1.6 和 JDBC 4。因此在选择版本的时候要看看你用的是什么 JDK
      版本了,功能上倒是没有什么区别。(主页:http://commons.apache.org/dbcp/
    • Proxool是一个Java SQL
      Driver驱动程序,提供了对你选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中。完全可配置。快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。(主页:http://proxool.sourceforge.net/

    出现的问题
          连接次数不对应????

    有关文章:使用Tomcat Manager 远程部署war文件

    展开全文
  • tomcat数据库连接配置

    千次阅读 2016-01-30 18:18:31
    1. 在tomcat服务器目录下面的conf中找到一个叫Context.xml的配置文件,在其中加入以下代码 [html] view plain Resource name="jdbc/books" auth="Container"type="javax.sql.DataSource" maxActive="100" ...

    1. 在tomcat服务器目录下面的conf中找到一个叫Context.xml的配置文件,在其中加入以下代码

    [html] view plain
    1. <Resource name="jdbc/books"   
    2. auth="Container"type="javax.sql.DataSource" maxActive="100"   
    3. maxIdle="30" maxWait="10000" username="sa" password="120010"   
    4. driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"   
    5. url="jdbc:sqlserver://localhost:1433;DatabaseName=news"/>  

    maxActive="100"

     

    表示并发情况下最大可从连接池中获取的连接数。如果数据库不是单独,供一个应用使用,通过设置maxActive参数可以避免某个应用无限制

     

    的获取连接对其他应用造成影响,如果一个数据库只是用来支持一个应用那么maxActive理论上可以设置成该数据库可以支撑的最大连接数。

     

    maxActive只是表示通过连接池可以并发的获取的最大连接数。连接的获取与释放是双向,当应用程序并发请求连接池时,连接池就需要从数

     

    据库获取连接,那么但应用程序使用完连接并将连接归还给连接池时,连接池是否也同时将连接归还给数据库呢?很显然答案是否定的,如

     

    果那样的话连接池就变得多此一举,不但不能提高性能,反而会降低性能,那么但应用成归还连接后,连接池如何处理呢?

     

    maxIdle="30"

     

    如果在并发时达到了maxActive=100,那么连接池就必须从数据库中获取100个连接来供应用程序使用,当应用程序关闭连接后,由于

     

    maxIdle=30,因此并不是所有的连接都会归还给数据库,将会有30个连接保持在连接池种中,状态为空闲。

     

    minIdle=”2”

     

    最小默认情况下并不生效,它的含义是当连接池中的连接少有minIdle,系统监控线程将启动补充功能,一般情况下我们并不启动补充线程。

     

    问题:如何设置maxActive和maxIdle?

     

    理论上讲maxActive应该设置成应用的最大并发数,这样一来即便是在最大并发的情况下,应用依然能够从连接池中获取连接,但是困难时的

     

    是我们很难准确估计到最大并发数,设置成最大并发数是一种最优的服务质量保证,事实上,如果某个用户登录提示系统繁忙,那么在他再

     

    次登录时,可能系统资源已经充足,对于拜特资金管理系统我们建议将maxActive设置为系统注册人数的十分之一到二十分之一之间。例如系

     

    统的注册人数为1000,那么设置成50-100靠近100的数字,例如85或90。

     

     maxIdle对应的连接,实际上是连接池保持的长连接,这也是连接池发挥优势的部分,理论上讲保持较多的长连接,在应用请求时可以更快

     

    的响应,但是过多的连接保持,反而会消耗数据库大量的资源,因此maxIdle也并不是越大越好,同上例我们建议将 maxIdle设置成

     

    50-100中靠近50的数字,例如55。这样就能在兼顾最大并发同时,保持较少的数据库连接,而且在绝大多情况,能够为应用程序提供最快的

     

    相应速度。

     

     removeAbandoned="true"

     

    removeAbandonedTimeout="60"

     

    logAbandoned="true"

     

    有时粗心的程序编写者在从连接池中获取连接使用后忘记了连接的关闭,这样连池的连接就会逐渐达到maxActive直至连接池无法提供服务。

     

    现代连接池一般提供一种“智能”的检查,但设置了removeAbandoned="true"时,当连接池连接数到达(getNumIdle() < 2) and 

     

    (getNumActive() > getMaxActive() - 3)时便会启动连接回收,那种活动时间超过removeAbandonedTimeout="60"的连接将会被回收,同时

     

    如果logAbandoned="true"设置为true,程序在回收连接的同时会打印日志。removeAbandoned是连接池的高级功能,理论上这中配置不应该出

     

    现在实际的生产环境,因为有时应用程序执行长事务,可能这种情况下,会被连接池误回收,该种配置一般在程序测试阶段,为了定位连接

     

    泄漏的具体代码位置,被开启,生产环境中连接的关闭应该靠程序自己保证。

     

     

     

    2.  第二步将 数据驱动.jar 放入tomcat目录下的lib或common\lib下面

    3.  第三步,打开应用程序的 Web.xml文件,添加以下配置


    [html] view plain
    1. <resource-ref>  
    2. <res-ref-name>jdbc/books</res-ref-name>  
    3. <res-type>javax.sql.DataSource</res-type>  
    4. <res-auth>Container</res-auth>  
    5. </resource-ref>  

    节点数据来源于Context.xml里面设置的数据

    4. 在java文件中先导入以下包

    [java] view plain
    1. import javax.sql.DataSource;  
    2. import javax.naming.Context;  
    3. import javax.naming.InitialContext;  
    4. import javax.naming.NamingException;  

    将原来的数据库连接操作

    [java] view plain
    1. Class.forName("oracle.jdbc.driver.OracleDriver");  
    2. if( conn == null || conn.isClosed() )   
    3. conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL",  
    4. "system",  
    5. "accp");  

    换成

    [java] view plain
    1. Context c = new InitialContext();  
    2. DataSource ds = (DataSource)c.lookup("java:comp/env/jdbc/books");  
    3. conn = ds.getConnection();  

    记得要捕获 NamingException 与 SQLException 异常

     

    使用连接池的好处是

     

    数据库操作性能得到提升

    通过连接池管理数据库的连接与释放、提高了系统资源的使用效率

    展开全文
  • Tomcat配置数据库连接加密访问

    千次阅读 2018-07-26 11:44:32
    1.jar包地址:AES加密访问数据库连接 2.将jar包放置到tomcat 的lib目录下 3.配置D:\apps\apache-tomcat-7.0.90\conf\server.xml文件,数据库加密访问 4.解压tomcat-encrypt.jar包,对用户名密码进行加密 5...

    1.jar包地址:AES加密访问数据库连接

    2.将jar包放置到tomcat 的lib目录下

    3.配置D:\apps\apache-tomcat-7.0.90\conf\server.xml文件,数据库加密访问

    4.解压tomcat-encrypt.jar包,对用户名密码进行加密

    5.加密运行main方法

    6.数据源配置如下,

    展开全文
  • 在Eclipse中给Tomcat配置数据库连接

    千次阅读 2018-08-28 22:06:38
    第一步:打开Tomcat安装目录下的conf文件夹,找到context.xml文件 , 在context之间加入下面这段代码: &lt;Resource name="mypool" &lt;!-- 连接池的名字,可任取,后面要用到--&gt; ...

    第一步:打开Tomcat安装目录下的conf文件夹,找到context.xml文件 ,

    在context之间加入下面这段代码:

     <Resource name="mypool" <!-- 连接池的名字,可任取,后面要用到-->
            auth="Container" type="javax.sql.DataSource"
            maxActive="10" <!-- 连接池的最大数据库连接数。设为0表示无限制。-->
            maxIdle="5" <!--最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
    接将被标记为不可用,然后被释放。设为0表示无限制。-->
            maxWait="3000" <!-- 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
    无限制。-->
            username="scott"<!-- 数据库的名字-->
            password="123456"<!--数据库的密码 -->
            driverClassName="oracle.jdbc.driver.OracleDriver"
            url="jdbc:oracle:thin:@localhost:1521:XE"/>
            <!--数据库类别驱动和 是数据库的地址 -->

    第二步 打开JavaWeb工程下的web.XML添加以下配置代码:

    <resource-ref>
        <res-ref-name>mypool</res-ref-name> <!--context中设置的连接池的名字 -->
            <res-type>javax.sql.DataSource</res-type><!--context中导入的类 -->
            <res-auth>Container</res-auth><!-- 默认是容器,Tomcat-->
        </resource-ref>

    第三步 和我们之前创建静态块 连接数据库一样,创建Util.java文件:
    代码如下:

    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.sql.DataSource;
    
    public class Util {
        public static Connection getConnection() {
            try {
            Context context=new InitialContext();
            DataSource datesource=(DataSource)context.lookup("java:comp/env/mypool");
            //这里的lookup参数必须是java:comp/env/连接池的名字。
                return datesource.getConnection();
            }
             catch (SQLException | NamingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        //理论还有关闭的。我就不写了。
    }

    第四步:在Tomcat安装目录下的lib文件中加入oracle6.jar 包,或是其他驱动jar包

    第五步,记得打开数据库服务,测试输出连接是否成功。
    在jsp代码中 ${Util.getConnection()} 或者是<%= Util.getConnection() %> 输出一串字母就是配置成功了。

    使用数据库连接池的好处就自行百度了。在此就不啰嗦了。

    展开全文
  • Tomcat下面配置数据源

    2019-04-01 01:33:12
    NULL 博文链接:https://wy649898543.iteye.com/blog/1423655
  • tomcat配置文件中server.xml文件连接oracle数据库时的常规配置:&lt;?xml version='1.0' encoding='utf-8'?&gt; &lt;Server port="8012" shutdown="SHUTDOWN"&gt; &lt;!...
  • Tomcat数据库连接配置

    万次阅读 多人点赞 2016-04-04 10:09:45
    Tomcat数据库连接配置,本来是一件很简单的事情,网上也有不少的文章,但是大多只有文字描述,没有图向导,对于初学者来说,信息量太大,很容易搞不清楚哪里是哪里,于是在绕过无数弯踩过深坑之后,本小白决定为...
  • 下面介绍在Tomcat服务器下使用连接池来连接数据库的操作 一:修改web.xml文件: 代码如下: <?xml version=”1.0″ encoding=”UTF-8″?> <web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance...
  • tomcat配置数据库连接池步骤详解

    万次阅读 2012-03-17 17:08:26
    1. 首先在tomcat配置context.xml,把连接数据库的一些参数配置进去,配置如下: name="jdbc/books" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30
  • Tomcat连接数据库的方法

    千次阅读 2020-03-12 18:07:17
    一、用于数据库连接的术语: JDBC:(Java database connectivity)是基于java数据访问技术的一个API通过客户端访问服务器的数据库,是一个面向关系型数据库并提供一种方法查询和更新数据库; JNDI:(Java naming ...
  • Tomcat配置数据库连接

    千次阅读 2014-05-11 09:21:16
    本例为myeclipse+tomcat7.0+sqlserver2008配置数据库
  • Springboot整合tomcat数据库连接

    千次阅读 2020-09-22 15:19:40
    1、配置文件 spring: datasource: type: com.zaxxer.hikari.HikariDataSource jdbcUrl: jdbc:mysql://127.0.0.1:8080/database?useUnicode=true&characterEncoding=utf-8&useSSL=true username: root ...
  • 数据库连接是一种关键的有限的昂贵的资源,这在多用户网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标,数据库连接池正是针对这个问题提出的 数据库...
  • 近来由于课程需要,对Tomcat数据库连接池进行配置,博主分别使用Eclipse和IDEA开发环境,二者配置有所不同,遇到了很多坑,网上的各种方案也是千奇百怪,下面分别给出我的方法: 1.Eclipse: 1.1需要在Eclipse的...
  • 1.如何修改tomcat的端口 在某些情况下,可能需要修改tomcat监听的端口8080,比如: a.需要启动两份tomcat服务器 b.某个服务占用了8080端口(1433,1521,...修改~tommcat/conf/server.xml文件中port="8080"数据将8080修改
  • Tomcat配置数据源及部署项目

    万次阅读 2018-10-31 15:41:55
    一般我们部署项目到tomcat上都是将项目放到tomcat安装目录的webapps目录下,今天在这里讲一下tomcat配置数据源及部署项目的其他方法,仅供大家学习参考,有错误的地方欢迎大家指出,互相学习,谢谢! 配置数据源及...
  • 描述: 最原始的数据库使用就是打开一个连接并进行使用...先打开一定数量的数据库连接,当使用的时候分配给调用者,调用完毕后返回给连接池,注意返回给连接池后这些连接并不会关闭,而是 准备给下一个调用者进行分...
  • Oracle-Tomcat数据库连接配置

    千次阅读 2017-10-02 18:45:13
    1.下载ojdbc14.jar放在 Tomcat安装目录/lib 目录下  2.在 Tomcat安装目录/conf/context.xml文件,标签中,添加如下代码    type="javax.sql.DataSource"  maxActive="100" maxIdle="30
  • Tomcat9 + java + mysql 配置数据库连接

    千次阅读 2016-11-21 23:21:31
    今天看到书上MyEclipse配置数据库连接池,搞了好久不成功,上网Google了好久,先是自己手动部署网站,在网上看的都是把web.xml和context.xml放在WEB-INF文件夹下,怎么也不成功,老是遇到Cannot create JDBC driver ...
  • Tomcat自带数据库连接池,但是需要进行相应的配置才能使用Tomcat数据库连接池。此文只针对Tomcat6.0进行配置。  1.在自己的项目下的META-INF(注意:不是WEB-INF,我看网上很多人都弄错了)下面新建一个context....
  • 配置数据源 1. 在Context元素中加入Resource元素。 修改Context的方法有很多种,这里我们选择在项目目录下的META-INFO创建context.xml文件来进行修改(这样的话这个数据源只是对此web应用有效)。 <Context> ...
  • tomcat配置jndi连接数据库(druid连接池) 1、将驱动包复制到tomcat安装目录下的lib文件夹 druid-1.1.9.jar log4j-1.2.17.jar 2、在tomcat安装目录下conf/context.xml文件加入一个Resource <Resource name=...
  • 使用IDEA配置Tomcat连接MySQL数据库(JDBC)详细步骤

    千次阅读 多人点赞 2020-11-12 16:50:50
    IDEA配置Tomcat 1,点击Run—EDit Configurations… 2.点击左侧“+”号,找到Tomcat Server—Local(若是没有找到Tomcat Server 可以点击最后一行 34 items more) 3.在Tomcat Server -> local-> Server -&...
  • tomcat下通过JNDI配置数据库连接

    千次阅读 2017-03-18 15:05:54
    tomcat下通过JNDI配置数据库连接池按照访问范围分类共有两种,分别是全局数据库连接池和局部数据库连接池。前者是在一个tocmat部署下的应用都能使用该数据库连接池,后者是只有特定的应用才能使用的数据库连接池。...
  • Tomcat9.0配置MySQL和Oracle数据库数据源

    千次阅读 2018-04-17 09:15:30
    描述:Tomcat配置数据库数据源,通过配置数据源可以保证始终有数据库连接对象,需要用的时候直接引用,用完以后直接关闭即可。而如果是JDBC普通连接方法,每一个对象连接都需要经过从加载到关闭,这样一来势必会降低...
  • Tomcat配置JNDI数据库连接池并使用  一、配置JNDI数据源  这一步有几种配置方式,比如直接修改Tomcat/conf/server.xml文件,但这样修改是全局的,个人不太喜欢这样的方式,本着的原则是能不全局不全局,以保证...
  • Tomcat 6.0 配置oracle数据库连接

    千次阅读 2016-05-26 19:11:39
    在查阅了网上大量资料之后,终于成功在Tomcat配置oracle数据库连接池,现在整理下步骤。 第一步(拷贝) 下载oracle驱动包ojdbc14.jar,拷贝到TomCat6.0目录下的lib目录里。Ojdbc14.jar的位置为: G:\Oracle\...
  • tomcat6配置数据库连接池代码,里面就一个index.jsp的文件,context.xml是tomcat6里面的文件,放在%TOMCAT_HOME%\lib目录下
  • tomcat配置连接数据库

    千次阅读 2015-11-04 23:43:55
    一、在tomcat目录下的conf文件下找到context.xml文件,在其中加入:   二、servlet配置文件web.xml中加入内容:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,739
精华内容 45,895
关键字:

tomcat配置数据库连接文件