激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java數據庫連接池之proxool_動力節點Java學院整理

Java數據庫連接池之proxool_動力節點Java學院整理

2020-12-10 13:55動力節點 Java教程

Proxool是一種Java數據庫連接池技術。方便易用,便于發現連接泄漏的情況

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

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

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

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

        項目結構如下:

        DBLink.Java文件中的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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文件中的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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文件中的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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文件中的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<%@ 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,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久亚洲网 | 激情综合视频 | 午夜精品视频在线 | 欧洲黄色一级视频 | 夜夜看 | 久久综合婷婷香五月 | 午夜视频在线免费播放 | 日韩精品一区二区免费视频 | 狼人狠狠干| 91网页在线观看 | 91高清视频在线免费观看 | 香蕉视频99| 亚洲午夜在线视频 | 欧美国产精品久久 | 成人毛片视频免费看 | 黄色大片网 | 国产免费视频一区二区裸体 | 中国a级黄色片 | 黄色小视频在线免费看 | 欧美激情 在线播放 | 国产亲子伦在线观看 | 欧美日韩a∨毛片一区 | 成人精品视频在线 | 91嫩草丨国产丨精品入口 | 91看片免费在线观看 | 久久久三区 | 小情侣嗯啊哦视频www | 九一免费版在线观看 | 精品国产一区二区在线 | 国内精品久久久久久久久久久久 | 这里精品 | 男女无套免费视频 | 免费毛片观看 | 国产无遮挡一区二区三区毛片日本 | 久久av电影院 | 国产一区二区三区四 | 嗯~啊~用力~高h | 国产成人自拍视频在线 | 中文字幕一区在线观看视频 | 亚洲成人精品区 | 中文在线观看www |