數據庫連接池技術中dbcp、c3p0、jndi三者的聯繫

這兩個連接池都是Hibernate建議使用的連接池

DBCP是一個依賴Jakarta commons-pool對象池機制的數據庫連接池,Tomcat的數據源使用的就是DBCP。

C3P0是一個開放源代碼的JDBC連接池,它在lib目錄中與Hibernate一起發佈,包括了實現jdbc3和jdbc2擴展規範說明的Connection 和Statement 池的DataSources 對象。

JNDI(Java Naming and Directory Interface)是SUN公司提供的一種標準的Java命名系統接口,JNDI提供統一的客戶端API,通過不同的訪問提供者接口JNDI SPI的實現,由管理者將JNDI API映射爲特定的命名服務和目錄系統,使得Java應用程序可以和這些命名服務和目錄服務之間進行交互。

JNDI與JDBC:
  JNDI提供了一種統一的方式,可以用在網絡上查找和訪問服務。通過指定一個資源名稱,該名稱對應於數據庫或命名服務中的一個紀錄,同時返回數據庫連接建立所必須的信息。

參考資料:
  http://java.sun.com/products/jndi/examples.html
  http://java.sun.com/products/jndi/serviceproviders.html
常用的JNDI操作:
  void bind(String sName,Object object);――綁定:把名稱同對象關聯的過程
  void rebind(String sName,Object object);――重新綁定:用來把對象同一個已經存在的名稱重新綁定
  void unbind(String sName);――釋放:用來把對象從目錄中釋放出來
  void lookup(String sName,Object object);――查找:返回目錄總的一個對象
  void rename(String sOldName,String sNewName);――重命名:用來修改對象名稱綁定的名稱
  NamingEnumeration listBinding(String sName);――清單:返回綁定在特定上下文中對象的清單列表
  NamingEnumeration list(String sName);
  代碼示例:重新得到了名稱、類名和綁定對象。
  NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
  ...
  while ( namEnumList.hasMore() ) {
  Binding bnd = (Binding) namEnumList.next();
  String sObjName = bnd.getName();
  String sClassName = bnd.getClassName();
  SomeObject objLocal = (SomeObject) bnd.getObject();
  }

發佈了17 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章