原文: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.
- 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:/aaa.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是文件系统.
...............