2.1 JNDI服务提供者

当下载SDK软件开发包时,同时就下载了Sun公司的一些现有的服务提供者。这些服务提供者包括LDAP、NIS、COS(CORBA对象服务)、RMI注册及文件系统的提供者。如:hashtableObj.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.ldapCtx- Fatory")就是表示使用Sun LDAP服务提供者。当然如果要使用IBM服务提供者时就可以用com.ibm.jndi.LDAPCtxFatory来代替com.sun.jndi.ldap.ldapCtxFatory。

2.2 JNDI的包

JNDI中包括5个包。

·      

·      

·      

·      

·      

2.3 

常用的JNDI操作如下:

·      

·      

·      

·      

·      

·      

//得到初始目录环境的一个引用

Context cntxt = new InitialContext();

//返回绑定在特定上下文中指定属性名对象的清单列表

NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");

//循环列出所有名字、类和对象

while ( namEnumList.hasMore() ) 

  

  

  

  

  

}

·      

2.4 

使用JNDI来访问命名服务或者目录服务,操作步骤如下:

(1)建立一个散列表(hashtable),它包含定义所希望使用的JNDI服务的属性,所希望连接的LDAP服务器IP地址以及工作的端口。

(2)将与认证成为用户登录有关的任何信息添加到散列表中。

(3)创建初始context对象。如果访问命名服务,则使用InitialContext类,如果访问目录服务,则要使用InitialDirContext类。

(4)使用刚才得到的context对象执行所需的操作(如添加新的条目或者搜索条目)。

(5)完成操作后关闭context对象。

2.5 

JNDI最大的功能是能使用LDAP来存储需要在不同应用之间共享或者留做备用的对象。JNDI允许将下面几种与Java相关的对象类型存储到LDAP服务器内。

(1)串行化的Java对象。这是存储和取回已经串行化的Java对象的能力。也就是说要存储的Java对象必须要实现Referenceable或Serializable接口类,否则该对象不能存储。

(2)标准的LDAP目录条目。它提供了操作标准目录数据的能力。标准目录数据的数据量比较小,可以在不同的语言之间共享它们。保持目录数据与编程语言的无关性对于要使用几种不同语言进行开发的大企业里是非常重要的。

(3)指向RMI Java对象的指针。RMI是用于分布式计算的,通过RMI,一个Java应用可以像本地一样调用一个远程类的方法。我们可以把一个可用的RMI类的引用存储在开发者的LDAP服务器中,而不必在每个装有RMI客户应用的计算机上都保持可用方法的注册。

2.6 

1.保存数据

 

4 例6-1  在LDAP中保存数据。

(1)待绑定的基本类

package jndi;

import java.io.serializable;

public class persons implements

   String Name = "";

   String Age ="" 

  

  

   //构造函数,用于给变量赋值

   public

      

      

  

   //用于返回变量Name的值

   public

      return

  

   //用于返回变量Age的值

  public String getAge () {

   return  Age;

  


}