什么是命名目录?

时间:2011-11-28 18:31:05

标签: java jndi

我正在阅读有关JNDI的内容,如果我已经理解了目前已阅读的内容,那么JNDI是一个用于从命名目录(如LDAP,DNS等)获取资源的API。

之前我没有听说过命名目录,我尝试将其谷歌解释。我读到它是一个存储名称和对象的目录(类似于Java中的HashMap?)。但是我不明白命名目录是什么......,我也不了解JNDI如何完全运行。

如果有人可以解释或/并提供网站链接以供进一步阅读并帮助我理解,我会非常高兴。

谢谢。

(PS,抱歉标签不好,但我不知道放在哪里)

3 个答案:

答案 0 :(得分:1)

以下是Oracle的一些文档和教程:

JavaWorld也有一篇关于这个主题的有趣文章

答案 1 :(得分:1)

基本上,目录服务是一种存储大量(通常是异构的)结构化数据的方法,按层次组织(包括复杂的授权方案),并允许客户端通过唯一的名称访问每个数据项。

它基本上类似于文件系统,但针对非常小的文件层次结构进行了优化,这些文件可由许多客户端通过网络同时访问。

在Java EE的上下文中,JNDI主要用作间接层,以避免硬编码EJB和数据源之类的依赖关系。相反,它们通过名称查找,这允许在运行时配置它们。这与依赖注入容器的用途相同,实际上Java EE依赖注入在内部基于JNDI,我相信。

但它确实是Java EE的第一个版本中引入的一个历史工件,也是导致这些声誉不佳的部分原因,因为它使用起来不方便。更清晰,更简单的DI形式随后在Spring中出现,并且已经在Java EE中被采用。

答案 2 :(得分:0)

当目录服务已知为LDAP时,程序员应避免使用JNDI。即使目录未知或可能发生变化,JNDI也是一个糟糕的选择。请改用UnboundID LDAP SDK。另请参阅"LDAP: Programming Practices"