• 【Java】数据库连接池的简单使用


    一、本地数据库连接池使用

    1、 配置全局(在本地tomcat配置)

    a. 打开tomcat/conf/context.xml文件添加如下配置

    	<!-- JNDI tomcat 数据库连接池配置 -->
    	<Resource
    		name="db"
    		auth="Container"
    		maxActive="100"
    		maxIdle="30"
    		maxWait="10000"
    		type="javax.sql.DataSource"
    		username="root"
    		password="root"
    		driverClassName="com.mysql.cj.jdbc.Driver"
    		url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC" 
    	/>

    属性名称

    说明

    name

    指定Resource的JNDI名称

    auth

    指定管理Resource的Manager(Container:由容器创建和管理|Application:由Web应用创建和管理)

    type

    指定Resource所属的Java类 javax.sql.DataSource

    maxActive

    指定连接池中处于活动状态的数据库连接的最大数目

    maxIdle

    指定连接池中处于空闲状态的数据库连接的最大数目

    maxWait

    指定连接池中的连接处于空闲的最长时间,超过这个时间会抛出异常,取值为-1,表示可以无限期等待

     

    b. 使用数据源,在web中测试(即获取context.xml文件配置)

    <%@ page import="javax.naming.Context" %>
    <%@ page import="javax.naming.InitialContext" %>
    <%@ page import="javax.sql.DataSource" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
      <title>title</title>
    </head>
    <body>
      <%
          Context ctx = new InitialContext();
          DataSource ds = (DataSource)ctx.lookup("java:comp/env/db");
          Connection conn = ds.getConnection();
          out.print(conn);
          Statement stmt = conn.createStatement();
          ResultSet rs = stmt.executeQuery("select version()");
          rs.next();
          out.print(rs.getString(1));
          rs.close();
          stmt.close();
      %>
    </body>
    </html>
    

    2、 在web项目中使用(不使用全局)

    a. 首先注释写在tomcat/conf/context.xml数据库连接池配置,在web项目下的webapp目录下初建一个META-INF目录,然后再在META-INF目录下创建一个context.xml文件,写入如下内容

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
        <!-- 默认的连接池 -->
        <Resource
                name="db"
                auth="Container"
                maxActive="100"
                maxIdle="30"
                maxWait="10000"
                type="javax.sql.DataSource"
                username="root"
                password="root"
                driverClassName="com.mysql.cj.jdbc.Driver"
                url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC"
        />
    </Context>
    

    b. 继续用之前的web代码测试即可

     

    二、阿里数据库连接池使用(和上面的使用几乎一样,只有连接池的配置发生改变)

    a. 在web项目下的META-INF/context.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
        <!-- 默认的连接池 -->
        <Resource
                name="db"
                auth="Container"
                maxActive="100"
                maxIdle="30"
                maxWait="10000"
                type="javax.sql.DataSource"
                username="root"
                password="root"
                driverClassName="com.mysql.cj.jdbc.Driver"
                url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC"
        />
        
        <!-- 阿里连接池 -->
        <Resource
                name="druid"
                auth="Container"
                factory="com.alibaba.druid.pool.DruidDataSourceFactory"
                type="javax.sql.DataSource"
                username="root"
                password="root"
                driverClassName="com.mysql.cj.jdbc.Driver"
                url="jdbc:mysql://localhost:3306/db?serverTimezone=PRC"
                filters="stat"
        />
    </Context>
    

    b. 也可以使用全局配置,同样也是在tomcat/conf/context.xml配置

    c. 连接池测试

    <%@ page import="javax.naming.Context" %>
    <%@ page import="javax.naming.InitialContext" %>
    <%@ page import="javax.sql.DataSource" %>
    <%@ page import="java.sql.Connection" %>
    <%@ page import="java.sql.Statement" %>
    <%@ page import="java.sql.ResultSet" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
      <title>title</title>
    </head>
    <body>
      <%
          Context ctx = new InitialContext();
          DataSource ds = (DataSource)ctx.lookup("java:comp/env/druid");
          Connection conn = ds.getConnection();
          out.print(conn);
      %>
    </body>
    </html>
    

      

    三、Druid监控统计

    a. 只需在WEB-INF/web.xml添加配置即可

        <!-- Druid监控统计 -->
        <servlet>
            <servlet-name>druidr</servlet-name>
            <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    
    <!--        <init-param>-->
    <!--            <!– 是否清空统计数据 –>-->
    <!--            <param-name>resetEnable</param-name>-->
    <!--            <param-value>true</param-value>-->
    <!--        </init-param>-->
            <init-param>
                <!-- 用户名 -->
                <param-name>loginUsername</param-name>
                <param-value>admin</param-value>
            </init-param>
            <init-param>
                <!-- 密码 -->
                <param-name>loginPassword</param-name>
                <param-value>admin</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>druidr</servlet-name>
            <url-pattern>/druid/*</url-pattern>
        </servlet-mapping>
    

    b.当在网页中执行数据库操作时都可以查看到,因为我使用的是本机、端口为8080、tomcat根目录为空,我直接输入loaclhost:8080/druid,即可看到druid统计监控,输入先前设好的账号密码即可,效果如下

     

     

     

  • 相关阅读:
    CF91 B. Queue
    CF18 C. Stripe
    CF767 A. Snacktower
    CF349 B. Color the Fence
    CF519 B. A and B and Compilation Errors
    NLog Helpper日志帮助类配置和使用
    一步一步搭建 .net core 应用
    使用webform、websevice来进行ajax请求操作
    各种奇技淫巧-持续更新
    防止表单提交时刷新页面-阻止form表单的默认提交行为
  • 原文地址:https://www.cnblogs.com/netyts/p/14039133.html
Copyright © 2020-2023  润新知