JavaWeb-JDNI数据库连接池使用及测试

涎涎原创约 1020 字大约 3 分钟...JavaJava

260-JavaWeb-JDNI数据库连接池使用及测试.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

前置条件

  1. 新建了一个JAVA-WEB项目,并运行成功

  2. mysql数据库可以通过可视化工具连接成功

  3. 使用工具ECLIPSE

项目配置

  1. mysql-connector-java-5.1.39-bin.jar mysql的项目驱动放置在WEB-INF的lib目录下

  2. WEB-INF目录下的web.xml的配置如下,仅供参考,按自己所需自行更改

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>tickets</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file>
  </welcome-file-list>
    <resource-ref>
	  <description>jdbc/mysql</description>
	  <res-ref-name>jdbc/mysql</res-ref-name>  
	  <res-type>javax.sql.DataSource</res-type>
	  <res-auth>Container</res-auth>
 </resource-ref>
</web-app>	
  1. META-INF目录下的context.xml配置如下,仅供参考,按自己所需更改
<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Resource name="jdbc/mysql" 
	auth="Container" 
	type="javax.sql.DataSource"
	username="root"
	password="123456"
	url="jdbc:mysql://localhost:3306/tickets"
	driverClassName="com.mysql.jdbc.Driver"
	maxIdle="2"
	maxWait="5000"
	maxActive="4" />
</Context>
  1. 在 net.tencent.tickets.util目录包新建如下类
package net.tencent.tickets.util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

/**
 * 
* <p>Title: DBUtils_pool</p>  
* <p>
*	Description: 
* 启用连接池技术的DBUtil工具类
* 
* 步骤:
* 1.在META-INF目录下创建配置文件context.xml
* 2.编写DBUtils_pool工具类
* 在里面定义getConnection方法
* 
* 3.这个方法定义完之后不可以马上写main方法测试,因为这个池子是基于Tomcat容器实现的,所以
* 必须把web应用部署到Tomcat服务器上之后才可以测试
* </p> 
* @author xianxian 
* @date 2019年9月5日
 */
public class DBUtils_pool {
	
	public static Connection getConnection() {
		Connection conn = null;
		try {
			// //1.上下文 实例化Context对象,其实读取Context.xml文件中的资源
			Context context = new InitialContext();
			// 2.查找数据源,参数格式:java:comp/env/ + context.xml中配置的name属性值 使用lookup方法寻找数据源资源并且造型成DataSource
			DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/mysql");
			//3.从数据源中获取连接
			conn = ds.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * 
	 * <p>Title: release</p>  
	 * <p>
	 *	Description: 
	 * 释放资源的方法
	 * //4.归还连接
	 * </p> 
	 * @param conn
	 * @param stmt
	 * @param rs
	 */
	public static void release(Connection conn, Statement stmt, ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
			}
			if (stmt != null) {
				stmt.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 开启事务
	 * @param conn
	 */
	public static void beginTransaction(Connection conn)
	{
		try {
			conn.setAutoCommit(false);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 提交事务
	 * @param conn
	 */
	public static void commitTransaction(Connection conn)
	{
		try {
			conn.commit();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 回滚事务
	 * @param conn
	 */
	public static void rollbackTransaction(Connection conn)
	{
		try {
			conn.rollback();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
  • 经过如下步骤JDNI数据库连接池配置完成

测试JDNI

  1. 在 net.tencent.tickets.util.test 目录包新建如下类
package net.tencent.tickets.util.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.tencent.tickets.util.DBUtils_pool;


@WebServlet("/TestDBUtils_pool")
public class TestDBUtils_pool extends HttpServlet{

	/**
	 * serialVersionUID
	*/
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		DBUtils_pool dbUtils_pool = new DBUtils_pool();

		System.out.println("dbUtils_pool: " + dbUtils_pool.getConnection());
		
	}

}
  1. 在 webapp文件夹下新建TestDBUtils_pool.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="TestDBUtils_pool">点击获取数据库连接</a>
</body>
</html>
  1. 启动TOMcatServer并在启动成功后在浏览器中输入 http://localhost:8080/tickets/TestDBUtils_pool.jspopen in new window 仅供参考,按自己所需更改

  2. 根据浏览器提示点击

  1. 在跳转后查看Eclipse的控制台
  • 如下图所示则表示连接池配置成功

分割线


相关信息

以上就是我关于 JavaWeb-JDNI数据库连接池使用及测试 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。

扩展知识

  1. javax.naming.NameNotFoundException: 名称[jdbc/HelixDB]未在此上下文中绑定。找不到[jdbc]open in new window

分割线


上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4