CN102306147A - 一种java语言对ldap的访问操作的方法及系统 - Google Patents

一种java语言对ldap的访问操作的方法及系统 Download PDF

Info

Publication number
CN102306147A
CN102306147A CN201110066006A CN201110066006A CN102306147A CN 102306147 A CN102306147 A CN 102306147A CN 201110066006 A CN201110066006 A CN 201110066006A CN 201110066006 A CN201110066006 A CN 201110066006A CN 102306147 A CN102306147 A CN 102306147A
Authority
CN
China
Prior art keywords
ldap
java
configuration file
client
jndi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201110066006A
Other languages
English (en)
Inventor
贾艳斌
樊学峰
魏鼎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING DIGITAL CHINA SI-TECH INFORMATION TECHNOLOGY Co Ltd
Beijing Si Tech Information Technology Co Ltd
Original Assignee
BEIJING DIGITAL CHINA SI-TECH INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING DIGITAL CHINA SI-TECH INFORMATION TECHNOLOGY Co Ltd filed Critical BEIJING DIGITAL CHINA SI-TECH INFORMATION TECHNOLOGY Co Ltd
Priority to CN201110066006A priority Critical patent/CN102306147A/zh
Publication of CN102306147A publication Critical patent/CN102306147A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明涉及一种JAVA语言对LDAP的访问操作的方法,包括:步骤1,封装JNDI,设置LdapCons.properties属性的配置文件;步骤2,导入工具类,将jar文件和依赖jar文件引入JAVA工程中;步骤3,根据配置文件配置参数,包括LDAP连接参数或LDAP双机配置参数,并将所述配置文件放入JAVA工程类路径;步骤4,通过LDAP的类继承BaseLdapDao自动加载所述配置文件,初始化LDAP的访问环境及LDAP连接池;步骤5,从连接池获取连接,从而获取与此连接对应的LDAP的类继承配置文件中的连接对象,对LDAP进行访问和操作;步骤6,使用已封装的JNDI提供的API,对LDAP进行相应的操作;步骤7,对LDAP进行访问和操作结束,归还连接对象。本发明的有益效果是:提高JAVA程序访问和操作LDAP的效率、提高JAVA程序访问和操作LDAP服务的可靠性。

Description

一种JAVA语言对LDAP的访问操作的方法及系统
技术领域
本发明涉及LDAP(轻量目录访问协议)访问和操作技术,尤其是一种JAVA语言对LDAP的访问操作的方法及系统。
背景技术
目录服务本质上是一种基于客户/服务器模型的信息查询服务,人们可以使用该服务按名称查找对象或者像使用黄页一样,可使用它们查找服务。由于网络上,特别是互联网中有各型各类的主机和资源, 分别杂散在网络中, 为了得到相关的服务,需要利用目录服务来访问这些主机和资源。它依赖于目录数据库,与关系数据库相比,目录数据库更擅长查询。目录数据库中的数据读取和查询效率非常高,比关系型数据库能够快一个数量级。但是它的数据写入效率较低,适用于数据不需要经常改动,但需要频繁读出的情况,最典型的就是电子邮件系统的用户信息。
LDAP目录是目录服务的一种,LDAP(Light Weight Directory Access Protocol,轻量目录访问协议)属于是一种用于访问目录的标准,用来发布目录信息到许多不同资源的协议,是针对以X.500(X.500是一个将局部名录服务连接起来,构成全球分布式的名录服务系统的协议)目录为主的目录服务的前端访问协议,是X.500目录的访问网关。由于X.500原来不是为TCP/IP网络设计的,而目录服务的最大使用者恰恰是TCP/IP客户,因此,LDAP就被设计成使用TCP/IP访问OSI(OSI是Open System Interconnect的缩写,意为开放式系统互联)目录服务的服务协议,而随着互联网成为网络的主流,LDAP也成为一个具备目录的大部分服务的协议。由于LDAP所具有的查询效率高、树状的信息管理模式、分布式的部署框架以及灵活而细腻的访问控制,使LDAP广泛地应用于基础性、关键性信息的管理,如用户信息、网络资源信息等。
现有技术中,JAVA语言访问和操作LDAP的方法和系统中包括Sun公司的JNDI(Java Naming and Directory Interface),是Java中用于访问LDAP的API(application programming interface,应用程序接口),是为了Java程序访问命名服务和目录服务而提供的统一API。开发人员使用JNDI完成与LDAP服务器之间的通信,即用JNDI来连接LDAP并完成访问和操作,而不需要和具体的目录服务产品特性打交道。由于JNDI可以实现不依赖具体厂商的LDAP函数库,只需使用其API就能同时连接到多个命名或目录服务上从而访问不同种类的服务。因此JNDI中的API的实现就会较为复杂,实际上JNDI中的API就是依靠多个类来实现的,如果要实现JNDI对LDAP访问和操作,就需要深入JNDI内部对特定的参数进行修改,这在拥有庞大代码量的业务项目中会显得极其不方便,对LDAP的使用效率很低。
发明内容
本发明所要解决的技术问题是提供一种JAVA语言对LDAP的访问操作的方法及系统,目的在于简化现有技术中对LDAP访问和操作,提高对LDAP的访问和操作的效率。
本发明解决上述技术问题的技术方案如下:
一种JAVA语言对LDAP的访问操作的系统,它包括LDAP客户端、工具类和LDAP服务器,
客户端,封装JNDI,设置配置文件及参数,客户端通过连接池连接LDAP服务器;
LDAP服务器,提供轻量目录服务;
工具类,包括封装JNDI的LdapOperUtils.java操作工具、封装LDAP Filter的写法的LDAP Filter格式类SQL字符串转换工具和自动加载配置文件的类继承BaseLdapDao。
一种JAVA语言对LDAP的访问操作的方法,应用于需要通过LDAP协议使用具体目录服务的业务,包括:
步骤1,客户端封装JNDI,设置LdapCons.properties属性的配置文件;
步骤2,客户端导入工具类,将jar文件和依赖jar文件引入JAVA工程中;
步骤3,客户端根据配置文件配置参数,包括LDAP连接参数或LDAP双机配置参数,并将所述配置文件放入JAVA工程类路径;
步骤4,LDAP服务器通过LDAP的类继承BaseLdapDao自动加载所述配置文件,初始化LDAP的访问环境及LDAP连接池;
步骤5,客户端从连接池获取连接,从而获取与此连接对应的LDAP的类继承配置文件中的连接对象,对LDAP进行访问和操作;
步骤6,客户端使用已封装的JNDI提供的API,对LDAP进行相应的操作;
步骤7,对LDAP进行访问和操作结束,归还连接对象。
进一步的,所述步骤1为通过LdapOperUtils.java操作工具,封装JNDI实现LDAP访问通用工具的连接、关闭以及操作。
进一步的,所述步骤2包括以下子步骤:
步骤2.1:将jar文件和依赖jar文件复制到JAVA工程的Lib目录中;
步骤2.2:将jar文件和依赖jar文件设置到JAVA工程类路径classpath中。
进一步的,所述步骤5为调用“this.getContext()”,从BaseLdapDao中获取连接对象。
进一步的,所述步骤7为调用“this.closeContext()”,归还连接对象。
进一步的,所述LDAP双机配置参数包括主LDAP服务器参数和从LDAP服务器参数。
进一步的,所述步骤1还包括,通过LDAP Filter格式类SQL字符串转换工具,针对LDAP Filter的写法进行封装。
本发明的有益效果是:弥补了原来传统方式的不足,简化JAVA语言访问和操作LDAP配置、提高JAVA程序访问和操作LDAP的效率、提高JAVA程序访问和操作LDAP服务的可靠性、提供工具类封装,简化操作提高开发效率。
附图说明
图1为本发明流程图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,一种JAVA语言对LDAP的访问操作的系统,它包括LDAP客户端、工具类和LDAP服务器,
客户端,封装JNDI,设置配置文件及参数,客户端通过连接池连接LDAP服务器;
LDAP服务器,提供轻量目录服务;
工具类,包括封装JNDI的LdapOperUtils.java操作工具、封装LDAP Filter的写法的LDAP Filter格式类SQL字符串转换工具和自动加载配置文件的类继承BaseLdapDao。
一种JAVA语言对LDAP的访问操作的方法,应用于需要通过LDAP协议使用具体目录服务的业务,包括:
步骤1,客户端封装JNDI,设置LdapCons.properties属性的配置文件;
步骤2,客户端导入工具类,将jar文件和依赖jar文件引入JAVA工程中;
步骤3,客户端根据配置文件配置参数,包括LDAP连接参数或LDAP双机配置参数,并将所述配置文件放入JAVA工程类路径;
配置文件参数程序如下:
#Ldap Connection Config
#
ldap.baseDn=dc=sitech,dc=com
#################################################
#############Master Ldap Server Config###########
#################################################
ldap.master.url=ldap://172.16.9.23:8000/
ldap.master.adminUID=cn=Directory manager
ldap.master.adminPWD=NGFzaXRlY2g=
ldap.master.sslTrustStore=
ldap.master.sslTrustStorePassword=
ldap.master.securityProtocol=
ldap.master.ldapTimeOut = 3000
ldap.master.ldapIsPool = true
#ldap.master.poolUse:is using pool
ldap.master.poolUse = true
ldap.master.poolTimeOut = 3000
ldap.master.poolActiveNum = 100
#################################################
#############BackUp Ldap Server Config###########
#################################################
ldap.backup.url=ldap://localhost:8000/
ldap.backup.adminUID=cn=Directory manager
ldap.backup.adminPWD=NGFzaXRlY2g=
ldap.backup.sslTrustStore=
ldap.backup.sslTrustStorePassword=
ldap.backup.securityProtocol=
ldap.backup.ldapTimeOut = 3000
ldap.backup.ldapIsPool = true
ldap.backup.poolUse = true
ldap.backup.poolTimeOut = 3000
ldap.backup.poolActiveNum =400
步骤4,LDAP服务器通过LDAP的类继承BaseLdapDao自动加载所述配置文件,初始化LDAP的访问环境及LDAP连接池;
步骤5,客户端从连接池获取连接,从而获取与此连接对应的LDAP的类继承配置文件中的连接对象,对LDAP进行访问和操作;
步骤6,客户端使用已封装的JNDI提供的API(包括LDAP的各种操作:增加、删除、条件查询、修改、验证等API),对LDAP进行相应的操作;
步骤7,对LDAP进行访问和操作结束,归还连接对象。
所述步骤1为通过LdapOperUtils.java操作工具,封装JNDI实现LDAP访问通用工具的连接、关闭以及操作。
所述步骤2包括以下子步骤:
步骤2.1:将jar文件和依赖jar文件复制到JAVA工程的Lib目录中;
步骤2.2:将jar文件和依赖jar文件设置到JAVA工程类路径classpath中。
所述步骤5为调用“this.getContext()”,从BaseLdapDao中获取连接对象。
所述步骤7为调用“this.closeContext()”,归还连接对象。
所述LDAP双机配置参数包括主LDAP服务器参数和从LDAP服务器参数。
本发明通过配置文件进行LDAP服务的双机配置,在配置文件中可以配置主LDAP服务器参数和从LDAP服务器参数,程序默认使用主LDAP服务器配置参数进行访问和操作,当主LDAP服务器连接发生异常时,自动切换至从LDAP服务器,当主LDAP服务器恢复正常时自动完成切换。
所述步骤1还包括,通过LDAP Filter格式类SQL字符串转换工具,针对LDAP Filter的写法进行封装。写Filter时可以使用类SQL方式编写,例如“F1=1 AND F2=2 OR (f3=3 OR f4=4) AND NOT f5=5”,通过SQL字符串转换工具自动转换为LDAP Filter字符串,简化了LDAP Filter的使用,提高开发效率。
LDAP通用操作jar文件以及依赖jar文件列表(说明:依赖的jar文件需要使用列表所列出的版本以及之上版本):commons-collections-3.1.jar、commons-lang-2.4.jar、commons-pool-1.2.jar、log4j-1.2.13.jar、commons-logging-1.0.jar。
  访问LDAP程序如下:
//--------------------DAO和实现例子代码-------------------
/**
 * YourDaoLdapImpl
 *
 * <p>Title: YourDaoLdapImpl</p>
 * <p>Description: YourDaoLdapImpl</p>
 * <p>Copyright: Copyright (c) 2009</p>
 * <p>Company: SI-TECH </p>
 * author yourName
 * version 1.0
 * createtime time
 *
 */
public class YourDaoLdapImpl extends BaseLdapDao implements
      YourDaoInterface {
// yourMethod
public boolean yourMethod(object param) throws YourException {
      // ---------获取连接操作处理开始------------
ConnectionObject connectionObject = this.getContext();
DirContext context = (DirContext) connectionObject.getConnection();
      // ---------获取LDAP连接操作处理结束------------
      try {
         // do something here
        // 此处使用封装的JNDI提供的API进行业务逻辑编写
        // 例如:
        // LdapOperUtils.searchContextOne(context,
        //    dn, filter);
        // LdapOperUtils.deleteStationSubtreeScope
//      (context, dn, null);
        // 
        // 
      } catch (LDAPException e) {
      } finally {
        // finally close
        // 使用过后务必调用关闭方法
        this.closeContext(connectionObject);
      }
   }
// other methods... ...  
}
//--------------------------------------------
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种JAVA语言对LDAP的访问操作的系统,其特征在于,它包括LDAP客户端、工具类和LDAP服务器,
客户端,封装JNDI,设置配置文件及参数,客户端通过连接池连接LDAP服务器;
LDAP服务器,提供轻量目录服务;
工具类,包括封装JNDI的LdapOperUtils.java操作工具、封装LDAP Filter的写法的LDAP Filter格式类SQL字符串转换工具和自动加载配置文件的类继承BaseLdapDao。
2.一种JAVA语言对LDAP的访问操作的方法,其特征在于,包括:
步骤1,客户端封装JNDI,设置LdapCons.properties属性的配置文件;
步骤2,客户端导入工具类,将jar文件和依赖jar文件引入JAVA工程中;
步骤3,客户端根据配置文件配置参数,包括LDAP连接参数或LDAP双机配置参数,并将所述配置文件放入JAVA工程类路径;
步骤4,LDAP服务器通过LDAP的类继承BaseLdapDao自动加载所述配置文件,初始化LDAP的访问环境及LDAP连接池;
步骤5,客户端从连接池获取连接,从而获取与此连接对应的LDAP的类继承配置文件中的连接对象,对LDAP进行访问和操作;
步骤6,客户端使用已封装的JNDI提供的API,对LDAP进行相应的操作;
步骤7,对LDAP进行访问和操作结束,归还连接对象。
3.根据权利要求2所述的一种JAVA语言对LDAP的访问操作的方法,其特征在于,所述步骤1为通过LdapOperUtils.java操作工具,封装JNDI实现LDAP访问通用工具的连接、关闭以及操作。
4.根据权利要求2所述的一种JAVA语言对LDAP的访问操作的方法,其特征在于,所述步骤2包括以下子步骤:
步骤2.1:将jar文件和依赖jar文件复制到JAVA工程的Lib目录中;
步骤2.2:将jar文件和依赖jar文件设置到JAVA工程类路径classpath中。
5.根据权利要求2所述的一种JAVA语言对LDAP的访问操作的方法,其特征在于,所述步骤5为调用“this.getContext()”,从BaseLdapDao中获取连接对象。
6.根据权利要求2所述的一种JAVA语言对LDAP的访问操作的方法,其特征在于,所述步骤7为调用“this.closeContext()”,归还连接对象。
7.根据权利要求2所述的一种JAVA语言对LDAP的访问操作的方法,其特征在于,所述LDAP双机配置参数包括主LDAP服务器参数和从LDAP服务器参数。
CN201110066006A 2011-03-18 2011-03-18 一种java语言对ldap的访问操作的方法及系统 Pending CN102306147A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110066006A CN102306147A (zh) 2011-03-18 2011-03-18 一种java语言对ldap的访问操作的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110066006A CN102306147A (zh) 2011-03-18 2011-03-18 一种java语言对ldap的访问操作的方法及系统

Publications (1)

Publication Number Publication Date
CN102306147A true CN102306147A (zh) 2012-01-04

Family

ID=45380011

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110066006A Pending CN102306147A (zh) 2011-03-18 2011-03-18 一种java语言对ldap的访问操作的方法及系统

Country Status (1)

Country Link
CN (1) CN102306147A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463619A (zh) * 2014-11-10 2015-03-25 成都启航信息技术有限公司 基于ldap的互联网产品目录销售系统及控制方法
CN104503751A (zh) * 2014-12-16 2015-04-08 深圳中兴网信科技有限公司 基于soa的数据源切换方法和基于soa的数据源切换系统
CN107040424A (zh) * 2017-05-26 2017-08-11 郑州云海信息技术有限公司 一种自动化配置ldap服务器的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
任军: "基于LDAP 的目录服务综述", 《计算机应用研究》 *
王克宏: "《Java 技术教程( 中级篇)》", 30 November 2003 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104463619A (zh) * 2014-11-10 2015-03-25 成都启航信息技术有限公司 基于ldap的互联网产品目录销售系统及控制方法
CN104503751A (zh) * 2014-12-16 2015-04-08 深圳中兴网信科技有限公司 基于soa的数据源切换方法和基于soa的数据源切换系统
CN104503751B (zh) * 2014-12-16 2018-07-10 深圳中兴网信科技有限公司 基于soa的数据源切换方法和基于soa的数据源切换系统
CN107040424A (zh) * 2017-05-26 2017-08-11 郑州云海信息技术有限公司 一种自动化配置ldap服务器的方法

Similar Documents

Publication Publication Date Title
US8131739B2 (en) Systems and methods for interfacing application programs with an item-based storage platform
CN100550010C (zh) 用于将应用程序与基于项的存储平台接口的系统和方法
CN100530160C (zh) 分布式计算系统的架构和分布式应用程序的自动设计,部署及管理
US7483915B2 (en) Systems and method for representing relationships between units of information manageable by a hardware/software interface system
CN100570549C (zh) 用于基于项目的存储平台中的数据建模的系统和方法
KR101224670B1 (ko) 데이터 관리를 용이하게 해주는 시스템 및 방법
US7529811B2 (en) Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US7739316B2 (en) Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system
KR101120788B1 (ko) 최종 사용자 규칙 논리의 정의 및 실행을 위한 규칙프레임워크
US7080092B2 (en) Application view component for system integration
US5857197A (en) System and method for accessing data stores as objects
US7574343B2 (en) System and method for logical modeling of distributed computer systems
US20050049993A1 (en) Systems and methods for data modeling in an item-based storage platform
US20050050054A1 (en) Storage platform for organizing, searching, and sharing data
JPH09508742A (ja) 従来の非オブジェクト指向業務アプリケーションをアクセスするためのオブジェクト構造を生成するための方法論
US20070112834A1 (en) Database consolidation tool
US20070268822A1 (en) Conformance control module
US7099727B2 (en) Knowledge repository system for computing devices
JP2005506618A (ja) システム統合のためのアプリケーションビューコンポーネント
TWI337310B (en) Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US9373093B2 (en) Gateway service manager for business object applications
CN102306147A (zh) 一种java语言对ldap的访问操作的方法及系统
US8136087B2 (en) In-line processing of standardized text values
RU2412461C2 (ru) Системы и способы сопряжения прикладных программ с платформой хранения на основе статей
EP1656610A1 (en) Storage platform for organizing, searching, and sharing data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 100085 Haidian District, Zhongguancun, South Street, No. 6,, building information, floor, No. 16

Applicant after: SI-TECH Information Technology Ltd.

Address before: 100085, Beijing, Haidian District on the nine Street 9 digital science and Technology Plaza, two floor

Applicant before: Beijing Digital China SI-TECH Information Technology Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: BEIJING DIGITAL CHINA SI-TECH INFORMATION TECHNOLOGY LTD. TO: BEIJING SI-TECH INFORMATION TECHNOLOGY LTD.

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120104