JNDI

1. 基本概念 (参考 )

 

    jndi 简单的说就是 把一种功能服务,用另一种方式表现出来,这种方式就是jndi。
    举个例子:
    我想要获取磁盘上的 一个文件,假如说是“C:/aaa.txt”
    正常的情况下我就要:File file =new File("C:/aaa.txt");
    这样我就得到了文件对象,然后对干对象进行操作。
    然而还可以使用 jndi来实现这种功能:

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);
//(以上3句可以这样写,其实这个部分就是启动jndi服务)
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext();

    接下来

Object obj = ctx.lookup(“C:/aaa.txt”);
File file = (File)obj;

     这样也获取了这个文件对像。


    以下做一下简单总结:
    - jndi是一组接口
    - 我们自己可以实现这个接口,实现自己的一套jndi

    - sun本身提供了很多的已经实现的jndi,可以看http://java.sun.com/products/jndi/downloads/index.html
        点击 download进入:
        这里提供了一些jndi实现,其中就包括 上面我们使用的com.sun.jndi.fscontext.RefFSContextFactory,叫做File System Service Provider, 1.2 Beta 3,还包括dns、rmi等的一些jndi,还有一个例子JNDI Demo Browser (source and binaries) 教我们自己 怎么样实现一个简单的jndi。每个下载里面的都有自己的例子。
    - 在tomcat环境下,tomcat实现了一个自己的jndi,可以参见toncat的org.apache.naming.java.javaURLContextFactory,所以在tomcat中就不用前面2句话来启动 jndi了,tomcat容器在启动时候就做了。

    另附:获取tomcat下的jndi 名称的方法

NamingEnumeration n=ctx.list("");
while(n.hasMoreElements()){
    System.out.println(n.nextElement());
}
然后逐层往下找:
会有
UserTransaction: org.apache.naming.TransactionRef
env: org.apache.naming.NamingContext
Resources: org.apache.naming.resources.ProxyDirContext

 

    JNDI可访问的现有的目录及服务有:
    DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。

 

2. JNDI访问RMI

 

3. JNDI访问LDAP   Go>>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值