posts - 0,  comments - 0,  trackbacks - 0
JNDI全称 Java Naming and Directory Interface
JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。
JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。
JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层上下文以及使用相同命名语法的子上下文。
jndi的用途:
1。你可以用jndi来得到object类的属性
如:Attribute attr =directory.getAttributes(personName).get("email");
String email = (String)attr.get();
2。你可以用jndi来搜索对象
如:foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
查找谁的名字叫Fox在wiz部门的员工?
3。你可以用jndi通过naming/directory服务查询像printers和databases的对象
如:查询 Printer
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
4。你可以用jndi列表出命名空间的特殊级别的内容
如:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}

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

posted on 2007-09-09 22:29 mordecai 阅读(152) 评论(0)  编辑 收藏 引用 所属分类: jsp
只有注册用户登录后才能发表评论。

<2026年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿

文章分类

搜索

  •  

最新评论