理解JNDI编程,通俗的解释一波

  • 1.jndi是个什么东西?

    JNDI全称(java naming ang drectory interface ,java 命名与目录服务接口),在这个世界,一切都是对象,如何管理这些对象至关重要,jndi便是名字,对象映射管理的一套标准。
  • 2.命名服务

    (1)常见的命名服务系统
    DNS域名系统,负责ip与域名的映射;
    操作系统中的文件系统,各个文件对象与文件名的映射;
    户籍管理系统,每个公民与身份证的映射;
    (2)上下文
    一个命名服务系统要存放一堆的映射关系需要一个对象进行管理,context便是这个对象。
    (3)命名系统提供了那些服务
    注册(绑定),查找,注销(解绑)。

    3.目录服务

    当需要管理的对象多而复杂时,根据不同对象的特征将对象进行分类,于是便有了目录服务。其相对于命名服务多了对象的属性,方便管理。

    4.JNDI编程基础

    (1).使用方式
    通过上面,我们知道命名目录服务系统一般搭建在远程服务器上,不同服务提供商所提供的内容不一样,但是为了方便客户端对服务内容的访问,这时就需要建立一个标准,提供统一的服务建立与访问的接口,让命名目录服务的创建与访问统一化
    (2)编程框架
    1.java jndi api :定义了jndi的接口和常见实现类。
    服务访问者:
    javax.naming    提供命名服务的简单访问
    javax.naming.drectory     访问目录服务的接口和类
    javax.naming.event      处理访问命名服务和目录服务的异常信息类
    javax.naming.ldap      访问ldap目录服务的接口和类
    javax.naming.spi       提供ldap协议目录服务的驱动的实现
    
    2.service provider interface(spi):定义了服务提供者接口以及驱动类。
    服务提供者:
    实现jndi服务的驱动,提供命名与目录服务
    
    (3)命名服务的连接
    1.本地连接
    context:提供命名服务上下文的接口
    initialcontext:命名服务的实现
    连接模板:
  try
  {
  Context ctx=new InitialContext();
  ctx.close();
}
catch(NamingException e)
{
}

ps:关闭连接对象并不会关闭命名服务本身。
2.远程连接
远程连接需要提供以下参数:命名服务工厂类,地址,账号,密码。
weblogic服务器连接模板:

try{
Properties properties =new Properties();
//设置命名服务工厂类
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");   
//账号
properties.put(Context.SECURITY_PRINCIPAL, "admin");   
//密码
properties.put(Context.SECURITY_CREDENTIALS, "123456");   
//命名服务协议,地址,端口
properties.put(Context.PROVIDER_URL, "t3://192.168.70.11:1199");  
Context ctx=new InitialContext(properties);
//业务处理
ctx.close();
}catch(NamingException  e)
{
//namingexceptionjkl/处理
}

你可能感兴趣的:(java)