码迷,mamicode.com
首页 > 其他好文 > 详细

J2EE 13 规范之解读JNDI

时间:2015-01-09 17:21:49      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:j2ee   jndi   hashtable   j2ee规范   

  对于我这样初次接触J2EE的菜鸟来说,J2EE的 13规范都显得那么神秘。

  今天先从JNDI说起,让我们一个一个的揭开13规范的神秘面纱。

 

   JNDI                                                           

  JNDI(Java Naming and Directory Interface)Java 命名与目录接口,JavaEE规范中重要的规范之一,是命名

服务的抽象机制。

 

  常用的JNDI操作:                                     

  bind(String sName,Object object),绑定:把名称同对象关联的过程。

  rebind(String sName,Object object),重新绑定:用来把对象同一个已经存在的名称重新绑定。一般使用

rebind()而不使用bind(),因为当有重名的时候rebind()不会出现异常,而bind()会报异常。

  unbind(String sName),释放:用来把对象从目录中释放出来。

  lookup(String sName),查找:返回目录总的一个对象。

  rename(String sOldName,String sNewName),重命名:用来修改对象名称绑定的名称。

  NamingEnumeration listBindings(String sName),清单:返回绑定在特定上下文中指定属性名对象的清单列

表,它返回名字、类和对象本身,它用于那些需要对对象进行实际操作的应用。具体使用如下:

  //得到初始目录环境的一个引用

  Context cntxt = new InitialContext();

 

  

       实例:                                                        

     Binding示例:

<span style="font-size:18px;">public static InitialContext getInitialContext() throws NamingException {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
         "weblogic.jndi.WLInitialContextFactory");
    env.put(Context.PROVIDER_URL,"t3://localhost:7001");
    InitialContext context = new InitialContext(env);
    return context;
}
//获得 initial context
InitialContext initialContext = getInitialContext();
//创建一个名为 Bank 的对象.
Bank myBank = new Bank();
//把Bind 对象绑定到JNDI树。
initialContext.rebind("theBank",myBank);
</span>


       Lookup示例:

public static InitialContext getInitialContext() throws NamingException {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
         "weblogic.jndi.WLInitialContextFactory");
    env.put(Context.PROVIDER_URL,"t3://localhost:7001");
    InitialContext context = new InitialContext(env);
    return context;
}
//获得 initial context
InitialContext initialContext = getInitialContext();
//找到绑定的Bank 对象.

Bank myBank = (Bank) initialContext.lookup("theBank");

    

     JNDI作用                                                           

  为开发人员提供查找和访问各种命名和目录服务的通用、统一的接口

 

 

  我的理解:                                                 

 

  大家都用过HashTable和Dictionary。他们的工作原理是:以Key和Value的形式存储对象,每一个添加项都是由

一个值及其相关连的键组成。在使用的时候可以根据Key找到相应的对象。

 

  JNDI也可以这样理解。他利用bind和rebind操作同样以键值(Key和Value)的形式将对象绑定到JNDI树上,然

后以lookup操作根据Key查找到相应的Value(对象),进行操作。

 

  每一个规范都是对编程某一方面的抽象,JNDI主要提供查找服务。它为编程人员提供了一个统一的操作方式,不

管是LDAP、RMI、DNS、目录服务、文件服务、对象、配置文件等等,我们只需知道它们的名字就可以获取和操作

他们。

 

  J2EE 规范要求所有 J2EE 容器都要提供 JNDI 规范的实现。JNDI 在 J2EE 中的角色就是“交换机” —— J2EE 组

件在运行时间接地查找其他组件、资源或服务的通用机制。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,

这样组件就可以发现所需要的资源,而不用了解这些间接性。从这方面来看JNDI起到的作用类似于外观模式,这么做

也能够解除外部资源与应用程序之间的耦合。

 

J2EE 13 规范之解读JNDI

标签:j2ee   jndi   hashtable   j2ee规范   

原文地址:http://blog.csdn.net/u010028869/article/details/42556339

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!