java jndi c_Java技术回顾之JNDI:JNDI API

JNDI API包含以下5个package:

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

其中前面4个package定义了JNDI客户端接口,面向使用命名和目录服务的应用。最后的javax.naming.spi定义了JNDI服务提供者接口(SPI),面向不同的命名和目录服务提供者。

命名服务主要API javax.naming

1、Context接口和InitialContext类

Context是命名服务的核心接口,提供对象查找,绑定/解除绑定,重命名对象,创建和销毁子上下文等操作。

InitialContext类实现了Context接口,是访问命名服务的起始上下文,通过它可查找对象和子上下文。

Context主要方法:

Object lookup(Name name)

Object lookup(String name)

根据名称获取对象

void bind(Name name, Object obj)

void bind(String name, Object obj)

绑定名称到对象

void unbind(Name name)

void unbind(String name)

解除绑定,释放对象

void rebind(Name name, Object obj)

void rebind(String name, Object obj)

将对象和一个已经存在的名称重新绑定

void rename(Name oldName, Name newName)

void rename(String oldName, String newName)

修改对象名称

NamingEnumeration

list(Name name)

NamingEnumeration

list(String name)

列出上下文中的所有对象名称信息。NameClassPair包含对象名称和对象类名。

NamingEnumeration

listBindings(Name name)

NamingEnumeration

listBindings(String name)

列出上下文中的所有绑定。

Context createSubcontext(Name name)

Context createSubcontext(String name)

创建子上下文

void destroySubcontext(Name name)

void destroySubcontext(String name)

销毁子上下文

2、Name接口对应于命名服务概念中的对象名称。它的具体实现可能是一个简单的字符串,也可能是一个复杂对象。CompoundName类和CompositeName类均实现了Name接口,分别代表复合名称和混合名称。

3、Binding类 对应于命名服务概念中的绑定。

一个Binding包含对象名称,对象的类名称,对象本身。

Binding主要方法:

String getName()

void setName(String name)

获取/设置对象名称

String getClassName()

setClassName(String name)

获取/设置对象类名

Object getObject()

void setObject(Object obj)

获取/设置对象

4、Referenceable接口和Reference类命名服务中对象的存储方式各不相同。有的将对象直接序列化,这时实现标准的Serializable接口接口。有的要将对象存储在命名系统外部,这就要用到Referenceable接口和Reference类了。Reference类包含了怎样构造出一个实际对象的信息,实际对象则需要实现Referenceable接口。

Referenceable主要方法:

Reference getReference() 返回对象的引用。

当将一个实现了Referenceable接口的对象绑定到Context时,实际上通过getReference()得到它的Reference进行绑定。而如何从Reference中创建出Referenceable实例,则由具体的SPI实现,JNDI客户不用关心。

目录服务主要API

javax.naming.directory

1、DirContext接口和InitialDirContext类DirContext是目录服务的核心接口,它扩展了Context接口,除了提供了命名服务的各种操作外,还提供了访问和更新目录对象属性的操作,以及Search操作。

InitialDirContext类扩展InitialContext类并实现了DirContext接口,是访问目录服务的起始点。

DirContext主要方法:

binding/rebing/unbinding等方法与Context类似,区别是各个方法中均添加了Attributes参数,表示绑定的是一个目录对象,其中有对象本身,还有对象的属性集合。这里不再列举。

Attributes getAttributes(Name name)

获取对象的属性集合

void modifyAttributes(Name name, int mod_op, Attributes

attrs)

修改对象的属性集合

NamingEnumeration

search(Name name, Attributes matchingAttributes)

搜索包含匹配的属性的对象。

NamingEnumeration

search(Name name, String filter, SearchControls cons)

通过查询过滤条件进行搜索,同时指定了搜索控制。

2、Attribute接口和Attributes接口Attribute接口对应于目录服务概念中的属性。Attributes表示属性的集合。

3、SearchResult类和SearchControls类SearchResult类继承自Binding类,表示DirContext的search操作的结果。SearchControls类用于对搜索操作进行更精细的控制,如指定搜索范围(Scope),时间限制(TimeLimit)和结果数量限制(CountLimit)。

命名和目录服务事件API

javax.naming.event

1、EventContext接口和EventDirContext接口分别表示支持事件通知的上下文,提供了添加和删除事件监听器的操作。

2、NamingEvent类命名和目录服务产生的事件。包含一个type表示不同的事件类型。

3、NamingListener/NamespaceChangeListener/ObjectChangeListenerNamingListener是处理NamingEvent事件监听器的接口,NamespaceChangeListener和ObjectChangeListener是它的两个子接口,分别定义了各自感兴趣的NamingEvent事件类型的处理方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值