一、试验环境:
Windows XP
Eclipse
JDK1.6.0_23-rc2
二、所需软件
1、fscontext-1_2-beta3.zip:fscontext.jar,providerutil.jar
2、jdk版本低于Java 2 SDK, v1.3的,需要JNDI software
下载地址:https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=7110-jndi-1.2.1-oth-JPR@CDS-CDS_Developer
3、jdk1.3以上包含 了jndi公共接口
三、试验内容
创建一个JDNI文件系统的Context;并在此Context种试验JNDI的各种方法。
四、试验步骤
(一)、搭建JNDI应用环境
1、创建一个工程,引入fscontext.jar,providerutil.jar
2、jdk版本低于Java 2 SDK, v1.3的,需映入JNDI 相关的jar文件
(二)、创建一个Java文件,编码:
Java代码
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
/**
* @author Administrator
*
*/
public class JndiTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
// manually create the ROOT DIR
env.put(Context.PROVIDER_URL, "file:/D://");
try {
Context ctx = new InitialContext(env);
ctx.createSubcontext("sylilzy");
NamingEnumeration list = ctx.list("/");
while (list.hasMore()) {
NameClassPair nc = (NameClassPair) list.next();
System.out.println(nc);
}
} catch (NamingException e) {
e.printStackTrace();
}
}
}
(三)、Run As-> Java Application
结果如下:
apache-tomcat-6.0.30: javax.naming.Context
jndi.jar: java.io.File
JndiTest1.class: java.io.File
JndiTest1.java: java.io.File
My Documents: javax.naming.Context
PPDownload: javax.naming.Context
RECYCLER: javax.naming.Context
Resolve.class: java.io.File
Resolve.java: java.io.File
sylilzy: javax.naming.Context
System Volume Information: javax.naming.Context
迅雷下载: javax.naming.Context
五、说明
1、在JNDI应用之前需要做的两个准备工作:JNDI software(jdk版本低于Java 2 SDK, v1.3时)、JNDI Server Provider software
2、步骤1中引入的两个jar包将作为JNDI Server Provider,类似的在MQ应用中,执行JMSAdmin相关命令也是创建一个JNDI Server Provider,详见《使用【WebSphere MQ JMS administration tool】工具创建JNDI命名空间》
http://blog.csdn.net/huyangleng123。
3、参考文档:jndi-1_4_2-tutorial
(
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=7110-jndi-1.2.1-oth-JPR@CDS-CDS_Developer)
六、About JNDI(此为个人理解,不对之处还望指正)
JNDI —— java naming and directory interface,是一组API.使用这组API可以创建和管理命名空间和相关的名字资源。
Naming Space —— 所谓的命名空间物理上可以理解为:一个映射了名字和对应对象(资源)内容的定义文件,此文件以.bindings为名;需要使用context对象对命名空间的各个命名进行操作。
Context —— 即所谓的上下文环境,由JNDI Server Provider创建和维护。
JNDI Server Provider —— JNDI服务提供方。也是一组API,他负责来对应的Context。 例如此试验用到的fscontext, 是一个文件系统JNDI Server Provider,它提供的com.sun.jndi.fscontext.RefFSContextFactory可用于创建JNDI的Context。