JNDI特性总结
1.JNDI只是一个框架,和JDBC是类似的,没有实际内容,具体干活的都是各种实现JNDI SPI的服务提供者,这点和JDBC的各种数据库驱动是类似的。
2.Java自带了一些服务提供者,大都放在com.sun.jndi.xxx包下面。
3.JNDI是一个桥梁,用来连接Java应用程序和其他一些应用之间协同工作,提供统一的调用和管理接口。这里的“其他一些应用”还是有一定特性要求的,也就是Naming或者Directory,即JNDI中的N和D。这些应用使用的技术有一些本来就是Java相关的,比如,RMI,JDBC,而大部分都是Java无关的技术,比如DNS,LDAP,CORBA,还有文件系统,这些系统都有一个共同特性,要么是Naming的,要么是Directory的。当然,还可以不断扩展,只要能被抽象成Naming或者Directory的都行。
4.JNDI自身并不区分客户端和服务器端,也不具备远程能力,但是被其协同的一些其他应用一般都具备远程能力,JNDI在其他客户端和服务器端都能够进行一些工作,客户端上主要是进行各种访问,查询,搜索,而服务器端主要进行的是帮助管理配置,也就是各种bind。比如在RMI服务器端上可以不直接使用Registry进行bind,而使用JNDI统一管理,当然JNDI底层应该还是调用的Registry的bind,但好处JNDI提供的是统一的配置接口,你把RMI换成其他的也应该不陌生。
5.继续补充一下第4点,“JNDI服务器端”这种说法是错误的,就像你说JDBC服务器端一样是错误的,这种说法本身是会误导人们去理解JNDI真正是个什么东西。