(java 基础知识) java命名服务(JNDI)---javax.naming

来源:互联网 发布:09总决赛科比数据 编辑:程序博客网 时间:2024/05/11 12:23

1.JNDI(Java Naming Directory Interface),即Java命名目录接口,允许Java程序通过一个名称来访问真正的Java对象,JNDI消除了不同命名,目录服务之间的差异,允许应用程序采用一致的JNDI接口来调用各种命名,目录服务。JNDI体系结构如图(1-1)所示:


                                                                  

 
 Java SE 在javax.naming包及其子包中定义了JNDI的API接口,在进行JNDI编程时,只需面向此API接口编程即可.JND包括了两组API:

 

      --> JNDI API(Application Programming Interface)

      --> JNDI SPI(Service Provider Interface)

 

     JNDI API 为开发者提供的统一的接口,以一致的方式访问各种命名、目录服

      务,而JNDI SPI则保证了各种命名、目录服务能够以透明的方式加入到JNDI

      的结构中,Naming Manager则负责JNDI API 与 JNDI SPI两者之间的转 

      换。

 

2.登录http://www.oracle.com/technetwork/java/downloads-139965.html 页面,点击页面中的“Download JNDI 1.2&More”边上的download进入下载页面。将下载到的fscontext-1_2-beta3.zip压缩包解压后,在解压文件中的lib子目录下存在两个jar文件(fscontext.jar,providerutil.jar),将这两个文件加载到CLASSPATH环境变量之中

 

3.编写一个java类进行测试,NameServiceTest.java代码如下所示:

 

   

Java代码 复制代码 收藏代码
  1. package net.hnspi.djj.nameservice ;   
  2.   
  3. import java.util.* ;    
  4. import javax.naming.* ;    
  5. public class NameServiceTest{    
  6.     public static void main(String args[]) throws NamingException {    
  7.   
  8.     String filename01 = "hnspi.txt" ;    
  9.   
  10.     String dirname = "hello" ;    
  11.   
  12.     // 创建一个Hashtable对象,用于为Context设置初始化参数   
  13.   
  14.     Hashtable<String,String> htable = new Hashtable<String,String>() ;   
  15.   
  16.     // 为Hashtable添加内容,其中key对应的value为初始化Context的工厂类  
  17.   
  18.     htable.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory") ;   
  19.        
  20.     // 为Hashtable添加内容,其中key对应的value为Context服务提供者的url   
  21.   
  22.     htable.put(Context.PROVIDER_URL,"file:/G:/testdemo") ;    
  23.        
  24.     // 实例化Context对象,传入一个Hashtable的实例   
  25.   
  26.     Context context = new InitialContext(htable) ;   
  27.        
  28.     // 根据jndi名查找与之绑定的对象    
  29.   
  30.     Object file01 = context.lookup(filename01) ;    
  31.   
  32.     System.out.println(filename01 + "名称被绑定到--> " + file01) ;    
  33.   
  34.     System.out.println("file01的类型是:" + file01.getClass()) ;   
  35.        
  36.     // 根据jndi名查找与之绑定的对象    
  37.   
  38.     Object dir = context.lookup(dirname) ;   
  39.   
  40.     System.out.println(dirname + "名称被绑定到--> " + dir) ;    
  41.   
  42.     System.out.println("dir的类型是:" + dir.getClass()) ;    
  43.     
  44.    }   
  45. }   

 

 

  编译运行后,输出结果如下:

 

     hnspi.txt名称被绑定到--> G:\testdemo\hnspi.txt
     file01的类型是:class com.sun.jndi.fscontext.FSContext$FSFile
     hello名称被绑定到-->
com.sun.jndi.fscontext.RefFSContext@3a6727
     dir的类型是:class com.sun.jndi.fscontext.RefFSContext

 

  此时,表明可以通过Java程序通过JNDI名称访问指定文件系统中被绑定的对象。

原创粉丝点击