Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計(jì)

          留言簿(23)

          積分與排名

          優(yōu)秀學(xué)習(xí)網(wǎng)站

          友情連接

          閱讀排行榜

          評論排行榜

          Tomcat5.0-5.5連接池配置指南 (轉(zhuǎn))

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

            在進(jìn)行Tomcat連接池配置前,先解壓縮mysql-connector-java-xxx.zip,將其中的mysql-connector-java-3.x.x-xxx.jar取出,置于<%TOMCAT_HOME%>\common\lib中。

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

          一.新建用戶及數(shù)據(jù)庫

          操作步驟如下:

          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進(jìn)行如下配置:

          在<%TOMCAT_HOME%>\conf\server.xml的<Host>...</Host>之間加入以下代碼:

          <Context path="" docBase="D:/jcc"
          ????????debug="5" reloadable="true" crossContext="true">

          ??<Logger className="org.apache.catalina.logger.FileLogger"
          ???????????? prefix="localhost_DBTest_log." suffix=".txt"
          ???????????? timestamp="true"/>

          ??<Resource name="jdbc/JCC"
          ?????????????? auth="Container"
          ?????????????? type="javax.sql.DataSource"/>

          ??<ResourceParams name="jdbc/JCC">
          ????<parameter>
          ??????<name>factory</name>
          ??????<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
          ????</parameter>

          ????<parameter>
          ??????<name>maxActive</name>
          ??????<value>100</value>
          ????</parameter>

          ????<parameter>
          ??????<name>maxIdle</name>
          ??????<value>30</value>
          ????</parameter>

          ????<parameter>
          ??????<name>maxWait</name>
          ??????<value>10000</value>
          ????</parameter>

          ????<parameter>
          ???? <name>username</name>
          ???? <value>jcc</value>
          ????</parameter>
          ????<parameter>
          ???? <name>password</name>
          ???? <value>jsp.com.cn</value>
          ????</parameter>

          ????<parameter>
          ?????? <name>driverClassName</name>
          ?????? <value>com.mysql.jdbc.Driver</value>
          ????</parameter>

          ????<parameter>
          ??????<name>url</name>
          ??????<value>jdbc:mysql://localhost/jcc</value>
          ????</parameter>
          ??</ResourceParams>
          </Context>

          Tomcat5.5進(jìn)行如下配置:

          在<%TOMCAT_HOME%>\conf\server.xml的<Host>...</Host>之間加入以下代碼:

          <Context path="" docBase="D:/jcc"
          ????????debug="5" reloadable="true" crossContext="true">

          ??<Resource name="jdbc/JCC" auth="Container" type="javax.sql.DataSource"
          ?????????????? maxActive="100" maxIdle="30" maxWait="10000"
          ?????????????? username="jcc" password="jsp.com.cn" driverClassName="com.mysql.jdbc.Driver"
          ?????????????? url="jdbc:mysql://localhost/jcc"/>

          </Context>

          三.在<%wwwroot%>/下,新建MySQL數(shù)據(jù)庫連接文件Select.jsp

            Select.jsp源碼如下:

          <%@page contentType="text/html;charset=gb2312"%>
          <%@page import="java.sql.*"%>
          <%@page import="javax.sql.DataSource"%>
          <%@page import="javax.naming.*"%>
          <html>
          <body>
          <%
          try{
          ??Context initCtx=new InitialContext();
          ??DataSource db = (DataSource)initCtx.lookup("java:comp/env/jdbc/JCC");
          ??Connection conn = db.getConnection();
          ??Statement stmt = conn.createStatement();
          ??ResultSet rs = stmt.executeQuery("SELECT * FROM user");
          ??out.println("User-list"+"<br>");
          ??while(rs.next()){
          ????out.print(rs.getString(1)+" ");
          ????out.print(rs.getString(2)+"<br>");
          ??}
          ??rs.close();
          ??stmt.close();
          ??conn.close();
          }
          catch(Exception e){
          ??out.print(e);
          }
          %>
          </body>
          </html>

          四.運(yùn)行http://localhost/Select.jsp,顯示結(jié)果如下:

          User-list
          1 Corebit
          2 Ivan

            則表示數(shù)據(jù)庫連接成功!恭喜!恭喜!

            否則請檢查數(shù)據(jù)庫連接器版本,出錯(cuò)可能性比較高!

            *注:

            Tomcat連接池中,部分參數(shù)說明如下:

            maxActive="100"  <!--最大活躍連接數(shù),這里取值為100,表示同時(shí)最多有100個(gè)數(shù)據(jù)庫連接。設(shè)為0表示無限制。-->

            maxIdle="30"?????? <!--最大的空閑連接數(shù),這里取值為30,表示即使沒有數(shù)據(jù)庫連接時(shí)依然可以保持30個(gè)空閑的連接,而不被清除,隨時(shí)處于待命狀態(tài)。設(shè)為0表示無限制。-->

            maxWait="10000"????<!--最大建立連接等待時(shí)間。如果超過此時(shí)間將接到異常。這里設(shè)置為10000,表示10秒后超時(shí)。設(shè)為-1表示無限制,直到超時(shí)為止。-->

          ????jdbc:mysql://localhost/jcc????<!--數(shù)據(jù)庫連接字符串,同jdbc:mysql://localhost:3306/jcc?autoReconnect=true-->

          ????PS:如果最大數(shù)據(jù)庫活躍連接數(shù)過大,可想而知,內(nèi)存占用量是非常驚人的!如果空閑連接數(shù)過大,則資源利用率低,連接池長期未釋放,可導(dǎo)致連接池結(jié)點(diǎn)異常。所以選好maxActive和maxIdle是連接池性能的關(guān)鍵因素,當(dāng)然這取決于服務(wù)器環(huán)境。

            *附:

            連接池運(yùn)作原理:

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

            數(shù)據(jù)庫連接池技術(shù)的思想非常簡單,將數(shù)據(jù)庫連接作為對象存儲在一個(gè)Vector對象中,一旦數(shù)據(jù)庫連接建立后,不同的數(shù)據(jù)庫訪問請求就可以共享這些連接,這樣,通過復(fù)用這些已經(jīng)建立的數(shù)據(jù)庫連接,可以克服上述缺點(diǎn),極大地節(jié)省系統(tǒng)資源和時(shí)間。

            數(shù)據(jù)庫連接池的主要操作如下:

            (1)建立數(shù)據(jù)庫連接池對象(服務(wù)器啟動(dòng))。

            (2)按照事先指定的參數(shù)創(chuàng)建初始數(shù)量的數(shù)據(jù)庫連接(即:空閑連接數(shù))。

            (3)對于一個(gè)數(shù)據(jù)庫訪問請求,直接從連接池中得到一個(gè)連接。如果數(shù)據(jù)庫連接池對象中沒有空閑的連接,且連接數(shù)沒有達(dá)到最大(即:最大活躍連接數(shù)),創(chuàng)建一個(gè)新的數(shù)據(jù)庫連接。

            (4)存取數(shù)據(jù)庫。

            (5)關(guān)閉數(shù)據(jù)庫,釋放所有數(shù)據(jù)庫連接(此時(shí)的關(guān)閉數(shù)據(jù)庫連接,并非真正關(guān)閉,而是將其放入空閑隊(duì)列中。如實(shí)際空閑連接數(shù)大于初始空閑連接數(shù)則釋放連接)。

            (6)釋放數(shù)據(jù)庫連接池對象(服務(wù)器停止、維護(hù)期間,釋放數(shù)據(jù)庫連接池對象,并釋放所有連接)。

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

          參考文獻(xiàn):
          http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
          http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html

          posted on 2006-12-16 11:08 都市淘沙者 閱讀(1303) 評論(0)  編輯  收藏 所屬分類: JSP/PHP

          主站蜘蛛池模板: 阿合奇县| 礼泉县| 遵义县| 开封县| 林周县| 东至县| 图们市| 襄垣县| 周口市| 本溪| 宝鸡市| 马龙县| 伊金霍洛旗| 鄂伦春自治旗| 读书| 新安县| 富顺县| 秦安县| 贵德县| 冀州市| 永吉县| 安泽县| 锡林浩特市| 武乡县| 甘谷县| 兴业县| 襄城县| 滕州市| 阿鲁科尔沁旗| 酉阳| 綦江县| 漠河县| 丹凤县| 肥城市| 通道| 社旗县| 施甸县| 湟源县| 临海市| 天等县| 普格县|