最新
推荐
2014年高等教育信息化十大“关... 01-04 教育部成立教育信息化专家组 12-24
CERNET第二十一届学术年会 11-24 李志民:互联网促进人类文明迈... 11-15
|
The Application of Design Pattern in Accessing Process of JNDI Abstract: The Java Naming and Directory Interface (JNDI) offers application programming interface (API) to access the naming and directory service. It can improve exploitation efficiency. But developers still need to write different codes for different operations. Based on OO design principles, this paper taking LDAP directory service as an example, uses design patterns to contrive an access model of directory server that simplifies the access process. Bridge pattern avoids client to set the accessing parameters directly and adapts well to the new connecting methods; Command pattern encapsulates methods into command objects, then decouples the client class from the Request class. 1 目录服务概述 近几年,随着LDAP(Light Directory Access Protocol,轻量级目录访问协议)技术的兴起和其应用领域的不断扩展,许多新型应用已经将目录服务技术作为实现信息存储、管理和查询的首选方案,特别是在网络资源查找、用户访问控制与认证信息查询、新型网络服务、网络安全、商务网通用数据库服务和安全服务等方面,都需要应用目录服务技术实现一个通用、完善、应用简单的和可扩展的系统。
图 1 目录服务组织结构
2 JNDI设计思想及原理 JNDI(Java Naming and Directory Interface:Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。JNDI使Java平台下的应用程序能够访问多个命名和目录服务器。这一层API将应用与实际数据源分离,因此不管应用访问的是 LDAP、RMI、CORBA、NDS,还是其他目录服务,都可以通过统一的API进行访问。它的体系结构如图2所示[2]。
图 2 JNDI体系结构 以LDAP服务器为例,使用JNDI访问LDAP服务器的开发过程包含下面三个步骤: (3) 发送服务请求。这一步将通过引用ctx对LDAP服务器进行各种操作,包括搜索、修改、添加和删除。例如,搜索图1中Entry:“uid=simon,ou=People,dc=fooware,dc=com”的objectclass属性,其代码如下: //设置搜索起点 3 设计模式下JNDI的访问模型 面向对象设计原则中的“开放—封闭原则(Open—Closed Principle)”指出,“软件实体对于扩展应该是开放的,但是对于更改是封闭的”[3]。这个原则的目标使用户在不用修改已有类代码的基础上,扩展类行为。但是,从JNDI访问目录服务的编码过程来看,这个过程并没有完全遵循这一设计原则。例如,如果需要以不同方式登录目录服务器,就需要修改客户端源代码,在(1)步骤中指定新的环境变量;其次,获取同LDAP服务的连接后,客户端可以向服务器发送不同的请求操作,但是,由于JNDI提供的标准接口与各种请求的操作细节紧密相关,使得每一步的请求细节与客户端代码相耦合,不利于代码修改。因此,作者在分析目录服务器客户程序的过程中,运用设计模式对JNDI访问目录服务器的过程做进一步抽象,以提高系统的灵活性和扩展性。 3.1 抽象的客户端访问目录服务器模型 从更加抽象的层次来理解,对目录服务器的访问可以简化为以下三个过程,如图3所示。
图 3 目录服务器访问模型 (1) 建立连接。这个步骤是以指定方式同目录服务器建立连接。连接方式是通过设置环境变量来指定,其中包括匿名连接、基本认证连接、SSL匿名连接和SSL认证连接等。 |
版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号
关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com