JNDI

                                 JNDI



1.JNDI是什么?

       JNDI是一种容器,保存对象。

     (1).Java Naming and Directory Interface ,Java命名和目录接口。
     (2).是一组在Java应用中访问命名和目录服务的API。
     (3).通过名称将资源与服务进行关联。

2.JNDI怎么使用?

   2.1--TomCatJNDI

          配置学会使用将对象写入到tomcat服务器中,可以将项目发布到Tomcat服务器中,然后在找到相关文档进行学习。


     

  

 

  2.2--WindowsJNDI

         <1>获取Window某个目录下所有的文件  context.list("");
         <2>读取某一个文件  context.lookup("fileName");

             具体实现代码如下:

package com.zking.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;

public class TestWindowsJNDI {
    public static void main(String[] args) {
        Hashtable<String,String> environment=new Hashtable<String, String>();
        //1.windows 中有一个工厂
        environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
        //2.执行目录(细节:加协议 file:///)
        environment.put(Context.PROVIDER_URL, "file:///C:\\Windows");
        //获取某个文件夹下所有的文件和文件夹
        try {
            Context context=new InitialContext(environment);
            
//            File file=(File) context.lookup("WindowsUpdate.log");
//            BufferedReader br=new BufferedReader(new FileReader(file));
//            String str=null;        
//            while((str=br.readLine())!=null){
//                System.out.println(str);
//            }
            NamingEnumeration<NameClassPair>  namingEnumeration=context.list("");
            int i=0;
            while(namingEnumeration.hasMore()){
                i++;
                NameClassPair nameClassPair=namingEnumeration.next();
                System.out.println(nameClassPair.getName()+":"+nameClassPair.getClassName());
            }
            System.out.println(i);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

      2.2--自定义JNDI

    package com.zking.test;

import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;

import com.zking.entity.Person;


public class TestDIY {
    public static void main(String[] args) {
        Hashtable<String,String> environment=new Hashtable<String, String>();
        environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
        try {
            Context context=new InitialContext(environment);
            //绑定值
            context.bind("a", "aa");
            context.bind("b", "bb");
            context.bind("person", new Person(1, "亮亮", 16));
            
            //移除
            context.unbind("b");
            
            //遍历
            NamingEnumeration<NameClassPair> namingEnumeration=context.list("");
            while(namingEnumeration.hasMore()){
                NameClassPair nameClassPair=namingEnumeration.next();
                Object o=context.lookup(nameClassPair.getName());
                System.out.println(nameClassPair.getName()+" "+o);
            }
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值