`
aben328
  • 浏览: 1460623 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

JDBC-LDAP

    博客分类:
  • LDAP
阅读更多

Java对LDAP的操作方法(转)

(2009-05-08 21:30:16)
<script></script>标签:

it

LDAP。它以目录树结构存放数据信息,和数据库以表结构存放数据不同。网络上关于LDAP的介绍很多,不是本文的重点。作为程序员,最关心的就是如何写程序去访问和操作LDAP数据,这也是本文所要讨论的,但是局限于java程序。

一.JNDI(JAVA 命名及目录接口)
JNDI是JAVA为命名及目录服务访问制定的基础接口标准,用于访问包括DNS,NIS,LDAP,文件系统等任何以树目录形式存在目标对象,并且基本上可保持访问方式的一致(意味着代码共用)。对于不同的目录类型,JNDI通过使用不同的目录驱动,以保证访问方式的一致。以下连接可获得较详细的讲解和例程:
http://java.sun.com/products/jndi/tutorial/。经常使用的LDAP驱动有JDK自带的LDAP provider,还有IBM的PROVIDER,以及NOVEL的JNDI产品。
 
二.jldap
JLDAP是由Novell开发的,原是针对Novel的NDS目录设计的JAVA访问工具。NOVEL的NDS和网景(NETSCAPE)的目录是工具界最早的目录产品。JLDAP并非JNDI的服务供应者,而是同一抽象层次下的访问工具集。与JNDI-LDAP相比,JLDAP更接近于类关系数据库的访问方式。NDS是遵守LDAP协议的并进行了扩展的类MAD产品。而NOVEL也已把JLDAP捐献给了OPENLDAP开源项目,可以世界范围内自由使用。与JNDI相比,JLDAP无须继承DirContext才能实现添加,也无需预先生成添加的类,可以象普通数据访问那样,生成连接,然后使用 add方法添加。这样,添加的灵活性要强于JNDI。
 
三.JdbcLDAP驱动
网络上有2种形式的jdbc-Ldap驱动程序,提供以sql的语法访问ldap数据库。

1.OcterString的开源驱动
http://www.openldap.org/jdbcldap/提供下载。但是由于2005年11月被OERACLE并购,网络上难以找到相关的资料,唯一可以参考的资料是其所带的JDBC-LDAP Getting Started.pdf文档。最初的1.0版本在连接时会有错误抛出,却可以正常执行sql操作。通过自己编译source可以得到较高的版本(难以找到最新版本的jar包),此版本可以正常使用。值得注意的是,在文档中,关于删除操作的ps.excute(SQL)有问题,应该改成ps.excute (),不应该带参数,因为delete操作不会返回结果,否则会产生空指针异常(NullPointerException)。实际上,这个驱动引用了上面提到的jldap类库。在使用过程中,发现了本驱动的一些bug。
其一,查询结果集比实际数据多一条NULL的记录,所以在取数据时的循环判断要追加其它条件;
其二,查询记录后,会采用Base64的算法对数据进行压缩,但是对中文字符处理后会产生失真现象。需要更改 com.octetstring.jdbcLdap.jndi.UnpackResults.java源代码。文件中对查询结果进行了 Base64.encode()的处理。而Base64是由novell提供的ldap.jar包中的 com.novell.ldap.util.Base64.java类。去除Base64的处理并进行适当的更改,能够正常显示中文。根据novell的 ldap.jar包的API文档,Base64处理用于转换字符流为不可直接识别的字节码,并且转换后的数据量只有转换之前的33%,节省了空间,提高了效率,但是对CJK文本的转换会失真。
另外,由于使用了jdbcldap驱动,考虑把LDAP数据库的节点映射为一个表,把节点属性作为表项,采用 Hibernate框架进行数据操作,这种思想在做现存的Hibernate框架实现的系统转LDAP单点登录时,是一种理想方案。实际上,这样的映射可行,但是由于没有合适的Hibernate Dialect方言,转换出来的SQL操作无法正常执行。这种方案需要自行实现一个合适的Hibernate Dialect类。
 
2.Novell的jdbcldap驱动
http://developer.novell.com/ndk/ldapjdbc.htm,Novell提供的专用于它的 eDirectory产品的驱动,只提供了查询操作。

分享到:
评论

相关推荐

    jdbc-ldap-2.1.zip

    标题中的"jdbc-ldap-2.1.zip"是一个包含JDBC-LDAP桥接器的压缩包,版本为2.1。这个桥接器允许开发者通过熟悉的JDBC API,使用SQL语句对LDAP目录进行读写操作,简化了在Java环境中处理LDAP数据的复杂性。 描述中提到...

    jdbc-ldap-2.1.tar.gz

    `jdbc-ldap-2.1`是实现JDBC到LDAP桥接的一个开源库,它允许开发者使用SQL查询语言来与LDAP服务器进行交互,极大地简化了开发过程。这个压缩包`jdbc-ldap-2.1.tar.gz`包含了实现这一功能所需的全部类库和文档,使得...

    jdbc-ldap spring

    class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; ${ldap.datasource.driverClassName}" /&gt; ${ldap.datasource.url}" /&gt; ${ldap.datasource.username}" /&gt; ${ldap.datasource....

    spring-ldap1.3.1

    Spring LDAP很好地融入了Spring生态,可以与其他Spring模块(如Spring JDBC、Spring Security)无缝集成。这使得在处理多种数据存储时,代码风格和事务管理保持一致。 6. "lib"文件夹: 压缩包中的"lib"文件夹很...

    jdbc连接 ldap jar 包

    ldap.jar可能包含了LDAP操作的基础库,而jdbcLdap.jar则提供了JDBC驱动,使得开发者能够使用SQL语句或者类似SQL的语法来操作LDAP目录。 使用这些jar包,开发者可以像操作数据库一样对LDAP目录进行操作,包括查询、...

    hive-jdbc-standalone.jar

    5. **安全性**:Hive JDBC支持身份验证和授权,可以通过Kerberos、LDAP等方式进行安全控制,确保数据的安全访问。 6. **使用场景**:Hive JDBC常用于数据分析工具(如Tableau、Excel)、ETL工具(如Informatica、...

    hive-jdbc-1.1.0-cdh5.12.1-standalone.rar

    5. **安全认证**:支持多种认证机制,如Kerberos、LDAP等,确保数据访问的安全性。 在CDH 5.12.1版本中,Hive JDBC的稳定性、性能和安全性都得到了提升。这个版本可能包含以下关键改进: 1. **性能优化**:可能...

    instantclient-jdbc-win-x86-64-10.2.0.3

    - 其他辅助库文件,如`jdbc.properties`、`ldap.ora`等,用于特定的配置和连接设置。 6. **安装与配置** 要使用Oracle Instant Client,需要将解压后的文件夹添加到系统的PATH环境变量中,然后在Java应用中通过...

    spring-ldap-1.3.0

    Spring LDAP 可以无缝地与Spring MVC、Spring JDBC、Spring ORM等其他模块配合,实现完整的应用程序解决方案。例如,可以在Web应用中使用Spring LDAP进行用户验证,同时利用Spring JDBC处理数据库操作。 总之,...

    instantclient-jdbc-windows.x64-11.2.0.4.0.zip

    4. **其他库文件**:如ocijdbc11.oci,tnsnames.ora,ldap.ora等,它们提供了网络配置信息,帮助驱动程序找到和连接到Oracle数据库。 使用这个压缩包,开发人员可以轻松地在Java应用程序中集成对Oracle数据库的支持...

    Spring+ldap

    为了解决这些问题,Spring框架提供了Spring-LDAP模块,它借鉴了Spring JDBC的模板模式,极大地简化了LDAP操作,提高了开发效率和代码可维护性。 #### Spring-LDAP概述 Spring-LDAP是一个专门用于简化Java应用程序...

    应聘程序员刷题-spring-ldap:弹簧LDAP

    应聘员工刷题弹簧 LDAP 行为守则 该项目遵守贡献者公约。 通过参与,您应该遵守此准则。 请将不可接受的行为报告给 。 ...Jdbc ...和过滤器)以及如何处理它(映射到域对象和从域对象映射、绑定、修改、解除...spring-ldap-c

    JDBC_Impala 2.5.43 jar包.zip

    6. **配置安全连接**:如果在生产环境中,你可能需要配置SSL/TLS以加密连接,并考虑使用Kerberos或LDAP进行安全认证。 通过以上步骤,你可以利用JDBC_Impala 2.5.43 jar包实现Java应用程序与Impala数据库的连接,...

    ldap-connector-4.2.2.jar

    Java 连接ldap需要驱动包,否则JDBC无法访问数据库(无法注册驱动),常用的是ldap-connector

    spring ldap 1.3.0下载

    - `spring-ldap-core.jar`: Spring LDAP的核心组件,包含了基本的LDAP操作和数据模型。 - `spring-ldap-ldif-parser.jar`: 支持读取和写入LDIF文件的工具。 - `spring-ldap-test.jar`: 用于测试Spring LDAP应用程序...

    cas-server-3.4.2.1-release

    CAS 可以与多种外部身份验证源集成,如 LDAP、Active Directory、数据库等。此外,还可以通过自定义认证模块来支持特定的身份验证需求。同时,CAS 支持与其他系统集成,如 SAML、OAuth 和 OpenID Connect。 总的来...

    confluence的安装以及与LDAP集成

    Confluence 安装和 LDAP 集成 Confluence 是一个基于 Java 的 wiki 软件,广泛应用于企业知识管理、文档管理和协作平台。下面将详细讲解 Confluence 的安装过程和与 LDAP 的集成过程。 Confluence 安装过程 1. ...

    instantclient-sdk-windows.x64-19.6.0.0.0dbru.zip

    9. **JDBC驱动**: 对于Java开发者,Instant Client SDK包含ocijdbc驱动,这是Oracle提供的JDBC Type 4驱动,允许纯Java应用程序直接与Oracle数据库通信,无需本地Oracle客户端。 10. **安全特性**: SDK通常会包含...

    cas-server.7z

    CAS 还支持多种认证协议,如 LDAP、数据库、Active Directory 等,可以根据组织的需求选择合适的认证源。此外,CAS 可以通过插件或扩展支持额外的功能,如多因素认证、审计日志和定制化的用户界面。 总之,"cas-...

    sonarqube安装与ldap集成

    "SonarQube 安装与 LDAP 集成" SonarQube 是一款流行的代码质量管理工具,通过安装和配置 SonarQube,可以对代码进行静态分析、代码质量检查和可维护性评估等功能。本文将详细介绍 SonarQube 的安装、配置、Sonar ...

Global site tag (gtag.js) - Google Analytics