java jndi(命名和系统服务接口) 介绍

java JNDI 接口介绍

参考: https://yangzb.iteye.com/blog/242560
参考:http://www.cnblogs.com/xx0405/p/5332198.html
毕竟是古老的技术了,现在搜索百度只能看到一堆文字解释看的迷迷糊糊的
找到一篇有实例介绍的,接着解析看看

  • 介绍:
    Java目前本身提供了接口,没有提供对应的实现,因此要想测试这个,最好在j2ee容器下实现,这些容器一般都自带了jndi 的实现. jndi 主要是通过lookup(“name”)来获得对应命名的对象,这里也主要展示bind 和 lookup 的一个简单测试

    正如原文作者所说,大多数的实现,都类似一个hash表,根据hash进行存储,key-value结构

  • 注意:
    如果使用bind方法,重复绑定会抛异常,

     javax.naming.NameAlreadyBoundException: Name [test] is already bound in this Context
     org.apache.naming.NamingContext.bind(NamingContext.java:913)
     org.apache.naming.NamingContext.bind(NamingContext.java:192)
     org.apache.naming.NamingContext.bind(NamingContext.java:209)
     org.apache.naming.SelectorContext.bind(SelectorContext.java:201)
     javax.naming.InitialContext.bind(InitialContext.java:425)
     com.controller.TestJNDIController.bind(TestJNDIController.java:24)
    
  • 代码如下:

     package com.controller;
    
     import org.springframework.stereotype.Controller;
     import org.springframework.ui.Model;
     import org.springframework.web.bind.annotation.RequestMapping;
     import org.springframework.web.bind.annotation.RequestParam;
     
     import javax.naming.Context;
     import javax.naming.InitialContext;
     import javax.naming.NamingException;
     
     /**
      * 测试java 的 jndi 服务
      * 使用的是 tomcat 的实现版本,因为使用的是tomcat 作为容器
      */
     @Controller
     @RequestMapping("jndi")
     public class TestJNDIController {
     
         /**
          *  向目录接口存对象
          */
         @RequestMapping("bind")
         public String bind(@RequestParam String type) throws NamingException {
             Context context = new InitialContext();
             String name = "type";
     //        context.bind(name,type); //bind 方法如果重复绑定会抛异常
             context.rebind(name,type);
             return  "../index";
         }
     
         /**
          *  从目录服务接口 查找值,更加name 属性
          */
         @RequestMapping("lookup")
         public String lookup(Model model) throws NamingException {
             Context context = new InitialContext();
             String test = context.lookup("type").toString();
             model.addAttribute("type",test);
             return "../index";
         }
     
     
     
     
     }
    
  • 至于这个jsp 就是一个很简单的视图, 直接放在 WEBROOT 目录下,直接用el表达式获得model的属性值,由于 makedown编辑器下无法展示html元素,
    " 测试值为 ${type}"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值