全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java数据库连接池之proxool_动力节点Java学院整理

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学院整理  # 连接池  # 易用  # 小编  # 的是  # 加载  # 是一种  # 太多  # 在此  # 推荐使用  # 会在  # 给大家  # 三种  # 提供一个  # 首页  # 所述  # 如何使用  # 给我留言  # 开源  # 感谢大家  # 池中 


相关文章: 如何通过远程VPS快速搭建个人网站?  b2c电商网站制作流程,b2c水平综合的电商平台?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何破解联通资金短缺导致的基站建设难题?  实例解析Array和String方法  三星网站视频制作教程下载,三星w23网页如何全屏?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  英语简历制作免费网站推荐,如何将简历翻译成英文?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  建站之星代理平台如何选择最佳方案?  如何高效完成独享虚拟主机建站?  如何选择可靠的免备案建站服务器?  建站之星伪静态规则如何正确配置?  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何在IIS7上新建站点并设置安全权限?  湖北网站制作公司有哪些,湖北清能集团官网?  如何用景安虚拟主机手机版绑定域名建站?  如何快速生成凡客建站的专业级图册?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  香港服务器租用每月最低只需15元?  如何挑选高效建站主机与优质域名?  专业商城网站制作公司有哪些,pi商城官网是哪个?  建站之星如何通过成品分离优化网站效率?  设计网站制作公司有哪些,制作网页教程?  如何在Tomcat中配置并部署网站项目?  已有域名能否直接搭建网站?  如何通过网站建站时间优化SEO与用户体验?  如何选择高效稳定的ISP建站解决方案?  Swift开发中switch语句值绑定模式  如何在云主机上快速搭建网站?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  ,柠檬视频怎样兑换vip?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何快速搭建高效服务器建站系统?  如何在腾讯云服务器快速搭建个人网站?  开源网站制作软件,开源网站什么意思?  如何通过虚拟机搭建网站?详细步骤解析  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  移民网站制作流程,怎么看加拿大移民官网?  已有域名如何快速搭建专属网站?  建站VPS选购需注意哪些关键参数?  中山网站推广排名,中山信息港登录入口?  如何高效利用200m空间完成建站?  如何在阿里云购买域名并搭建网站?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。