JNDI学习

一、JNDI 基础

      1、JNDI指通过提供统一的API访问不同的命名和目录服务。

二、JNDI Context
    1、JNDI tree
         Initial context 是JNDI tree的头节点,所有的查询都从该节点开始。在JNDI tree中conext是节点,object是叶子。
      JNDI Context 提供在代码与需要使用的JNDI服务提供者之间的编程连接。一个JNDI上下文类似于一个JDBC连接。它是一个通道,通过它代码的命令流向命名和目录服务。并且通过它接收来自于服务提供者的数据。
      context 是一系列命名到对象绑定的集合,当获得一个上下文时,代码传送属性到JNDI.
    2、JNDI Context属性
       INITIAL_CONTEXT_FACTORY
          _用于创建JNDI上下文类的全局限定名(指定命名服务类型)如:weblogic.jndi.WLInitialContextFactory
       PROVIDER_URL
         用于连接命名和目录提供者的协议、主机和端口。如:t3://localhost:7001,仅当连接远程JVM上的名字服务时,
  才需要配置,在本地可以用 new InitialContext()连接本地名字服务。
       SECURITY_PRINCIPAL
         _在weblogic与上下文相关的安全领域的用户身份,默认为guest。
       SECURITY_CREDENTIALS
         _通过SECURITY_PRINCIPAL属性定义的用户的口令,默认是guest用户的口令
       SECURITY_PROTOCOL
         _指定使用那个安全协议,如SSL
       SECURITY_AUTHENTICATION
         _指定使用的验证级别
       REPLICATE_BINDINGS
         _指定是否将绑定对象复制到在集群中的所有JNDI树。
    3、InitialContext
       对于本地客户端:
       Context ctx = new InitialContext();
       对于任意客户端:
       Context ctx =  null;
       Hashtable ht = new Hashtable();
       ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
       ht.put(Context.PRIVIDER_URL,"t3://localhost:7001");
       try{
 ctx = new InitialContext(ht);
       }catch(NamingException e){
       }finally{
 try{ctx.close();
 }catch(Exception e){}
       }
三、绑定与解析
    1、可以把一个对象绑定到JNDI上,但java规定,这些对象必须实现Referencable接口,实际上
    绑定的是这些对象的Reference对象。
       bind(); rebind();覆盖了之前的绑定  unbind();删除绑定。
     绑定对象:
      Context ctx =  null;
      Properties pps = new Properties();
      pps.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
      pps.put(Context.PRIVIDER_URL,"t3://localhost:7001");
      try{
 ctx = new InitialContext(pps);
 ShoppingCart myObj = new ShoppingCart();
 ctx.rebind("MyShoppingCart",myObj);
 ctx.unbind("MyShoppingCart");
 }catch(NamingException e){
 }finally{
 try{ctx.close();
 }catch(Exception e){}
 }
    lookup();可以返回被绑定的对象,需要强制类型转换
      Context ctx =  null;
      Properties pps = new Properties();
      pps.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
      pps.put(Context.PRIVIDER_URL,"t3://localhost:7001");
      try{
 ctx = new InitialContext(pps);
 DataSource ds = (DataSource)ctx.lookup("MyShoppingCart");
 }catch(NamingException e){
 }finally{
 try{ctx.close();
 }catch(Exception e){}
 }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值