JNDI入门1(转)

原文:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=417381

一:
  几个概念,Context,entry/object,filter.Attribute
  Context:上下文,我的理解是相当与文件系统的中的目录(JNDI的Naming Service是可以用操作系统的文件系统的,哈哈).
  entry/object:一个节点,相当与文件系统中的目录或文件.
  filter:查询/过滤条件是一个字符串表达式如:(&(objectClass=top)(cn=*))查询出objectClass属性为top,cn属性为所有情况的entry.
  Attribute:entry/object的属性可以理解成JAVA对象的属性,不同的是这个属性可以多次赋值.

二:
  Naming Service的简单例子,JNDI的全称是名字与目录服务,LDAP服务器都可以做Naming Service和Directory Service.JNDI Toturial上为了方面用File System做为naming service.以下的一个例子是演示一个从File System Lookup.

  1. package study.jndi;

  2. import java.util.Hashtable;
  3. import javax.naming.Context;
  4. import javax.naming.InitialContext;
  5. import javax.naming.NamingException;

  6. public class Lookup{
  7.         public static void main(String[] args){
  8.                 Hashtable env = new Hashtable();
  9.                 String name = "C:/aaa.txt";
  10.                 try{
  11.                         env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.fscontext.RefFSContextFactory"); //use the file system as service provider
  12.                         Context ctx = new InitialContext(env);
  13.                         Object obj = ctx.lookup(name);
  14.                         System.out.println("the name " + name + " is bound to object:" + obj);
  15.                 }catch(Exception ex){
  16.                         ex.printStackTrace();
  17.                 }
  18.                
  19.                
  20.         }
  21. }


为了运行的程序你要到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是文件系统.

...............

猜你喜欢

转载自it-like.iteye.com/blog/1487474