JDBC Connection Pool

來源:互聯網
上載者:User
connection 資料庫連接池簡介
在傳統的兩層結構中,用戶端程式在啟動時開啟資料庫連接,在退出程式時關閉資料庫連接。這樣,在整個程式運行中,每個用戶端始終佔用一個資料庫連接,即使在大量沒有資料庫操作的空閑時間,如使用者輸入資料時,從而造成資料庫連接的使用效率低下。
在三層結構模式中,資料庫連接通過中介層的串連池管理。只有當使用者真正需要進行資料庫操作時,中介層才從串連池申請一個串連,資料庫操作完畢,串連立即釋放到串連池中,以供其他使用者使用。這樣,不僅大大提高了資料庫連接的使用效率,使得大量使用者可以共用較少的資料庫連接,而且省去了建立串連的時間。

串連池的配置使用
資料庫連接池是應用伺服器的一項準系統,我們以Apusic Application Server為例,來說明JDBC串連池的配置使用。

Apusic JDBC串連池提供對多種資料庫的支援,如Oracle、MS SqlServer、Sybase、Informix、DB2等。

Apusic JDBC串連池可以通過資料庫本身的JDBC Driver串連到資料庫,也可以通過JDBC-ODBC橋串連到資料庫。下面我們以Oracle為例說明如何配置串連池:

Oracle資料庫的JDBC Driver包檔案classes111.zip在/usr/oracle/jdbc/lib(假設oracle的安裝目錄是/usr/oracle)目錄下,首先將classes111.zip加入到系統的CLASSPATH中。然後在apusic/config/apusic.conf(假設安裝目錄為apusic) 中作如下設定:

<SERVICE
CLASS="com.apusic.jdbc.PoolManager"
NAME="JdbcPool:name=jdbc/sample"
>
<ATTRIBUTE NAME="ExpirationTime" VALUE="300"/>
<ATTRIBUTE NAME="MinCapacity" VALUE="5"/>
<ATTRIBUTE NAME="URL" VALUE="jdbc:oracle:thin:@192.168.19.136:1521:orcl"/>
<ATTRIBUTE NAME="ConnectionProperties" VALUE="user=gtj,password=abc123"/>
<ATTRIBUTE NAME="DriverClassName" VALUE="oracle.jdbc.driver.OracleDriver" />
<ATTRIBUTE NAME="MaxCapacity" VALUE="30"/>
</SERVICE>

ExpirationTime:       逾時時間,單位是秒。當一個資料庫連接超過expirationTime設定時間不被使用          
                      時,系統會自動關閉這個資料庫連接。預設值為300秒
MinCapacity:          最小串連數
URL:                  資料庫的URL
ConnectionProperties: 串連屬性,其中:user使用者名稱,password密碼
DriverClassName:      JDBC驅動程式類名
MaxCapacity:          最大串連數
192.168.19.136:       oracle所在電腦的IP地址。
 
調用串連池
我們以一個JSP程式為例,說明如何使用串連池。首先通過JNDI得到DataSource,再的得到串連Connection,如下例所示:


<html>

<head>

<title>Jsp sample</title>

</head>

<body>

<p>

<%@ page contentType="text/html;charset=gb2312" %>

<%@ page import="

java.sql.*,

javax.naming.*,

javax.sql.*

"%>

<%

try{

    Context ctx = new InitialContext();

    DataSource ds = (DataSource)ctx.lookup("jdbc/sample");

    Connection con = ds.getConnection();

    Statement stmt = con.createStatement();

    ResultSet rs = stmt.executeQuery("select ENAME from EMP");

    while(rs.next()){

        out.println("<p>" + rs.getString(1));

    }

    rs.close();

    stmt.close();

}catch(Exception e){

    System.out.println("jsp:" + e.getMessage());

}finally{

    try{

        con.close();

    }catch(Exception e1){}

}

%>

</body>

</html>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.