JNDI 常见问题
谁应该使用 JNDI?
任何需要访问有关用户、机器、网络和服务的信息的 Java 应用程序。用户信息包括安全凭证、电话、电子邮件地址、通信地址和应用程序首选项(application preferences)。机器信息包括网络地址、机器配置等。另外就是任何需要导出对象或者需要访问其他应用程序或服务导出的对象的 Java 应用程序。这样的例子包括打印程序、日历和联网的文件系统。
现在我可以使用 JNDI 吗?
是的,Sun Microsystems 已经将 JNDI 作为一个 Java Standard Extension 发布了。Sun Microsystems 还为很多命名服务和目录服务(如 LDAP, NIS, CORBA (COS) Naming 和文件)发布了无缝地插入在 JNDI 后面的服务提供程序。这些服务提供程序以及其他供应商提供的服务提供程序都可从 下载 处得到。
JNDI 用于 Java 平台中的什么地方?
HotJava Views 1.1 使用 JNDI 来访问 LDAP。像 Enterprise JavaBeans, Java Message Service, JDBC 2.0 这样的 Enterprise API 将 JNDI 用于命名和目录用途。RMI over IIOP 应用程序可以使用 JNDI 来访问 CORBA (COS) 命名服务。
谁将提供 JNDI 的实现?
在写这篇文章时,IBM, Novell, Sun 和 WebLogic 已经为 JNDI 提供了服务提供程序。我们维护有一个公共可用的服务提供程序的 列表 。
JNDI 为哪些协议提供了接口?
JNDI 本身独立于任何特定目录访问协议。单独的服务提供程序决定所支持的协议。将会有不同供应商提供的流行协议(比如 LDAP, NDS, DNS 和 NIS(YP))的提供程序实现。
JNDI 与 LDAP 的关系如何?
JNDI 提供目录和命名的一个优良的面向对象的抽象。开发人员使用 JNDI 可以开发出使用 LDAP 或其他访问协议的查询来检索结果;但是他们并不局限于 LDAP,也不是必须开发与 LDAP 相关的应用程序。JNDI 支持 LDAP v3 中的关键功能。
JNDI 与 Netscape 的 Java LDAP API 的关系如何?
Netscape 的 API 是特定于 LDAP 的。它用于对 LDAP 目录的低级别访问。它暴露应用程序一般不需要知道的协议细节。
JNDI 是 Java 程序的一个普通目录 API。它类似用于访问文件的 java.io.File 类。可能会有一些需要在协议级别处理文件的管理程序(比如 NFS),但是所有的 Java 应用程序一般都使用 File 类来访问文件系统。类似地,大多数 Java 程序应该使用 JNDI 来访问目录。需要在协议级别处理目录内容的应用程序可能会选择使用 Netscape 的 API。
JNDI 与用于命名的 OMG 的 CORBA 标准的关系如何?
Java CORBA 应用程序可以使用 JNDI 来访问 CORBA (COS) 名称服务,以及其他命名服务和目录服务。它为应用程序提供一个接口,用于访问所有这些命名服务和目录服务。
通过使用 JNDI,Java CORBA 应用程序还可以使用像 LDAP 这样的分布式企业级服务来存储对象引用。
JNDI 与 Microsoft 的 ADSI 的关系如何?
Java ADSI 包允许 Java 程序基于 COM 模型访问 Active Directory。尽管它可用于访问其他目录,但是它是一个以 Windows 为中心的解决方案。
JNDI 提供 Java 应用程序使用 Java 对象模型来访问目录,而不管这些应用程序是运行在 Windows 上,还是在访问 Active Directory。例如,您可以处理像 AWT 和 JavaBeans 组件这样的对象,将它们绑定到目录中,然后再返回来查找它们,而不用做任何转换或者处理数据表示问题。
什么是 XFN,它与 JNDI 的关系如何?
XFN 就是 X/Open Federated Naming,即一个基于 C 的标准,用于访问多个有可能联盟的命名服务和目录服务。熟悉 XFN 的程序员会发现使用 JNDI 很容易。
安全性如何?
不同目录对待安全性的方式不同。JNDI 允许应用程序与特定于目录的安全系统协同工作。在未来,基于 JNDI 的应用程序将能够为 Java 平台开发的任何单点登录机制的优势。
(出处:http://www.knowsky.com)