JNDI架构是Java 2 Enterprise Edition (J2EE) 基础知识的核心组成部分,它为Java应用程序提供了一种统一的接口来处理命名和目录服务。JNDI,全称Java Naming and Directory Interface,解决了传统客户端/服务器架构(如胖客户端)的局限性,如维护困难、更新成本高、与数据库绑定紧密等问题。
在JNDI中,有几种常见的命名和目录服务实现:
1. LDAP (Lightweight Directory Access Protocol): 一种轻量级的标准目录访问协议,用于存储和检索信息,如用户和组等。
2. NIS (Network Information Service): 早期的分布式名称服务,主要用于系统管理,现在已被更先进的解决方案所取代。
3. CORBA (Common Object Request Broker Architecture): 对象请求代理架构,支持跨平台的远程对象交互,包括IIOP (Internet Inter-ORB Protocol) 和 RMI (Remote Method Invocation) 的前身。
4. RMI: Java专有的远程方法邀请,最初设计用于Java对象间的通信,现可通过RMI-over-IIOP扩展到Java与其他语言的交互。
5. SPI (Service Provider Interfaces): Sun提供的接口定义,由服务提供商实现,如Naming Manager,供客户程序使用JNDI API。
6. JNDI API: 定义了Java应用程序如何通过接口lookup和引用对象,类似于CORBA中的CosNaming。这个API在EJB和Web应用中广泛使用,使得对象查找和引用更加便捷。
7. DNS (Domain Name System): 分布式命名系统,虽然不是JNDI的一部分,但与命名服务密切相关,负责将域名解析为IP地址。
在J2EE应用服务器环境中,通过N层计算模式(如三层分布式对象架构),Web技术特别是基于浏览器的客户端逐渐取代了传统的胖客户端。这带来了诸多优势,比如:
- 可以通过HTTP和HTML进行分布式计算,降低了对硬件的依赖,使得任何设备只要有网络连接就可以访问。
- 分布式计算的集中化趋势明显,业务逻辑在服务器端执行,减少了客户端的复杂性,使得开发和维护更为简单。
- N层计算模式提供了更好的灵活性和可伸缩性,每一层的功能独立,更改某一层不会影响其他层,有利于部署和维护。
- 连接和其他资源可以被池化和重用,提高了性能,并降低资源消耗。
JNDI架构作为J2EE的关键组件,简化了命名和目录服务的集成,促进了分布式计算的发展,使得Web应用能够更高效、灵活地处理客户端请求,降低了系统的复杂性和维护成本。