鏈接池應該說是一種思想,一種讓資源合理化利用的思想。鏈接池解決的問題以下:
1.java和數據庫創建鏈接時比較耗時的問題
2.數據庫鏈接創建過多容易死機的問題
3.每一個鏈接不能充分利用的問題
連 接池適合多線程,大量重複的操做數據庫項目。鏈接池的思想是這樣的,當你的程序一啓動,首先創建必定數目的鏈接,將鏈接放置在一個數據結構中,就如同方在 一個池子中同樣,當有第一個線程須要訪問數據庫的時候,從池子中取出一個鏈接,分配給這個線程,這個線程經過這個鏈接去訪問數據庫,使用完畢後,不是關閉 鏈接,而是將其放回到池子中。再有線程須要的時候再從池子中拿出一個鏈接。通常來講池子中有多少鏈接就能夠知足多少線程同時訪問數據庫。若是同時須要的連 接太多,鏈接池中的鏈接不夠,則根據策略生成新的鏈接。通常鏈接池都會有上限,達到上限時就再也不創建新的鏈接,主要是防止鏈接過多致使機器資源耗盡死機, 此時若是鏈接池中沒有鏈接,可是仍有線程等待鏈接則讓這些線程繼續等待,直到有其餘線程用完鏈接並放置回鏈接池。以上是鏈接池的基本思想,比較好的鏈接池 好須要有其餘技術來保證鏈接池的穩定性和性能。
weblogic的鏈接池配置好之後,在你的項目中須要使用JNDI來得到DataSource的實例來訪問數據庫,網上有不少這樣的文章,能夠找找。
前面說了鏈接池通常用於多個線程大量重複的操做數據庫項目,特別是B/S模式或者C/S模式的多客戶基於數據庫的系統。因此不論j2ee或者j2se只要知足這個條件都是有必要使用鏈接池的
代碼就不給了,這個地方貼不下,網上能夠down到java
當應用程序請求一個鏈接時,鏈接池爲該應用程序分配一個鏈接而不是從新創建一個鏈接;當應用程序使用完鏈接後,該鏈接被歸還給鏈接池而不是直接釋放。
如何實現鏈接池
確保你每一次的鏈接使用相同的鏈接字符串(和鏈接池相同);只有鏈接字符串相同時鏈接池纔會工做。若是鏈接字符串不相同,應用程序就不會使用鏈接池而是建立一個新的鏈接。
優勢
使 用鏈接池的最主要的優勢是性能。建立一個新的數據庫鏈接所耗費的時間主要取決於網絡的速度以及應用程序和數據庫服務器的(網絡)距離,並且這個過程一般是 一個很耗時的過程。而採用數據庫鏈接池後,數據庫鏈接請求能夠直接經過鏈接池知足而不須要爲該請求從新鏈接、認證到數據庫服務器,這樣就節省了時間。
缺點
數據庫鏈接池中可能存在着多個沒有被使用的鏈接一直鏈接着數據庫(這意味着資源的浪費)。
技巧和提示
1. 當你須要數據庫鏈接時纔去建立鏈接池,而不是提早創建。一旦你使用完鏈接當即關閉它,不要等到垃圾收集器來處理它。
2. 在關閉數據庫鏈接前確保關閉了全部用戶定義的事務。
3. 不要關閉數據庫中全部的鏈接,至少保證鏈接池中有一個鏈接可用。若是內存和其餘資源是你必須首先考慮的問題,能夠關閉全部的鏈接,而後在下一個請求到來時建立鏈接池。
鏈接池FAQ
1. 什麼時候建立鏈接池?
當第一個鏈接請求到來時建立鏈接池;鏈接池的創建由數據庫鏈接的鏈接字符創來決定。每個鏈接池都與一個不一樣的鏈接字符串相關。當一個新的鏈接請求到來時若是鏈接字符串和鏈接池使用的字符串相同,就從鏈接池取出一個鏈接;若是不相同,就新建一個鏈接池。
2. 什麼時候關閉鏈接池?
當鏈接池中的全部鏈接都已經關閉時關閉鏈接池。
3. 當鏈接池中的鏈接都已經用完,而有新的鏈接請求到來時會發生什麼?
當鏈接池已經達到它的最大鏈接數目時,有新的鏈接請求到來時,新的鏈接請求將放置到鏈接隊列中。當有鏈接釋放給鏈接池時,鏈接池將新釋放的鏈接分配給在隊列中排隊的鏈接請求。你能夠調用close和dispose將鏈接歸還給鏈接池。
4. 我應該如何容許鏈接池?
對於.NET應用程序而言,默認爲容許鏈接池。(這意味着你能夠沒必要爲這件事情作任何的事情)固然,若是你能夠在SQLConnection對象的鏈接字符串中加進Pooling=true;確保你的應用程序容許鏈接池的使用。
5. 我應該如何禁止鏈接池?
ADO.NET默認爲容許數據庫鏈接池,若是你但願禁止鏈接池,可使用以下的方式:
1) 使用SQLConnection對象時,往鏈接字符串加入以下內容:Pooling=False;
2) 使用OLEDBConnection對象時,往鏈接字符串加入以下內容:OLE DB Services=-4;web