一、試驗(yàn)環(huán)境:
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公共接口
三、試驗(yàn)內(nèi)容
創(chuàng)建一個(gè)JDNI文件系統(tǒng)的Context;并在此Context種試驗(yàn)JNDI的各種方法。
四、試驗(yàn)步驟
(一)、搭建JNDI應(yīng)用環(huán)境
1、創(chuàng)建一個(gè)工程,引入fscontext.jar,providerutil.jar
2、jdk版本低于Java 2 SDK, v1.3的,需映入JNDI 相關(guān)的jar文件
(二)、創(chuàng)建一個(gè)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
結(jié)果如下:
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應(yīng)用之前需要做的兩個(gè)準(zhǔn)備工作:JNDI software(jdk版本低于Java 2 SDK, v1.3時(shí))、JNDI Server Provider software
2、步驟1中引入的兩個(gè)jar包將作為JNDI Server Provider,類似的在MQ應(yīng)用中,執(zhí)行JMSAdmin相關(guān)命令也是創(chuàng)建一個(gè)JNDI Server Provider,詳見《使用【W(wǎng)ebSphere MQ JMS administration tool】工具創(chuàng)建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(此為個(gè)人理解,不對之處還望指正)
JNDI —— java naming and directory interface,是一組API.使用這組API可以創(chuàng)建和管理命名空間和相關(guān)的名字資源。
Naming Space —— 所謂的命名空間物理上可以理解為:一個(gè)映射了名字和對應(yīng)對象(資源)內(nèi)容的定義文件,此文件以.bindings為名;需要使用context對象對命名空間的各個(gè)命名進(jìn)行操作。
Context —— 即所謂的上下文環(huán)境,由JNDI Server Provider創(chuàng)建和維護(hù)。
JNDI Server Provider —— JNDI服務(wù)提供方。也是一組API,他負(fù)責(zé)來對應(yīng)的Context。 例如此試驗(yàn)用到的fscontext, 是一個(gè)文件系統(tǒng)JNDI Server Provider,它提供的com.sun.jndi.fscontext.RefFSContextFactory可用于創(chuàng)建JNDI的Context。