【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统计监控,输入先前设好的账号密码即可,效果如下



浙公网安备 33010602011771号