Tomcat8.5&Mysql8.0配置数据库连接池(DBCP)

Easter79
• 阅读 925

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。 --百度百科


开发环境eclipse_photon + Tomcat8.5.32 + mysql8.0

首先需要修改两个配置文件一个是Tomcat的conf/Context.xml,另一个是项目文件下的web.xml创建web项目时生成

Context.xml修改时在eclipse当中修改,否则由eclipse启动tomcat时会还原该文件,在标签下添加标签

<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    <Resource name = "jdbc/myschool" auth="Container" type="javax.sql.DataSource"
    maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="root" password="111111"
    driverClassName="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://127.0.0.1:3306/myschool?serverTimezone=GMT%2B8&amp;useSSL=false" />
    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
</Context>

 Resource标签属性

name:连接池名称,一般设定为jdbc/databasename

auth:设定控制权为容器,固定

type:数据类型,固定

maxTotal:最大活动连接数,在之前版本中是maxActive

maxIdle:最大空闲连接数

maxWaitMillis:最大空闲时间,在之前版本中是maxWait

userName:用户名

password:密码

dirverClassName:

MySQL6.0之后Driver(这里跟只跟ConnectionJ相关,ConnectionJ8.0驱动是com.mysql.cj.jdbc.Driver,但是MySQL也可以使用之前版本的ConnectionJ)名改为“com.mysql.cj.jdbc.Driver”,之前是“com.mysql.jdbc.Driver”。需要注意的是这里要在CLASSPATH中指定“mysql-connector-java-8.0.12.jar”文件的位置,否则会报错,提示driverClassName属性不能识别:

  a.mysql-connector-java-8.0.12.jar复制到D:\env\apache-tomcat-8.5.32\lib下

  b.在环境变量中设定CATALINA_HOME为tomcat路径“D:\env\apache-tomcat-8.5.32”;

  c.CLASSPATH中添加%CATALINA_HOME%\lib;

url:

指定数据库连接ip和数据库名称

jdbc:mysql://127.0.0.1:3306/databaseName

对于MySQL5.*及之前版本只需写到此处就行,MySQL6.0及之后版本需要 指定服务器时区属性,设定useSSL属性等,个属性之间用&连接,在xml/html文件中&用&转义表示,应该写成:

jdbc:mysql://127.0.0.1:3306/databaseName?serverTimeZone=GMT%2B8&useSSL=false

若出现字符集问题则需添加下面两个参数:

useUnicode=true

characterEncoding=utf8

 链接仍使用&


修改web.xml文件

web.xml文件由eclipse创建项目时自动生成(需要在最后一步勾选生成web.xml),在web.xml中标签内添加

<resource-ref>
      <res-ref-name>jdbc/myschool</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
 </resource-ref>

 指定资源名,资源类型,资源控制权限


通过JNDI(java naming and directory interface)在java类或jsp页面调用连接池中的连接,

<%     
    Context context = new InitialContext();    
    
    DataSource ds=(DataSource)envContext.lookup("java:comp/env/jdbc/myschool");
    
    Connection conn = ds.getConnection();
    
    
    Statement sta = conn.createStatement();
    String sql = "select * from Grade";
    ResultSet rSet = sta.executeQuery(sql);
    
    while(rSet.next()){
        out.println(rSet.getString("GradeName"));         
    }
    %>
点赞
收藏
评论区
推荐文章
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Spring Boot + Spring Cloud 实现权限管理系统 后端篇(七):集成 Druid 数据源
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。通过数据库连接池能明显提高对数据库操作的性能。在Java应用程序开发中,常用的连接池有DBCP、C3P0、Proxool等。SpringBoot默认提供
Stella981 Stella981
3年前
Druid连接池简单入门配置
偶尔的机会解释Druid连接池,后起之秀,但是评价不错,另外由于是阿里淘宝使用过的所以还是蛮看好的。Druid集连接池,监控于一体整好复合当前项目的需要,项目是ssh结构,之前是用C3p0的,现在换一个连接池也是很简单的,首先spring配置DataSource,配置如下:<bean id"dataSource" class"co
Wesley13 Wesley13
3年前
MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)
知识点十五:MySQL 的应用程序优化(32)一、访问数据库采用连接池把连接当做对象或设备,统一放在‘连接池’里。凡是需要访问数据库的地方都从连接池里取连接二、采用缓存减少对于MySQL的访问:         
Stella981 Stella981
3年前
Spring Boot:集成Druid数据源
综合概述数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。通过数据库连接池能明显提高对数据库操作的性能。在Java应用程序开发中,常用的连接池有DBCP、C3P0、Proxool等。Spri
Wesley13 Wesley13
3年前
JDBC连接池 JDBCTemplate
1.数据库连接池2.SpringJDBC:JDBCTemplate数据库连接池1.概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对
Stella981 Stella981
3年前
SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池。按照发展历程,业界知名的数据库连接池有以下几种:c3p0、DBCP、TomcatJDBCConnectionPool、Druid等,不过最近最火的是HiKariCP。HiKariCP号称是业界跑得最快的数据库连接池,自从Spring
Stella981 Stella981
3年前
HikariCP
数据库连接池技术数据库连接池负责分配、管理和释放数据库的连接。1.数据库连接复用。重复使用现有的数据库连接,可以避免连接频繁建立、关闭的开销。2.统一的连接管理。释放空闲时间超过最大空闲时间的数据库连接,避免因为没有释放数据库连接而引起的数据库连接泄漏。HikariCP字节码精简:优化代码,直到编译后的字节码最少
弹性数据库连接池探活策略调研(一)——HikariCP | 京东云技术团队
调研背景:数据库连接建立是比较昂贵的操作(至少对于OLTP),不仅要建立TCP连接外还需要进行连接鉴权操作,所以客户端通常会把数据库连接保存到连接池中进行复用。连接池维护到弹性数据库(JED)的长连接,弹性数据库默认不会主动关闭客户端连接(除非报错),但一
弹性数据库连接池探活策略调研(三)——DBCP | 京东云技术团队
在之前的文章中,我们介绍了弹性数据库连接失效的背景,并探讨了HikariCP、Druid连接池探活策略的相关内容。在本文中,我们将会继续探讨另一个线上常用的连接池——DBCP,并为您介绍如何在使用DBCP时实现最佳实践的弹性数据库连接池探活策略。
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k