最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java數(shù)據(jù)庫連接池之proxool_動力節(jié)點(diǎn)Java學(xué)院整理

 更新時間:2017年08月03日 10:14:54   投稿:mrr  
Proxool是一種Java數(shù)據(jù)庫連接池技術(shù)。方便易用,便于發(fā)現(xiàn)連接泄漏的情況

Proxool是一種Java數(shù)據(jù)庫連接池技術(shù)。sourceforge下的一個開源項目,這個項目提供一個健壯、易用的連接池,最為關(guān)鍵的是這個連接池提供監(jiān)控的功能,方便易用,便于發(fā)現(xiàn)連接泄漏的情況。

目前是和DBCP以及C3P0一起,最為常見的三種JDBC連接池技術(shù)。

日前,Hibernate官方宣布由于Bug太多不再支持DBCP,而推薦使用 Proxool或C3P0。

下面通過一個Demo說明一下如何使用:

        項目結(jié)構(gòu)如下:

        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"); //加載驅(qū)動  
    }catch (ClassNotFoundException e) { 
      System.out.println("加載驅(qū)動失?。?); 
      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> 
    <!-- 保留線程處于睡眠狀態(tài)的最長時間 --> 
    <house-keeping-sleep-time>60000</house-keeping-sleep-time> 
    <maximum-connection-count>30</maximum-connection-count> 
    <minimum-connection-count>10</minimum-connection-count> 
    <!-- 連接池中可用的連接數(shù)量(空閑狀態(tài)) --> 
    <prototype-count>5</prototype-count> 
    <maximum-new-connections>1</maximum-new-connections> 
    <simultaneous-build-throttle>1</simultaneous-build-throttle> 
    <!-- 連接池使用狀態(tài) --> 
    <statistics>30s,10m,1d</statistics> 
    <!-- 連接池日志類型 --> 
    <statistics-log-level>ERROR</statistics-log-level> 
    <!-- 如果為true,那么每個被執(zhí)行的SQL語句將會在執(zhí)行期被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>結(jié)束日期</th><th>狀態(tài)</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> 

總結(jié)

以上所述是小編給大家介紹的Java數(shù)據(jù)庫連接池之proxool,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java中Calendar日期類常用方法演示

    Java中Calendar日期類常用方法演示

    這篇文章主要給大家介紹了關(guān)于Java中Calendar日期類用法詳細(xì)介紹的相關(guān)資料,Calendar類是?Java?中用于處理日期和時間的抽象類,它提供了一種獨(dú)立于特定日歷系統(tǒng)的方式來處理日期和時間,需要的朋友可以參考下
    2023-12-12
  • Java實現(xiàn)連連看算法

    Java實現(xiàn)連連看算法

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)連連看算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Java?精煉解讀數(shù)據(jù)結(jié)構(gòu)的鏈表的概念與實現(xiàn)

    Java?精煉解讀數(shù)據(jù)結(jié)構(gòu)的鏈表的概念與實現(xiàn)

    鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針連接次序?qū)崿F(xiàn)的,每一個鏈表都包含多個節(jié)點(diǎn),節(jié)點(diǎn)又包含兩個部分,一個是數(shù)據(jù)域,一個是引用域
    2022-03-03
  • Java中Redis的布隆過濾器詳解

    Java中Redis的布隆過濾器詳解

    這篇文章主要介紹了Java中Redis的布隆過濾器詳解,我們經(jīng)常會把一部分?jǐn)?shù)據(jù)放在Redis等緩存,比如產(chǎn)品詳情,這樣有查詢請求進(jìn)來,我們可以根據(jù)產(chǎn)品Id直接去緩存中取數(shù)據(jù),而不用讀取數(shù)據(jù)庫,這是提升性能最簡單,最普遍,也是最有效的做法,需要的朋友可以參考下
    2023-09-09
  • IDEA反編譯jar,查看源碼方式

    IDEA反編譯jar,查看源碼方式

    該篇文章總結(jié)了查看Java本地jar包注釋的幾種方法,包括使用快捷鍵CTRL+q和在設(shè)置中設(shè)置自動浮現(xiàn)注釋
    2024-11-11
  • springCloud gateWay 統(tǒng)一鑒權(quán)的實現(xiàn)代碼

    springCloud gateWay 統(tǒng)一鑒權(quán)的實現(xiàn)代碼

    這篇文章主要介紹了springCloud gateWay 統(tǒng)一鑒權(quán)的實現(xiàn)代碼,統(tǒng)一鑒權(quán)包括鑒權(quán)邏輯和代碼實現(xiàn),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • 20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 簡單說說Java SE、Java EE、Java ME三者之間的區(qū)別

    簡單說說Java SE、Java EE、Java ME三者之間的區(qū)別

    本篇文章小編就為大家簡單說說Java SE、Java EE、Java ME三者之間的區(qū)別。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • Java基于遞歸解決全排列問題算法示例

    Java基于遞歸解決全排列問題算法示例

    這篇文章主要介紹了Java基于遞歸解決全排列問題算法,結(jié)合實例形式分析了Java使用遞歸算法解決全排列問題的原理與具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-11-11
  • Windows 下安裝配置 Eclipse詳細(xì)教程

    Windows 下安裝配置 Eclipse詳細(xì)教程

    Eclipse是一款非常優(yōu)秀的開源IDE,非常適合Java開發(fā),由于支持插件技術(shù),受到了越來越多的開發(fā)者的歡迎。配合眾多令人眼花繚亂的插件,完全可以滿足從企業(yè)級Java應(yīng)用到手機(jī)終端Java游戲的開發(fā)。本文將帶您手把手步入Eclipse的廣闊天地
    2016-09-09

最新評論

兴文县| 岚皋县| 盘锦市| 敦煌市| 方正县| 上犹县| 延川县| 苍山县| 古田县| 紫阳县| 商洛市| 阳谷县| 林芝县| 讷河市| 连云港市| 华池县| 阿拉善左旗| 凤山市| 正定县| 霍州市| 南开区| 云林县| 巍山| 略阳县| 怀来县| 洱源县| 新化县| 容城县| 阳城县| 贵港市| 乾安县| 台北市| 化州市| 应用必备| 宝坻区| 阿巴嘎旗| 紫阳县| 鄂尔多斯市| 壶关县| 年辖:市辖区| 正定县|