首页 / 软件开发 / JAVA / 在Apache目录服务器中存储Java对象,第2部分:(上)
在Apache目录服务器中存储Java对象,第2部分:(上)2011-08-13 IBM Bilal Siddiqui在 ApacheDS 中存储、搜索和检索 Java 对象简介:在第 2 部分中将介绍如何在 Apache 目录服务器 (ApacheDS) 中存储 Java™ 对象, Bilal Siddiqui 将提供 9 个示例应用程序,演示在 第 1 部分 中学习的概念。除 了介绍使用 ApacheDS 存储、搜索、检索和修改 Java 对象的所有步骤之外,Bilal 还将在总结全文时提 供一个可重用的 Java 类,该类可以使用 LDAP 模式组件在 ApacheDS 中将这些功能组合在一起。在 第 1 部分 中,我介绍了在 ApacheDS 中存储 Java 对象的概念方面的基础,解释了 ApacheDS 的 核心架构,并讨论了它实现目录服务和可插入协议支持的方式。我还介绍了一些 LDAP 概念和术语,解释 了 ApacheDS 如何实现 LDAP 协议,并介绍了用来在 ApacheDS 中存储和操纵对象的各种组件。最后,讨 论了 Java 对象和 RMI 的基础,要想在 ApacheDS 中存储和检索 Java 对象,就必须理解它们。我还引 入了一个示例应用程序 —— 一个面向制造企业的数据管理系统,并用它演示文中讨论的一些概念。在本系列的第 2 部分,我几乎完全依靠示例(总共有 9 个示例)。这些示例基于第 1 部分介绍的数 据管理系统,它们的作用是让您了解如何在 ApacheDS 中存储、搜索、检查和更新 Java 对象。如果还没有下载和安装 ApacheDS,那么一定要在开始之前 下载和安装 ApacheDS 和 JXplorer。可以 下载 文章的完整源代码。注意!请注意,要跟上本文中的示例,必须理解基本的 LDAP 术语和概念,例如专有名称 (DN)、相对专有名 称 (RDN)、命名上下文、对象类和属性类型。如果还不熟悉这些术语,请在继续之前阅读 第 1 部分。应用程序 1. 存储 Java 对象我先从几个应用程序开始,演示如何在 ApacheDS 中存储 Java 对象。出于这个目的,需要使用 Java 命名和目录接口 (JNDI),它提供了操作目录中的对象和属性的接口和方法。请参阅 在 Apache 目录服务 器中存储 Java 对象,第 1 部分,获得 ApacheDS 如何使用 JNDI 接口公开目录服务的讨论。JNDI 不是特定于 LDAP 的接口,因此可以拥有针对任何目录服务类型的 JNDI 实现。如果想实现自己 的目录服务并用 JNDI 公开它的功能,则需要为目录服务实现 JNDI 接口。注意,Java 2 标准版 (J2SE) 提供了 LDAP 的客户端 JNDI 实现,可以用它与 ApacheDS 对话。在我的讨论中,我将使用这个客户端实 现。清单 1 是一个名为 StoreAlicePreferences 的简单应用程序。我将用这个应用程序介绍如何将用户 Alice 的选项作为 Java 对象存储到 ApacheDS 中。清单 1. StoreAlicePreferencespublic class StoreAlicePreferences {
public StoreAlicePreferences ()
{
try {
//------------------------------------------
//Step1: Setting up JNDI properties for ApacheDS
//------------------------------------------
InputStream inputStream = new FileInputStream ( "ApacheDS.properties");
Properties properties = new Properties();
properties.load(inputStream);
properties.setProperty("java.naming.security.credentials", "secret");
//------------------------------------------
//Step2: Fetching a DirContext object
//------------------------------------------
DirContext ctx = new InitialDirContext(properties);
//------------------------------------------
//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();
}
}