快速业务通道

在Apache目录服务器中存储Java对象,第2部分:(上) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
       //------------------------------------------        //Step3: Instantiate a Java object        //------------------------------------------        MessagingPreferences preferences = new MessagingPreferences ();        //------------------------------------------        //Step4: Store the Java object in ApacheDS        //------------------------------------------        String bindContext = "cn=preferences,uid=alice,ou=users";        ctx.bind( bindContext, preferences);      } catch (Exception e) {        System.out.println("Operation failed: " + e);      }    }    public static void main(String[] args) {      StoreAlicePreferences storeAlicePref = new StoreAlicePreferences();    } }

在Apache目录服务器中存储Java对象,第2部分:(上)(2)

时间:2011-08-13 IBM Bilal Siddiqui

从清单 1 中的注释中可以看出,将 Java 对象(即 Alice 的选项)存储到 ApacheDS 中包括 4 个步 骤。后面几节将详细讨论每个步骤。

步骤 1. 设置 ApacheDS 的 JNDI 属性

清单 1 中的第一步是将 ApacheDS 的属性文件读入 Properties 对象。这意味着首先必须将 JNDI 属 性写入单独的属性文件,如清单 2 所示:

清单 2. ApacheDS.properties 文件

java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory java.naming.provider.url=ldap://localhost:389/ou=system java.naming.security.authentication=simple java.naming.security.principal=uid=admin,ou=system

之所以需要单独的属性文件,是因为使用客户端 JNDI 实现的应用程序可能独立于特定的 JNDI 实现 而工作。指定的 Java 应用程序(例如 StoreAlicePreferences)应当能够操作 ApacheDS 或其他任何目 录服务。目录服务甚至不需要使用 LDAP。

考虑一个简单的场景,属性文件的价值就会变得很清楚。假设您已经开发了一个 Java 应用程序,该 应用程序使用 LDAP 的客户端 JNDI 实现与 ApacheDS 进行对话。后来,您又购买了另一个不使用 LDAP 协议而使用其他协议的目录服务器。

在这种情况下,需要一个能够操作新目录服务器的新的客户端 JNDI 实现。Java 程序程序将在不需要 任何重新编码的情况下继续工作,只需要更新属性文件来反映新目录服务器的属性即可。

虽然在应用程序中对属性进行硬编码不会有什么编程问题,但是这么做会让应用程序依赖那些您已对 其进行了硬编码的特定实现。这有点违背使用 JNDI 的目的,它的目的是保持独立于特定的实现。

属性文件的细节

现在查看 清单 2 中所示的 ApacheDS.properties 文件。属性文件由许多名称-值对组成,每个名称 代表一个属性。

在实例化公开名为 Context 的 JNDI 接口的对象时,会使用这些属性。Context 实际上是 JNDI 中最 重要的接口。这个接口定义了操作命名上下文的方法。(在 第 1 部分 中的示例应用程序中,我介绍了 命名上下文的概念。)

例如,Context 接口中定义的一个重要方法是 bind(),它将 Java 对象绑定到命名上下文。将对象绑 定到命名上下文意味着要用特定名称将对象存储在目录的特定上下文中。稍后我将演示如何使用 bind() 方法。首先,我们来查看属性文件中的名称-值对。

名称-值对

清单 2 中的第一个名称-值对是 java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory ,它设置了 JNDI 属性 java.naming.factory.initial。java.naming.factory.initial 属性指定了用作 JNDI 客户端

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号