Java数据库连接池之proxool_动力节点Java学院整理
发布时间 - 2026-01-11 02:37:38 点击率:次Proxool是一种Java数据库连接池技术。sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

目前是和DBCP以及C3P0一起,最为常见的三种JDBC连接池技术。
日前,Hibernate官方宣布由于Bug太多不再支持DBCP,而推荐使用 Proxool或C3P0。
下面通过一个Demo说明一下如何使用:
项目结构如下:
DBLink.Java文件中的代码:
package com.bjpowernode.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DBLink {
private Connection connection;
private PreparedStatement preparedStatement;
private ResultSet resultSet;
static{
try {
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); //加载驱动
}catch (ClassNotFoundException e) {
System.out.println("加载驱动失败!");
e.printStackTrace();
}
}
private Connection getConn(){
try {
if(connection==null||connection.isClosed()){
connection = DriverManager.getConnection("proxool.mysqlsource"); //获取连接
}
} catch (SQLException e) {
System.out.println("获取连接失败!");
e.printStackTrace();
}
return connection;
}
public List<Map<String, Object>> select(String sql, Object [] params){
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try{
connection = this.getConn();
preparedStatement = connection.prepareStatement(sql);
if(params != null){
for(int i =0; i<params.length; i++){
preparedStatement.setObject(i+1, params[i]);//逐一给问号赋值
}
}
resultSet = preparedStatement.executeQuery();
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnCount = rsmd.getColumnCount();
while(resultSet.next()){
Map<String, Object> map = new HashMap<String, Object>();
for(int i =1; i<=columnCount;i++){
String columnName = rsmd.getColumnName(i);
Object obj = null;
if(rsmd.getColumnTypeName(i).equals("DATE")){
obj = resultSet.getString(columnName);
}else{
obj = resultSet.getObject(columnName);
}
map.put(columnName, obj);
}
list.add(map);
}
}catch(SQLException e){
e.printStackTrace();
}finally{
close();
}
return list;
}
private void close(){
try {
if(resultSet != null){
resultSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(preparedStatement != null){
preparedStatement.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
proxool.xml文件中的代码:
<?xml version="1.0" encoding="UTF-8"?>
<proxool-config>
<proxool>
<alias>mysqlsource</alias>
<driver-url>jdbc:mysql://localhost:3306/test</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="root" />
</driver-properties>
<!-- 保留线程处于睡眠状态的最长时间 -->
<house-keeping-sleep-time>60000</house-keeping-sleep-time>
<maximum-connection-count>30</maximum-connection-count>
<minimum-connection-count>10</minimum-connection-count>
<!-- 连接池中可用的连接数量(空闲状态) -->
<prototype-count>5</prototype-count>
<maximum-new-connections>1</maximum-new-connections>
<simultaneous-build-throttle>1</simultaneous-build-throttle>
<!-- 连接池使用状态 -->
<statistics>30s,10m,1d</statistics>
<!-- 连接池日志类型 -->
<statistics-log-level>ERROR</statistics-log-level>
<!-- 如果为true,那么每个被执行的SQL语句将会在执行期被log记录(DEBUG LEVEL) -->
<trace>true</trace>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>
</proxool-config>
web.xml文件中的代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- 连接池 -->
<servlet>
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
index.jsp文件中的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.bjpowernode.util.DBLink,java.util.List,java.util.Map"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首页</title>
</head>
<body>
<table width="100%" border="1px">
<tr>
<th>序号 </th><th>班级名称</th><th>开班日期</th><th>结束日期</th><th>状态</th><th>操作</th>
</tr>
<%
String sql = "SELECT id, class_name, begin_date, end_date, state FROM class ";
DBLink db = new DBLink();
List<Map<String, Object>> list = db.select(sql, null);
int index = 0;
for (Map<String, Object> map : list) {
index = index + 1;
int id = Integer.parseInt(map.get("id").toString());
String className = map.get("class_name").toString();
String beginDate = map.get("begin_date").toString();
String endDate = map.get("end_date").toString();
int state = Integer.parseInt(map.get("state").toString());
String stateName = (state == 0 ? "未启用" : "启用");
%>
<tr align="center">
<td><%=index%></td><td><%=className%></td><td><%=beginDate%></td><td><%=endDate%></td><td><%=stateName%></td><td>【<a href="###" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="">修改</a>】【<a href="###" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="">查看</a>】【<a href="###" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="">删除</a>】</td>
</tr>
<%
}
%>
</table>
</body>
</html>
总结
以上所述是小编给大家介绍的Java数据库连接池之proxool,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# java
# 数据库连接池
# proxool
# Java数据库连接池之c3p0简介_动力节点Java学院整理
# C3P0连接池+MySQL的配置及wait_timeout问题的解决方法
# Java数据库连接池之DBCP浅析_动力节点Java学院整理
# Java中常用的数据库连接池_动力节点Java学院整理
# Spring 数据库连接池(JDBC)详解
# Spring Boot集成Druid数据库连接池
# Java实现数据库连接池简易教程
# java实现mongodb的数据库连接池
# Java实现数据库连接池的方法
# 数据库连接池c3p0配置_动力节点Java学院整理
# 连接池
# 易用
# 小编
# 的是
# 加载
# 是一种
# 太多
# 在此
# 推荐使用
# 会在
# 给大家
# 三种
# 提供一个
# 首页
# 所述
# 如何使用
# 给我留言
# 开源
# 感谢大家
# 池中
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
微信小程序 配置文件详细介绍
高性能网站服务器部署指南:稳定运行与安全配置优化方案
Python图片处理进阶教程_Pillow滤镜与图像增强
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
详解jQuery中基本的动画方法
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
教学论文网站制作软件有哪些,写论文用什么软件
?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Python数据仓库与ETL构建实战_Airflow调度流程详解
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何用AWS免费套餐快速搭建高效网站?
香港服务器选型指南:免备案配置与高效建站方案解析
如何实现建站之星域名转发设置?
如何在宝塔面板创建新站点?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
php打包exe后无法访问网络共享_共享权限设置方法【教程】
如何快速生成高效建站系统源代码?
高防服务器如何保障网站安全无虞?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel如何处理和验证JSON类型的数据库字段
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
北京的网站制作公司有哪些,哪个视频网站最好?
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何实现模型的全局作用域?(Global Scope示例)
如何选择PHP开源工具快速搭建网站?
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
js实现点击每个li节点,都弹出其文本值及修改
Python文件异常处理策略_健壮性说明【指导】
免费视频制作网站,更新又快又好的免费电影网站?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
如何注册花生壳免费域名并搭建个人网站?
如何快速上传自定义模板至建站之星?
如何在Ubuntu系统下快速搭建WordPress个人网站?
如何在搬瓦工VPS快速搭建网站?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
太平洋网站制作公司,网络用语太平洋是什么意思?
WEB开发之注册页面验证码倒计时代码的实现
济南网站建设制作公司,室内设计网站一般都有哪些功能?
公司门户网站制作流程,华为官网怎么做?

