该Java教程适用于JDK 8。本页描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9及其后续版本中更新的语言特性摘要。
请参阅JDK发行说明,了解所有JDK版本的新功能、增强功能以及已删除或不推荐的选项。
传统上,目录被用来存储数据。用户和程序员将目录视为包含一组属性的目录条目的层次结构。您可以从目录中查找条目并提取感兴趣的属性。
对于使用Java编程语言编写的应用程序,Java对象有时可以在应用程序之间共享。对于这样的应用程序,能够将目录用作Java对象的存储库是有意义的。该目录为分布在网络上的Java应用程序提供了一个集中管理的、可能是复制的服务。例如,应用程序服务器可以使用目录来注册表示其管理的服务的对象,以便客户端稍后可以搜索目录以定位所需的服务。 JNDI用作服务目录的示例是Apache DS。有关更多信息,请参阅Apache目录。
JNDI提供了目录的面向对象视图,从而允许将Java对象添加到目录中并从目录中检索,而无需客户端管理数据表示问题。本课程以基本水平讨论了使用目录存储和检索Java对象的使用方法。 JNDI为从目录访问的对象创建和存储提供了所谓的对象工厂和状态工厂。
对象工厂是对象的生产者。它接受有关如何创建对象的一些信息,例如引用,然后返回该对象的实例。有关对象工厂以及对象在目录中存储的格式的详细信息,请参阅JNDI教程。
状态工厂将一个对象转换为另一个对象。输入是对象和可选属性,由Context.bind()提供,输出是另一个对象和可选属性,将存储在底层命名服务或目录中。有关状态工厂以及如何编写自己的状态工厂的详细信息,请参阅JNDI教程。
本课程的下一部分将讨论如何访问目录中的对象。它描述了如何在目录中存储和读取可序列化对象。有关其他类型的对象,请查看JNDI教程。