您的位置:首页 > 数据库

数据库连接池技术中dbcp、c3p0、jndi三者的联系

2011-08-12 16:30 183 查看
dbcp、c3p0 是两个数据库连接池

这两个连接池都是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();

  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: