您的位置:首页 > 其它

JNDI 是什么

2011-12-13 08:27 183 查看
JNDI 是什么这个问题在面试的时候经常会被问到.在网上搜索了一扁文章虽然不能帮助完全掌握JNDI但是对我们了JNDI是很有帮助的:

JNDI 是Java命名和目录接口

JNDI 在 J2EE 中的角色就是“交换机” —— J2EE 组件在运行时间接地查找其他组件、资源或服务的通用机制

分布式计算环境通常使用命名和目录服务来获取共享的组件和资源。命名和目录服务将名称与位置、服务、信息和资源关联起来。

命名服务提供名称—对象的映射。目录服务提供有关对象的信息,并提供定位这些对象所需的搜索工具。有许多命名和目录服务实现,并且到它们的接口是不同的。

JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。

如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA
Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。

JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。

JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层上下文以及使用相同命名语法的子上下文。

jndi的用途:

1.你可以用jndi来得到object类的属性

如:

Attribute attr =directory.getAttributes(personName).get("email"); 
String email = (String)attr.get();
2.你可以用jndi来搜索对象

foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
查找谁的名字叫Fox在wiz部门的员工?

3.你可以用jndi通过naming/directory服务查询像printers和databases的对象

如:查询 Printer

Printer printer = (Printer)namespace.lookup(printerName); 
printer.print(document);
4.你可以用jndi列表出命名空间的特殊级别的内容

如:

NamingEnumeration list = namespace.list("o=Widget, c=US"; 
while (list.hasMore()) { 
NameClassPair entry = (NameClassPair)list.next(); 
display(entry.getName(), entry.getClassName()); 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: