学习笔记——JNDI

原创 2012年03月21日 13:03:10

Java Naming Directory Interface(JNDI,Java命名目录接口)。

JNDI允许程序通过一个名称来访问真正的Java对象,其包含了一些标准API接口,并且不依赖于任何独立的命名目录服务器。

JNDI API位于JDK的javax.naming包及其子包中。

使用JNDI至少需要提供3方面的支持:JNDI API、JNDI SPI、命名、目录服务器。

 

Lightweight Directory Access Protocol(JDAP)、Microsoft Active Directory都可实现与JNDI类似的功能。

命名服务:将名字和计算机系统内的一个对象建立关联,从而允许应用程序通过该名字来访问该对象。

目录服务:目录服务是对命名服务的扩展, 其不仅需要保存名称和对象之间的关联,而且还会保存对象的各种属性,以备开发者调用。

JNDI结构包含两组API:JNDI API和JNDI SPI(Service Provider Interface)。

功能:API允许开发者通过一致的方式来访问各种命名、目录服务,SPI保证各种命名、目录服务透明地加入JNDI结构中。(Naming Manager负责管理API和SPI之间的转换)

基本概念

binding:将一个名字绑定某个对象。

Context:一组绑定关系的集合,一个Context可有N个SubContext。

Naming System:遵循某种命名规则的绑定系统。如:文件系统。

Naming Service:对Naming System的扩展,允许通过名字来访问与之绑定的对象。

Directory Service:对Naming Service的扩展,其不仅需要保存名称和对象之间的关联,而且还会保存对象的各种属性,以备开发者调用。

 

访问绑定对象的步骤:

1:创建Context对象。

2:调用Context的lookup()方法根据JNDI名称来查找对象,或调用bind()、rebind()、unbind()来操作JNDI。

3:关闭Context对象。

如:

Context context = new InitialContext();
Object file = context.lookup(fileName);
context.close();

Context只是一个接口,通常使用它的实现类InitialContext来创建实例。InitialConext提供了的常用构造器:

InitialContext():读取系统属性来创建实例,常在服务器中使用。

InitialContext(Hashtable<?, ?> environment):需要提供属性,常在客户端中使用。

Hashtable至少包含以下key:

1:java.naming.factory.initial:可用Context.INITIAL_CONTEXT_FACTORY代替。(e.g. WebLogic提供了weblogic.jndi.WLInitialContextFactory, JBoss提供了org.jnp.interfaces.NamingContextFactory)

2:java.naming.provider.url:可用Context.PROVIDER_URL代替。(e.g. WebLogic提供了t3://localhost:7001,JBoss提供了localhost:1099)

public class Client {
	public static void main(String[] args) throws Exception {
		final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
		final String WL_URL = "t3://localhost:7001";
		Hashtable properties = new Hashtable();
		properties.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);
		properties.put(Context.PROVIDER_URL, WL_URL);
		Context context = new InitialContext(properties);
		Object obj = context.lookup("fileName");
		context.close();
	}
}
WebSphere:     
Context.INITIAL_CONTEXT_FACTORY     
 "com.ibm.websphere.naming.WsnInitialContextFactory    "     
Context.PROVIDER_URL     
 "iiop://localhost:900    "     
 
 
Weblogic:     
Context.INITIAL_CONTEXT_FACTORY     
     "weblogic.jndi.WLInitialContextFactory    "     
Context.PROVIDER_URL     
     "t3://127.0.0.1:7001    "                              
  
     J2EE    SDK(J2EE    RI):     
Context.INITIAL_CONTEXT_FACTORY     
     "com.sun.jndi.cosnaming.CNCtxFactory    "     
Context.PROVIDER_URL     
     "iiop://127.0.0.1:1050    "     
  
SilverStream:     
Context.INITIAL_CONTEXT_FACTORY     
 "com.sssw.rt.jndi.AgInitCtxFactory    "     
Context.PROVIDER_URL     
 "sssw://localhost:80    "     
 
  
    
OC4J 
Context.INITIAL_CONTEXT_FACTORY 
"com.evermind.server.rmi.RMIInitialContextFactory" 
Context.PROVIDER_URL 
"ormi://127.0.0.1/" 
 
    
  
 
 
JBOSS的: 
java.naming.factory.initial 
"org.jnp.interfaces.NamingContextFactory" 
java.naming.provider.url 
"localhost:1099" 
 
    
 
    
WAS5: 
Context.INITIAL_CONTEXT_FACTORY     
 "com.ibm.websphere.naming.WsnInitialContextFactory    "     
Context.PROVIDER_URL     
 "iiop://localhost:2809    " 

相关文章推荐

servlet学习笔记_JNDI.doc

  • 2007年05月04日 23:02
  • 25KB
  • 下载

JavaEE5学习笔记02-JNDI与RMI

  • 2011年05月16日 17:16
  • 263KB
  • 下载

Java学习笔记(十):Java中的JNDI

JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有...

JNDI学习笔记

JNDI学习笔记(一) http://www.chinaunix.net 作者:镖师甲  发表于:2006-06-16 18:14:54 【发表评论】【查看...

Activemq学习笔记---Topic及JNDI使用

上一节已介绍了jms的数据传输模型基本概念,这节示例Pub/Sub模型。Activemq可以与jndi提供者配合使用,但其本身也提供了jndi服务,使得客户端可以在缺少JNDI提供者的情况下享受JND...

JNDI學習筆記

[转载自:http://www.lslnet.com/linux/f/docs1/i15/big5174174.htm] http://java.sun.com/products/jndi/down...
  • lxqluo
  • lxqluo
  • 2011年11月08日 10:12
  • 781

DBCP 数据库连接池JNDI连接 学习笔记

数据库连接池:减少数据库连接的数量提高数据库访问效率 DBCP优点: 1\速度快 2\tomcat 都默认使用DBCP,說明大众! 3\连接数控制与连接归还策略 4\应对网络不稳定的策略 5\应对...

数据库连接学习(二)——Tomcat下使用C3P0配置JNDI数据源

一、C3P0下载   C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar      下载完成之后得到一个压缩包。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记——JNDI
举报原因:
原因补充:

(最多只允许输入30个字)