`
pengcqu
  • 浏览: 771103 次
  • 性别: Icon_minigender_1
  • 来自: 未来
社区版块
存档分类
最新评论

Java中的JNDI (Java命名与目录接口)

阅读更多

     JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNIprovider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAPCORBA Common Object ServiceCOS)名字服务、RMINDSDNSWindows注册表等等。很多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);
 
查找谁的名字叫Foxwiz部门的员工?
3
)你可以用jndi通过naming/directory服务查询像printersdatabases的对象
 
如:查询  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());}


1
)五个包:

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

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

 

2)命名服务:javax.Naming

——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) 

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

NamingEnumeration<NameClassPair> list(Name name)

NamingEnumeration<NameClassPair> list(String name) 

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

NamingEnumeration<Binding> listBindings(Name name)

NamingEnumeration<Binding> listBindings(String name) 

创建子上下文:

Context createSubcontext(Name name)

Context createSubcontext(String name)

销毁子上下文:

void destroySubcontext(Name name)

void destroySubcontext(String name) 

——Name接口

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

——Binding

对应于命名服务概念中的绑定。一个Binding包含对象名称,对象的类名称,对象本身。

——Referenceable接口和Reference

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

Referenceable主要方法:

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

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

 

3)目录服务:javax.naming.directory

——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<SearchResult> search(Name name, Attributes matchingAttributes)

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

NamingEnumeration<SearchResult> search(Name name, String filter, SearchControls cons) 

——Attribute接口和Attributes接口

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

——SearchResult类和SearchControls

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

 

4)命名和目录服务事件:javax.naming.event

——EventContext接口和EventDirContext接口

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

——NamingEvent

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

——NamingListener/NamespaceChangeListener/ObjectChangeListener

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

 

 

相关链接:

 

★  Java知识点汇总 

全球软件项目外包平台 兼职做外包 挣Money!

分享到:
评论

相关推荐

    JNDI(Java 命名和目录接口).

    JNDI(Java 命名和目录接口,)

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...

    JNDI 命名和目录服务

    JNDI 命名和目录服务 JAVA 命名和目录接口

    JNDI的包 java命名与服务

    JDNI的包。java命名与服务。为什么要输入20个字符呢。。唉。。

    Java中的命名与目录接口JNDI基本操作方法概览

    主要介绍了Java中的命名与目录接口JNDI基本操作方法概览,JNDI提供统一的客户端API使得Java应用程序可以和这些命名服务和目录服务之间进行交互,需要的朋友可以参考下

    Java基础知识点 - 内容比较全面

    Java基础知识点,内容比较全面。 目录: 1.1 Java中的引用概念 ...1.11 Java中的JNDI (Java命名与目录接口) 1.12 Java事件处理机制与“恋爱关系” 1.13 Java代码优化编程 1.14 Java数组浅析 。。。。。。

    java命名包jndi.jar

    经过oracle 驱动测试通过的jndi.jar

    JNDI的应用

    JNDI是Java Naming and Directory Interface(JAVA命名和目录接口)的英文简写,它是为JAVA应用程序提供命名和目录访问服务的API(Application Programing Interface,应用程序编程接口)。

    JNDI配置方法详解

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...

    tomcat配置jndi有全局配置和局部配置

    JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,...

    springboot-jndi-tomcat.rar

    JNDI全名为Java Naming and Directory Interface.JNDI主要提供应用程序所需要资源上命名与目录服务。在Java EE环境中,JNDI扮演了一个很重要的角色,它提供了一个接口让用户在不知道资源所在位置的情形下,取得该...

    JNDI.rar_JNDI A

    标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互

    用JNDI绑定DataSource

    概念:JNDI(Java Namespace Diretory Interface)是Java中命名空间和目录协议,有很多的服务器都实现了这个接口,如我们机器上的FileSystem文件系统服务器,还有LDAP(Lightweight Diretory Access Protocol轻量级的目录...

    Java高手真经 高级编程篇 part4/7

     Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务、JMS消息服务、JavaMail邮件服务、WebService、JMX管理、JCA连接器。  Java Web开源技术与框架:包括工作流、规则引擎、搜索...

    Java高手真经 高级编程篇 part7/7

     Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务、JMS消息服务、JavaMail邮件服务、WebService、JMX管理、JCA连接器。  Java Web开源技术与框架:包括工作流、规则引擎、搜索...

    jta-1.3.1.jar

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...

    Java相关技术(详细资料)

    这个接口屏蔽了企业网络所使用的各种命名和目录服务。  6、JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。  7、JMS(Java Message Service)提供企业消息服务,...

    数据库连接池连接数据库

    JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,...

    Java高手真经 高级编程篇 下载(一)

     Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务、JMS消息服务、JavaMail邮件服务、WebService、JMX管理、JCA连接器。  Java Web开源技术与框架:包括工作流、规则引擎、搜索...

    Java高手真经 高级编程篇 下载(三)

     Java Web分布式开发技术:包括JTA事务管理、JAAS验证与授权服务、JNDI命名和目录服务、JMS消息服务、JavaMail邮件服务、WebService、JMX管理、JCA连接器。  Java Web开源技术与框架:包括工作流、规则引擎、搜索...

Global site tag (gtag.js) - Google Analytics