使用该服务提供者需要下载两个Jar包:fscontext.jar、providerutil.jar。
代码如下:
package com.zzj.jndi.provider;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
public class FSServiceProvider {
static final String CONTEXT_FACTORY = "com.sun.jndi.fscontext.FSContextFactory";
final static String PROVIDER_URL = "file:/D:";
public static void main(String[] args) throws Exception {
Hashtable<String, Object> env = new Hashtable<>();
env.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FACTORY);
env.put(Context.PROVIDER_URL, PROVIDER_URL);
Context ctx = new InitialContext(env);
NamingEnumeration<NameClassPair> list = ctx.list("/apache-tomcat-7.0.72");
while (list.hasMoreElements()) {
NameClassPair nameClassPair = (NameClassPair) list.nextElement();
System.out.println(nameClassPair);
}
System.out.println("-------------------------------------------");
System.out.println(ctx.lookup("/apache-tomcat-7.0.72/webapps").getClass());
System.out.println(ctx.lookup("/apache-tomcat-7.0.72/NOTICE").getClass());
}
}
输出结果:bin: javax.naming.Context
conf: javax.naming.Context
lib: javax.naming.Context
LICENSE: java.io.File
logs: javax.naming.Context
NOTICE: java.io.File
RELEASE-NOTES: java.io.File
RUNNING.txt: java.io.File
temp: javax.naming.Context
webapps: javax.naming.Context
work: javax.naming.Context
-------------------------------------------
class com.sun.jndi.fscontext.FSContext
class com.sun.jndi.fscontext.FSContext$FSFile
由该服务提供者创建的Context不支持bind(对象绑定)。