JNDI 是什么

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()); 
} 







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值