您的位置:首页 > 其它

【规范】JNDI

2016-02-23 16:09 155 查看
定义
JNDI是 Java 命名与目录接口(Java Naming and DirectoryInterface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。
 
先回忆没有JNDI的时候,我们作为程序员的做法。
程序员开发时,知道要开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL连接到数据库。还记得原来在学生信息管理系统、机房收费系统的时候咱们附加数据库之后,在配置文件里头加了一串的那个database=local,uid=sa,pwd=***类似这种代码。相信大家也都还印象比较深刻吧。
 
这样做存在的问题:
1、数据库服务器名称MyDBServer、用户名和口令都可能需要改变,由此引发JDBC URL需要修改;
 
2、数据库可能改用别的产品,如改用DB2或者Oracle,引发JDBC驱动程序包和类名需要修改;
 
3、随着实际使用终端的增加,原配置的连接池参数可能需要调整;
 
解决办法:
程序员应该不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBCURL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令—— 甚至没有数据库池或连接管理。而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。于是就有了JNDI规范。
 
有了JNDI之后的做法
在J2EE的容器中配置JNDI的参数,定义数据源,设置名称,然后通过数据源名称访问后台数据库。
 
再次回到定义

JNDI:
Java Naming and DirectoryInterface提供命名服务和目录服务的API。那什么是命名服务?什么事目录服务?
命名服务:说的通俗点就是现实生活和计算机的一个映射。比如,百度的域名是www.baidu.com,但是对于计算机来说这个域名就对应着http://202.108.22.5/,这两个都是访问的相同的界面。那么这两者之间存在映射关系。
目录服务:从计算机角度理解为在互联网上有着各种各样的资源和主机,但是这些内容都是散落在互联网中,为了访问这些散落的资源并获得相应的服务,就需要用到目录服务。



小结

现在越来越理解编程的世界,无论多复杂的系统,多精妙的算法其实最终目的只有一个,那就是解耦。原来接触到的只不过是代码之间的解耦,而现在更多的是不同应用程序更甚至是硬件之间的解耦。
J2EE中更多的规范,请看后续文章。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: