JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » JDBC/SQL討論區 » Connection Pool  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 使用 jakata DBCP package 作 DB Connection pooling [精華]
精靈





發文: 86
積分: 7
於 2004-04-14 02:31 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
一般來說,在多人使用的系統中,應用程式若沒有運用 Connection pooling 的機制,會造成很大的效能問題,Connection 開開關關,除了慢,也會耗損資料庫伺服器的資源。大部分的 AP Server 都有提供 Connection pooling 的機制,程式設計師並無須去顧慮這個機制是如何運作的,只要懂得設定相關的參數即可。

假如說,某種狀況下,我們必須自行建置 Connection pooling 的機制時,該如何進行呢?自己寫當然是非常不划算的,況且也不一定寫的好,在這裡,我們使用 jakata project 裡的一個子專案 DBCP,來快速的建置一個隨處可用的 Connection pooling 機制。

在 Tomcat 裡,DBCP 是內建的,用來管理 DB Connection pooling。這個機制是可移植且可獨立出來使用的,要在你的運用程式中加上 DBCP 的功能,你必須至 http://jakarta.apache.org/commons/index.html 這個網址,找到該網頁內的 Components,共有三個必須下載:Collections 、 DBCP 、 Pool 。DBCP 是運用 Collections 及 Pool 這二個基礎的 Components 所設計出來的。當然,如果你有安裝 Tomcat server,最佳的方式是至 $TOMCAT_HOME/common/lib/ 目錄下去取得,保證版本的配合度不會出現問題。在 Tomcat server 裡,以 Tomcat 5.0.19 版內附的最新版本,這三個 Components 的檔名分別是 commons-collections.jar 、 commons-pool-1.1.jar 及 commons-dbcp-1.1.jar。

取得使用 DBCP 必備的 jar 檔後,請記得將這些 jar 檔,放置到 CLASSPATH 中,或直接放至 $JAVA_HOME/jre/lib/ext/ 目錄內。不過,由於 DBCP 有運用到 DataSource 的功能,而這功能是 J2EE 才有的,所以你還必須去下載 J2EE 的一個 javax.jar 檔。

環境建置好之後,接下來就可以開始設計 Connection Pooling 的機制,在這兒,我們介紹最簡單的作法,只要幾行指令就可以完成了,請看範例區裡的程式及其說明。

完成這個程式後,接下來在你的應用程式裡,用 DBConnect.getConnection() 來取得 DB Connection,就能享受到 Connection Pooling 的功能了。

在實際的運作中,這個範例有加上偵錯指令,會顯示出目前 Connection Pool 裡,有多少個 Idle 的 Connection 及多少個 Active 的 Connection,可供作為系統運作的參數調整依據。

範例:
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
01 package util;
02 
03 import java.sql.*;
04 import javax.naming.*;
05 import javax.sql.*;
06 
07 import org.apache.commons.dbcp.BasicDataSource;
08 
09 public class DBConnect {
10   static DataSource dataSource = null;
11 
12   public static DataSource setupDataSource( String sDrvName, String sUserName,
13       String sPwd, String connectURI ) {
14       BasicDataSource ds = new BasicDataSource();
15       ds.setDriverClassName( sDrvName );
16       ds.setUsername( sUserName );
17       ds.setPassword( sPwd );
18       ds.setUrl( connectURI );
19       ds.setMaxActive( 50 );
20       ds.setMaxIdle( 10 );
21       ds.setMaxWait( 10000 ); // 10 seconds
22       return ds;
23   }
24 
25 
26   // static init of the class
27   static {
28     try {
29       System.setProperty( "jdbc.drivers", "oracle.jdbc.driver.OracleDriver" );
30       Class.forName( "oracle.jdbc.driver.OracleDriver" );
31 
32       dataSource = setupDataSource( "oracle.jdbc.driver.OracleDriver", "username",
33         "password", "jdbc:oracle:thin:@192.168.0.1:1521:SID" );
34     }
35     catch (Exception e) {
36       System.out.println( "DBConnect.java => Unable to load driver."  + e.getMessage() );
37     }
38   }
39 
40   /**
41    * 空的建構元,不作任何處理動作。
42    */
43   public DBConnect() {}
44 
45   /**
46    * 取得 DB Connection.
47    */
48   public static Connection getConnection() throws SQLException,ClassNotFoundException {
49     BasicDataSource bds = (BasicDataSource) dataSource;
50     System.out.println("NumActive: " + bds.getNumActive() + ","
51       + "NumIdle: " + bds.getNumIdle() );
52     return dataSource.getConnection();
53   }
54 }


anthonychen edited on 2004-04-14 03:01
reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
mingling





發文: 1
積分: 0
於 2004-04-23 11:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我有試過dbcp功能,但是只要在tomcat 8080 port下沒有問題,如果由apache80port透過mod_webapp connector轉到tomcat時候會出現org.apache.jasper.JasperException: Name jdbc is not bound in this Context
我使用tomcat4124+apache2.0.40.是否apache 的httpd.conf要做相關設定?


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
精靈





發文: 86
積分: 7
於 2004-04-24 03:25 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
能不能看一下你的 TOMCAT server.xml 及 該 webapps 的 web.xml 設定啊 ? 以前我也都是用 Tomcat 4124 在開發,沒遇到過類似的問題。抱歉囉,很難給你建議,看看有沒有其它高手有這種經驗。

reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
Mit





發文: 1
積分: 0
於 2004-04-28 09:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
可否請教一下
有關於javax.jar這個檔案
我可以在哪裡找到
我安裝過j2ee之後搜尋,也不見此檔
是否我遺漏了什麼
可否指引一下
謝謝


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:Mit]
browser

戀香

版主

發文: 3570
積分: 1
於 2004-04-28 09:58 user profilesend a private message to usersend email to browserreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Mit wrote:
可否請教一下
有關於javax.jar這個檔案
我可以在哪裡找到
我安裝過j2ee之後搜尋,也不見此檔
是否我遺漏了什麼
可否指引一下
謝謝


在 J2SDK 1.4 之中 ... Big Smile


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
riochen





發文: 2
積分: 0
於 2004-04-28 16:20 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問精靈大大:
javax.jar是在j2EE的那裡
怎麼都找不到?

另外如照您這樣設好之後
web.xml跟severl.xml還要設定嗎?
如何設定

謝謝!

初學者敬上~


anthonychen edited on 2004-06-30 11:56
reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:riochen]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2004-04-28 16:54 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
riochen wrote:
請問精靈大大:
javax.jar是在j2EE的那裡
怎麼都找不到?

另外如照您這樣設好之後
web.xml跟severl.xml還要設定嗎?
如何設定

javax.jar可以到java.sun.com下載j2EEsdk,應該會有

精靈版友寫的是給non tomcat下時如何設定
你應該去看看
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
this

koji


anthonychen edited on 2004-06-30 11:56
reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
wolfskingoat





發文: 4
積分: 0
於 2004-08-18 15:59 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
j2EE sdk 下載解開後還是沒有看到 javax.jar 檔耶...
請問他到底藏身在哪裡?

另外請問一下,使用 JNDI+JDBC 建立 CP 也是要安裝這個檔嗎?


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
tai1110





發文: 157
積分: 0
於 2004-09-25 23:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請教一個問題
實作 connection pool 是為了要讓建立資料庫連線不必花費那麼多時間
那如果我在做 jsp 的時候
第一個 jsp 建立一個連線然後 setAttribute bind 到 session
然後第二個 jsp 直接取用這個 connection 比較好
還是在第二個 jsp 再 create 一個 connection 比較好
不曉得有沒有那個大大測試過

精靈 wrote:
一般來說,在多人使用的系統中,應用程式若沒有運用 Connection pooling 的機制,會造成很大的效能問題,Connection 開開關關,除了慢,也會耗損資料庫伺服器的資源。大部分的 AP Server 都有提供 Connection pooling 的機制,程式設計師並無須去顧慮這個機制是如何運作的,只要懂得設定相關的參數即可。

假如說,某種狀況下,我們必須自行建置 Connection pooling 的機制時,該如何進行呢?自己寫當然是非常不划算的,況且也不一定寫的好,在這裡,我們使用 jakata project 裡的一個子專案 DBCP,來快速的建置一個隨處可用的 Connection pooling 機制。

在 Tomcat 裡,DBCP 是內建的,用來管理 DB Connection pooling。這個機制是可移植且可獨立出來使用的,要在你的運用程式中加上 DBCP 的功能,你必須至 http://jakarta.apache.org/commons/index.html 這個網址,找到該網頁內的 Components,共有三個必須下載:Collections 、 DBCP 、 Pool 。DBCP 是運用 Collections 及 Pool 這二個基礎的 Components 所設計出來的。當然,如果你有安裝 Tomcat server,最佳的方式是至 $TOMCAT_HOME/common/lib/ 目錄下去取得,保證版本的配合度不會出現問題。在 Tomcat server 裡,以 Tomcat 5.0.19 版內附的最新版本,這三個 Components 的檔名分別是 commons-collections.jar 、 commons-pool-1.1.jar 及 commons-dbcp-1.1.jar。

取得使用 DBCP 必備的 jar 檔後,請記得將這些 jar 檔,放置到 CLASSPATH 中,或直接放至 $JAVA_HOME/jre/lib/ext/ 目錄內。不過,由於 DBCP 有運用到 DataSource 的功能,而這功能是 J2EE 才有的,所以你還必須去下載 J2EE 的一個 javax.jar 檔。

環境建置好之後,接下來就可以開始設計 Connection Pooling 的機制,在這兒,我們介紹最簡單的作法,只要幾行指令就可以完成了,請看範例區裡的程式及其說明。

完成這個程式後,接下來在你的應用程式裡,用 DBConnect.getConnection() 來取得 DB Connection,就能享受到 Connection Pooling 的功能了。

在實際的運作中,這個範例有加上偵錯指令,會顯示出目前 Connection Pool 裡,有多少個 Idle 的 Connection 及多少個 Active 的 Connection,可供作為系統運作的參數調整依據。

範例:
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
01 package util;
02 
03 import java.sql.*;
04 import javax.naming.*;
05 import javax.sql.*;
06 
07 import org.apache.commons.dbcp.BasicDataSource;
08 
09 public class DBConnect {
10   static DataSource dataSource = null;
11 
12   public static DataSource setupDataSource( String sDrvName, String sUserName,
13       String sPwd, String connectURI ) {
14       BasicDataSource ds = new BasicDataSource();
15       ds.setDriverClassName( sDrvName );
16       ds.setUsername( sUserName );
17       ds.setPassword( sPwd );
18       ds.setUrl( connectURI );
19       ds.setMaxActive( 50 );
20       ds.setMaxIdle( 10 );
21       ds.setMaxWait( 10000 ); // 10 seconds
22       return ds;
23   }
24 
25 
26   // static init of the class
27   static {
28     try {
29       System.setProperty( "jdbc.drivers", "oracle.jdbc.driver.OracleDriver" );
30       Class.forName( "oracle.jdbc.driver.OracleDriver" );
31 
32       dataSource = setupDataSource( "oracle.jdbc.driver.OracleDriver", "username",
33         "password", "jdbc:oracle:thin:@192.168.0.1:1521:SID" );
34     }
35     catch (Exception e) {
36       System.out.println( "DBConnect.java => Unable to load driver."  + e.getMessage() );
37     }
38   }
39 
40   /**
41    * 空的建構元,不作任何處理動作。
42    */
43   public DBConnect() {}
44 
45   /**
46    * 取得 DB Connection.
47    */
48   public static Connection getConnection() throws SQLException,ClassNotFoundException {
49     BasicDataSource bds = (BasicDataSource) dataSource;
50     System.out.println("NumActive: " + bds.getNumActive() + ","
51       + "NumIdle: " + bds.getNumIdle() );
52     return dataSource.getConnection();
53   }
54 }



reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
calvincalvin





發文: 2
積分: 0
於 2004-11-12 15:19 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
本人依Tomcat文章說 (http://earth/tomcat-docs/jndi-datasource-examples-howto.html) 利用MS-Window 2000 Server的Tomcat5.0.28 跟 Solaris Oracle 9.2.0.4作DBCP Connection Pooling,但不成功,我已改了server.xml及web.xml的設定,是否還有什麼javax.jar安放於Tomcat\common\lib目錄?

在J2EE1.4 Full Pack上,我又找不到javax.jar擋,請指教在什麼地方找到,及有沒有相應的Sample Code或Guideline. 謝謝!


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
jianyu





發文: 3
積分: 0
於 2004-12-22 09:16 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
如果你用的是j2sdk1.4,那么就不需要javax这个档了。它主要提供了DataSource这些class的定义

reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
pen047

慢慢學…學慢慢



發文: 15
積分: 2
於 2005-03-09 16:17 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
您好!精靈大大,我直接引用了您的範例:
先說我的系統基本資料
系統:win2000
資料庫:M$_SQL2000
版本:j2sdk1.4.2_03
Web Service : Tomcat 5.0

因為我用的是jdts,資料庫是 M$_SQL 所以作過部份的修改、改過的部份如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
刪除 package util;  
 
......略.......
 
static {
try {
System.setProperty( "jdbc.drivers", "net.sourceforge.jtds.jdbc.Driver"   );
Class.forName( "net.sourceforge.jtds.jdbc.Driver"   );
 
dataSource = setupDataSource( [b]"net.sourceforge.jtds.jdbc.Driver", "su",
"12345", "jdbc:jtds:sqlserver://192.168.1.1:1433/data1"  [/b] );
    }
catch (Exception e) {
System.out.println( "DBConnect.java => Unable to load driver."  + e.getMessage() );
}
}
 
略.......


然後將這個 class放在我的
1
C:\j2sdk1.4.2_03\bin>

在我的編譯過之後沒有問題…所以我寫了以下的測試用的class來
測試連線,這個 測試用的 testdb 也被放在
1
C:\j2sdk1.4.2_03\bin>


下是testdb.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
import java.sql.*;
import javax.sql.*;
import java.io.*;
 
public class testdb
{
 public static void main(String[] args) {
 String numbers="";
   try {
   Connection con = DBConnect.getConnection();  
}
catch(SQLException e)
{
  System.out.println(e);
}
  try
  {
   if(!con.isClosed()) 
  {
  System.out.println("連線成功!");
     con.close(); //<註解>結束與資料庫的連線
   }
   else
   {
     System.out.println("無連線!");
     } 
    }
        catch(SQLException e) {
            System.out.println(e);
            e.printStackTrace();
        }
 
}
}


接下來就是我的問題了…@@
在編譯的時候…出現了以下的錯誤訊息…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\j2sdk1.4.2_03\bin>javac DBConnect.java
 
C:\j2sdk1.4.2_03\bin>javac testdb.java
testdb.java:18: cannot resolve symbol
symbol  : variable con
location: class testdb[b]
  if(!con.isClosed())
      ^ [/b] 
testdb.java:21: cannot resolve symbol
symbol  : variable con
location: class testdb
    con.close();//<註解>結束與資料庫的連線
    ^ [/b] 
2 errors
C:\j2sdk1.4.2_03\bin>


編譯程式竟然說cannot resolve symbol??
我在程式前面也已經作了 import java.sql.*;
若是有錯誤的話…是不是應該在 Connection con = DBConnect.getConnection();
就會有問題了, 怎會在 之後才跟我說cannot resolve symbol
所以百思不得解…不得以…才上來請教大家…
是不是我那裡的思維有問題…?煩請指教!


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:pen047]
pen047

慢慢學…學慢慢



發文: 15
積分: 2
於 2005-03-09 16:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
pen047 wrote:
您好!精靈大大,我直接引用了您的範例:
先說我的系統基本資料
系統:win2000
資料庫:M$_SQL2000
版本:j2sdk1.4.2_03
Web Service : Tomcat 5.0

中間 …略…

接下來就是我的問題了…@@
在編譯的時候…出現了以下的錯誤訊息…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\j2sdk1.4.2_03\bin>javac DBConnect.java
 
C:\j2sdk1.4.2_03\bin>javac testdb.java
testdb.java:18: cannot resolve symbol
symbol  : variable con
location: class testdb[b]
  if(!con.isClosed())
      ^ [/b] 
testdb.java:21: cannot resolve symbol
symbol  : variable con
location: class testdb
    con.close();//<註解>結束與資料庫的連線
    ^ [/b] 
2 errors
C:\j2sdk1.4.2_03\bin>


編譯程式竟然說cannot resolve symbol??
我在程式前面也已經作了 import java.sql.*;
若是有錯誤的話…是不是應該在 Connection con = DBConnect.getConnection();
就會有問題了, 怎會在 之後才跟我說cannot resolve symbol
所以百思不得解…不得以…才上來請教大家…
是不是我那裡的思維有問題…?煩請指教!


對不起…我在搞白痴…
剛去 再找了一下 全文檢索 好像是說
Connection con = DBConnect.getConnection();
如果定義在
try {} catch {}
在try之外是找不到 con的…
所以我改了一下
把 connection con 先行定義…放在try {} catch {}外面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.sql.*;
import javax.sql.*;
import java.io.*;
 
public class testdb
{
 public static void main(String[] args) {
 String numbers="";
 Connection con= null;
try { con = DBConnect.getConnection();}
catch(SQLException i){System.out.println(i);}
try {if(!con.isClosed()){System.out.println("連線成功!");con.close(); }
   else{System.out.println("無連線!");} }
   
     catch(SQLException e) {System.out.println(e);}
        
}
}


不過又出現新的錯誤…
1
2
3
4
5
6
C:\j2sdk1.4.2_03\bin>javac testdb.java
testdb.java:10: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
try { con = DBConnect.getConnection();}
                                   ^
1 error
C:\j2sdk1.4.2_03\bin>


我看了好多次…應該沒有忘記去catch 他的Exception…
又是怎麼回事@@…最近是踩到狗屎了嗎?@@


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
zanyking





發文: 406
積分: 4
於 2005-05-23 12:56 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
你的Error MSG寫得很清楚啊,有一個exception沒有被Handle,
這個exception叫做:java.lang.ClassNotFoundException;

回去看你的DBConnect,他是會丟ClassNotFoundException啊,可是你的main裡頭卻沒處理它,當然編譯不過。
你的Error Message還特別給你建議勒!

1.要嘛請你捕捉他。

2.不然請把它再丟出去。

java 是很友善低。


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
jiangshachina

Hi, Java!



發文: 565
積分: 1
於 2005-11-09 14:37 user profilesend a private message to usersend email to jiangshachinareply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
针对楼主提供的例子,有没有一个简单的方法来测试它的性能。即,对比一下,用pool和不用pool的之间的差别。
如果有大访问量的话,连接池的效率应该比较高,比较快。但我希望能有切身的体会。当然,我只有一台PC,没有服务器之类的东东。
希望能有简单的方法来测试一下。
SmileSmileSmileSmileSmileSmileSmileSmileSmileSmileSmileSmileSmile


reply to postreply to post
a cup of Java, cheers!
同是Java爱好者,相逢何必曾相识!
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
tomingy





發文: 2
積分: 0
於 2005-12-28 10:10 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問有冇人可以答這個問題?

1
2
3
4
5
6
48   public static Connection getConnection() throws SQLException,ClassNotFoundException {
49     BasicDataSource bds = (BasicDataSource) dataSource;
50     System.out.println("NumActive: " + bds.getNumActive() + ","
51       + "NumIdle: " + bds.getNumIdle() );
52     return dataSource.getConnection();
53   }


DataSource 'dataSource' 是static。那getConnection()這個Function為什麼不用synchronize? 如果有一千人同時在網站上!那不會有multi-thread的問題嗎?

-tomingy


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
krauphy





發文: 12
積分: 0
於 2006-06-05 18:39 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請教一愚昧問題,這DBConnect用法,是否有需要再手寫程式將該Connection送回pool ? 或是它自己TimeOut到就自己會處理?

懇請高手解惑


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:krauphy]
magicfish





發文: 209
積分: 3
於 2006-06-08 23:33 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
krauphy wrote:
請教一愚昧問題,這DBConnect用法,是否有需要再手寫程式將該Connection送回pool ? 或是它自己TimeOut到就自己會處理?

懇請高手解惑

Connection Close()之後就直接byebye了


reply to postreply to post
One day,a girl appeared before the boy suddenly.
She said that it was an "angel" about herself.
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
xingxing365





發文: 15
積分: 0
於 2006-12-27 12:42 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
dbcp是自动回收的,你只要关掉就行了,连接池应自动回收,而不是关掉,如果关掉,需要时在创建新的连接,那连接池有何用?

reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
xeg921





發文: 1
積分: 0
於 2007-01-08 22:57 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問,我利用上面的例子寫一個client的程式以getConnection取得一個db connection用來執行查詢的動作,然後將connection.close(),我的程式並未立即結束,想請問,它在作什麼?什麼時候它才會結束。謝謝!

reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
cphunterlin





發文: 193
積分: 0
於 2007-01-09 00:18 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
請問版上各位大大..
那如果用 resin 的話 , DBCP 有其適用性嗎

謝謝...


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:cphunterlin]
MegaBytes





發文: 13
積分: 0
於 2007-01-10 14:21 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
cphunterlin wrote:
請問版上各位大大..
那如果用 resin 的話 , DBCP 有其適用性嗎

謝謝...

不用吧,或是說根本不需要

按照網頁上的說明,它應該已經有一套類似DBCP 的
ConnectionPool機制
http://www.caucho.com/resin-3.0/db/config.xtp#Connection-Pool


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:koji]
singetter





發文: 17
積分: 0
於 2008-03-19 16:51 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
koji wrote:
javax.jar可以到java.sun.com下載j2EEsdk,應該會有

精靈版友寫的是給non tomcat下時如何設定
你應該去看看
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jndi-datasource-examples-howto.html
this

koji


這是指:
給不在ap的環境下,也能使用connection pool的範例?


reply to postreply to post
作者 Re:使用 jakata DBCP package 作 DB Connection pooling [Re:精靈]
gfyy0827





發文: 54
積分: 0
於 2010-04-29 14:00 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Smile 推推!!

我後來用精靈大大的範例改成下面這樣,

但我遇到一個問題,如果我要將path傳入,要怎麼改會比較好?

想了很久但是不知道從何改起...

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
package com.posm;
 
import java.sql.*;
import javax.naming.*;
import javax.sql.*;
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
import java.util.ResourceBundle;
 
public class DBConnect{
  static DataSource dataSource = null;
  static{
    try{
      String Path = "com.posm.posm";
      //取得設定檔資訊
      String DBDriverName = ResourceBundle.getBundle(Path).getString("DBDriverName");
      String DBUserName = ResourceBundle.getBundle(Path).getString("DBUserName");
      String DBPassword = ResourceBundle.getBundle(Path).getString("DBPassword");
      String DBConnectURL = ResourceBundle.getBundle(Path).getString("DBConnectURL");
      String DBClassName = ResourceBundle.getBundle(Path).getString("DBClassName");
      System.setProperty("jdbc.drivers", DBDriverName);
      Class.forName(DBClassName);
      dataSource = setupDataSource(DBDriverName,DBUserName, DBPassword, DBConnectURL);
    }catch (Exception e) {
      System.out.println( "DBConnect.java => Unable to load driver."  + e.getMessage() );
    }
  }
 
  public DBConnect() {}
 
  public static DataSource setupDataSource(String DBDriverName,String DBUserName,String DBPassword,String DBConnectURL){
    BasicDataSource ds = new BasicDataSource();
    ds.setDriverClassName(DBDriverName);
    ds.setUsername(DBUserName);
    ds.setPassword(DBPassword);
    ds.setUrl(DBConnectURL);
    //ds.setMaxActive(50);
    //ds.setMaxIdle(10);
    //ds.setMaxWait(10000); // 10 seconds
    return ds;
  }
 
  public static Connection getConnection() throws SQLException,ClassNotFoundException {
    BasicDataSource bds = (BasicDataSource) dataSource;
    System.out.println("NumActive: " + bds.getNumActive() + "," + "NumIdle: " + bds.getNumIdle());
    return dataSource.getConnection();
  }
}


properties檔內容如下:
1
2
3
4
5
DBDriverName = com.microsoft.sqlserver.jdbc.SQLServerDriver
DBUserName = 123
DBPassword = 123
DBConnectURL = jdbc:sqlserver://localhost:1433;DatabaseName=POSM
DBClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver


reply to postreply to post
Programmer是條不歸路。
http://www.wretch.cc/blog/etchen
» JWorld@TW »  JDBC/SQL討論區 » Connection Pool

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8