Tomcat 5.0-5.5連接池配置指南

4月 23, 2009

資料出處: http://java.chinaitlab.com/Tomcat/35420.html

本文以目前最流行的MySQL為例,講解通過Tomcat連接池連接MySQL數據庫的基本步驟,如果你了解MySQL可跳過第一步。

在進行Tomcat連接池配置前,先解壓縮mysql-connector-java-xxx.zip,將其中的mysql-connector-java-3.x.x-xxx.jar取出,置於\common\lib中。

接下來,讓我們一起進入精彩的Tomcat配置之旅。

一.新建用戶及數據庫

操作步驟如下:

C:\Documents and Settings\Administrator>d:

D:\>cd mysql\bin

D:\MySQL\bin>mysql -u root -p
Enter password: *******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 51 to server version: 4.1.12a-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> GRANT ALL PRIVILEGES ON jcc.* TO jcc@localhost IDENTIFIED BY 'jsp.com.cn'
WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

mysql> USE mysql;
Database changed
mysql> SELECT Host,User,Password FROM user;
+-----------+------+-------------------------------------------+
| Host | User | Password |
+-----------+------+-------------------------------------------+
| localhost | root | *60D5B730382EC2170CA366DE181767E4C5343DE8 |
| % | jsp | *C22AB0FD8A289C7D337C9998B63B8EA8335E5F35 |
| localhost | jcc | *C22AB0FD8A289C7D337C9998B63B8EA8335E5F35 |
+-----------+------+-------------------------------------------+
3 rows in set (0.01 sec)

mysql> exit
Bye

D:\MySQL\bin>mysql -u jcc -p
Enter password: **********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 57 to server version: 4.1.12a-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE jcc;
Query OK, 1 row affected (0.02 sec)

mysql> USE jcc;
Database changed
mysql> CREATE TABLE user(
-> id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> name VARCHAR(8) NOT NULL
-> );
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO user (name) VALUES ('Corebit');
Query OK, 1 row affected (0.03 sec)

mysql> INSERT INTO user (name) VALUES ('Ivan');
Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM user;
+----+---------+
| id | name |
+----+---------+
| 1 | Corebit |
| 2 | Ivan |
+----+---------+
2 rows in set (0.00 sec)

mysql>

二.配置Tomcat連接池

Tomcat5.0進行如下配置:

在\conf\server.xml的...之間加入以下代碼:

factory   org.apache.commons.dbcp.BasicDataSourceFactory

maxActive   100

maxIdle   30

maxWait   10000

username   jcc

password   jsp.com.cn

driverClassName    com.mysql.jdbc.Driver

url   jdbc:mysql://localhost/jcc

Tomcat5.5進行如下配置:

在\conf\server.xml的...之間加入以下代碼:

三.在/下,新建MySQL數據庫連接文件Select.jsp

Select.jsp源碼如下:

"); while(rs.next()){  out.print(rs.getString(1)+" ");  out.print(rs.getString(2)+"
"); } rs.close(); stmt.close(); conn.close();}catch(Exception e){ out.print(e);}%>

四.運行http://localhost/Select.jsp,顯示結果如下:

User-list
1 Corebit
2 Ivan

則表示數據庫連接成功!恭喜!恭喜!

否則請檢查數據庫連接器版本,出錯可能性比較高!

*註:

Tomcat連接池中,部分參數說明如下:

maxActive="100"

maxIdle="30"

maxWait="10000"

jdbc:mysql://localhost/jcc

PS:如果最大數據庫活躍連接數過大,可想而知,內存佔用量是非常驚人的!如果空閒連接數過大,則資源利用率低,連接池長期未釋放,可導致連接池結點異常。所以選好maxActive和maxIdle是連接池性能的關鍵因素,當然這取決於服務器環境。

*附:

連接池運作原理:

在實際應用開發中,特別是在WEB應用系統中,如果JSP、Servlet或EJB使用JDBC直接訪問數據庫中的數據,每一次數據訪問請求都必須 經歷 建立數據庫連接、打開數據庫、存取數據和關閉數據庫連接等步驟,而連接並打開數據庫是一件既消耗資源又費時的工作,如果頻繁發生這種數據庫操作,系統的性 能必然會急劇下降,甚至會導致系統崩潰。數據庫連接池技術是解決這個問題最常用的方法,在許多應用程序服務器(例如:Weblogic, WebSphere,JBoss)中,基本都提供了這項技術,無需自己編程,但是,深入了解這項技術是非常必要的。

數據庫連接池技術的思想非常簡單,將數據庫連接作為對象存儲在一個Vector對象中,一旦數據庫連接建立後,不同的數據庫訪問請求就可以共享這些連接,這樣,通過復用這些已經建立的數據庫連接,可以克服上述缺點,極大地節省系統資源和時間。

數據庫連接池的主要操作如下:

(1)建立數據庫連接池對象(服務器啟動)。

(2)按照事先指定的參數創建初始數量的數據庫連接(即:空閒連接數)。

(3)對於一個數據庫訪問請求,直接從連接池中得到一個連接。如果數據庫連接池對象中沒有空閒的連接,且連接數沒有達到最大(即:最大活躍連接數),創建一個新的數據庫連接。

(4)存取數據庫。

(5)關閉數據庫,釋放所有數據庫連接(此時的關閉數據庫連接,並非真正關閉,而是將其放入空閒隊列中。如實際空閒連接數大於初始空閒連接數則釋放連接)。

(6)釋放數據庫連接池對象(服務器停止、維護期間,釋放數據庫連接池對象,並釋放所有連接)。

希望本文能對你使用Tomcat連接池連接MySQL數據庫有所幫助!

blog comments powered by Disqus