JNDI的概念

当开发者在应用服务器中配置了容器管理的数据源之后,就需要通过JNDI查找来获取容器管理的数据源,接下来再通过数据源获取数据库连接,然后操作数据库里的数据。JNDI的全称是Java Naming Directory Interface,即Java命名目录接口,它允许Java程序通过一个名称来访问真正的Java对象。
 
RMI指的是Remote Method Invoke(远程方法调用),RMI为Java分布式应用编程提供了基础,RMI底层依然是依赖千Socket网络通信来实现的,但RMI对基本的Socket通信进行了包装,它允许RMI客户端直接调用远程服务器端的方法,就像调用本地的方法一样。通过使用RM技术,开发老泪;至无须理会Socket通信的细节,无须理会网络通信的输入、输出细节,无须理会服务器端和客户端通信的多线程问题……这些底层的技术细节都交给RMI去搞定,开发者可以直接调用远程Java方法,就像调用本地Java方法一样,非常方便。实际上,RMI对Java EE开发非常重要. RMI是Java EE分布式应用的实现基础,因此掌握RMI对于更好地理解JavaEE编程具有非常重要的意义。
 
当然,RMI也离不开JNDI,当RM服务器希望把自己提供的远程方法暴露出来时,它就要为自己绑定一个JNDI名称,而RMI客户机则通过JNDI查找来获取远程RMI服务器,然后调用RMI服务器上的远程方法.
 
JNDI包含了一些标准API接口,Java程序则可以通过这些JNDI接口来访问命名目录服务。与普通命名目录服务不同的是,JNDI不依赖于任何独立的命名目录服务器,不管采用哪种命名目录服务器,应用程序都可通过统一的JNDI接口来调用。
 
提示:Java程序中大量地方都采用了这种类似的设计:Java为某种服务制定规范,而具体的实现则由不同的厂商自己提供实现(例如,数据库厂商提供JDBC驱动)。应用程序开发者无须理会该规范底层的实现,开发者只要面向这种规范的接口编程(例如:面向JDBC接口、JNDI接口等)即可。通过这种方式,可以消除底层服务器之间存在的差异,降低开发者的开发难度。
 
转自疯狂软件