# 课程：目录中的 Java 对象

> 原文： [https://docs.oracle.com/javase/tutorial/jndi/objects/index.html](https://docs.oracle.com/javase/tutorial/jndi/objects/index.html)

传统上，目录已被用于存储数据。用户和程序员将目录视为目录条目的层次结构，每个目录条目包含一组属性。您从目录中查找条目并提取感兴趣的属性。

对于使用 Java 编程语言编写的应用程序，Java 对象有时可以跨应用程序共享。对于此类应用程序，能够将该目录用作 Java 对象的存储库是有意义的。该目录提供集中管理的，可能是复制的服务，供分布在网络上的 Java 应用程序使用。例如，应用程序服务器可能使用该目录来注册表示其管理的服务的对象，以便客户端稍后可以根据需要搜索目录以查找这些服务。用作服务目录的 JNDI 的一个示例是 Apache DS。有关这方面的更多信息，请访问 [Apache Directory](http://directory.apache.org/) 。

JNDI 提供了目录的面向对象视图，从而允许将 Java 对象添加到目录并从目录中检索，而无需客户端管理数据表示问题。本课程讨论使用目录在基本级别存储和检索 Java 对象。 JNDI 提供了所谓的对象和状态工厂，用于创建和存储从目录访问的对象。

## 对象工厂

对象工厂是对象的生产者。它接受有关如何创建对象（如引用）的一些信息，然后返回该对象的实例。有关对象工厂和对象存储在目录中的格式的详细信息，请参阅 [JNDI 教程](https://docs.oracle.com/javase/jndi/tutorial/objects/factory/index.html)。

## 国家工厂

状态工厂将对象转换为另一个对象。输入是提供给 Context.bind（）的对象和可选属性，输出是另一个对象和可选属性，存储在底层命名服务或目录中。有关 State Factories 以及如何编写自己的州工厂的详细信息，请参阅 [JNDI 教程](https://docs.oracle.com/javase/jndi/tutorial/objects/state/index.html)。

本课程的下一部分讨论如何访问目录中的对象它描述了如何在目录中存储和读取可序列化的对象。对于其他类型的对象，请查看 [JNDI 教程](https://docs.oracle.com/javase/jndi/tutorial/objects/index.html)。