关于JNDI

来源:互联网 发布:淘宝网退款金额修改 编辑:程序博客网 时间:2024/05/26 15:58

  Java Naming and DirectoryInterface是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBACommon ObjectService(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。服务提供者列表:http://java.sun.com/products/jndi/serviceproviders.html
  
  JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。
  
  JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层上下文以及使用相同命名语法的子上下文。
  
  JNDI的运转
  让我们来看看JNDI是如何使用上下文的。首先,建立一个初始上下文。这仅仅是一个可以操纵的起始点。然后,浏览初始上下文中存在的对象、添加、删除对象、在父上下文和子上下文之间来回切换等等。清单A中的例子示范了如何在文件系统的根目录下建立一个初始上下文并且列出这个上下文的所有对象(文件和目录)。

JNDI Toturial上为了方面用File System做为naming service.以下的一个例子是演示一个从File System Lookup.


package study.jndi;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class Lookup{
public static void main(String[] args){
Hashtable env new Hashtable();
String name "C:/test.txt";

try{

 env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.RefFSContextFactory"); //use the file system as service provider
 Context ctx new InitialContext(env);
 Object obj ctx.lookup(name);
 System.out.println("the name name is bound to object:" obj);
}

catch(Exception ex){
  ex.printStackTrace();
}
}
}
为了运行的程序你要到http://java.sun.com/products/jndi/downloads/index.html下载JNDI的相关包,然后把两个jar:fscontext.jar和providerutil.jar加入到你的CLASSPATH中.这样就可以运行了.你可以做进一步的操纵如bind,unbind等等.
Context ctx new InitialContext();是以文件系统为初始上下文,这样一来你可以把String name "C:/aaa.txt";换成你系统中的任意目录和文件的路径名.
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.RefFSContextFactory");是指明Service provider是文件系统.

JNDI 在线手册http://java.sun.com/products/jndi/tutorial/

 

原创粉丝点击