2010-12-06 25 views

回答

8

JNDI概述

JNDI是Java 技术,提供了命名指定的API和 目录功能,用Java 编程语言 应用。它被设计为 ,特别是对于使用Java的对象模型的 的Java平台。使用JNDI, 基于Java技术的应用程序 可以存储和检索任何类型的名为Java对象的 。此外,JNDI 提供了执行 标准目录操作的方法,例如 将属性与对象 相关联,并使用它们的 属性搜索对象。

JNDI也定义为独立于 的任何特定命名或目录 服务实现。它使 应用程序能够使用通用API访问不同的, 可能的多个命名和 目录服务。 不同的命名和目录服务 供应商可以在这个公共API背后无缝地插入 。这使得 基于Java技术的应用程序的信息 趁在 各种现有的命名和 目录服务,如LDAP,NDS, DNS和NIS(YP),以及使 应用共存与 传统的软件和系统。

使用JNDI作为一个工具,你可以建立 新的强大和便携式应用 ,不仅充分利用了Java的 对象模型,但也 很好地集成在其部署的环境 。

Reference

169

什么是JNDI?

它代表Java Naming and Directory Interface

它的基本用途是什么?

JNDI允许分布式应用程序以抽象的,资源无关的方式查找服务。

它什么时候用?

最常见的用例是在Java EE应用程序服务器上设置数据库连接池。部署在该服务器上的任何应用程序都可以使用JNDI名称java:comp/env/FooBarPool访问他们所需的连接,而无需了解有关连接的详细信息。

这有几个优点:

  1. 如果您拥有的应用程序从devl->int->test->prod环境中移动部署顺序,你可以在每个环境使用相同的JNDI名称和隐藏正在使用的实际数据库。应用程序在环境之间迁移时不必更改。
  2. 您可以最大限度地减少需要知道访问生产数据库凭据的人数。只有Java EE应用服务器需要知道您是否使用JNDI。
+3

所以这基本上是一个使用jdbc连接信息创建属性文件更安全的替代方法? – grinch 2014-01-16 18:13:50

+1

@格林奇:基本上是的。它更安全,更标准化,从而使部署更容易(无需猜测属性文件的名称必须是什么等)。 – sleske 2014-01-21 16:38:55

20

JNDI通俗地说基本上是能够得到的内部/外部资源实例如

javax.sql.DataSource, 
    javax.jms.Connection-Factory, 
    javax.jms.QueueConnectionFactory, 
    javax.jms.TopicConnectionFactory, 
    javax.mail.Session, java.net.URL, 
    javax.resource.cci.ConnectionFactory, 

或通过JCA资源适配器定义的任何其它类型的接口。 它提供了一种可以创建访问权限的语法,无论它们是内部还是外部。即(comp/env的在这种情况下意味着其中component /环境,还有很多其他的语法):

jndiContext.lookup("java:comp/env/persistence/customerDB"); 
6

什么是JNDI?

JNDI代表Java命名和目录接口。它是J2EE的标准。

它的基本用途是什么?

使用此API,您可以访问许多类型的数据,例如对象,设备,命名和目录服务文件等。它被EJB用来查找远程对象。 JNDI旨在提供通用接口来访问现有服务,如DNS,NDS,LDAP,CORBA和RMI。

它什么时候用?

您可以使用JNDI执行命名操作,包括读取操作和更新命名空间的操作。以下操作描述如下here

68

什么是JNDI?

Java命名和目录接口TM(JNDI)是一种应用程序编程接口(API),它提供命名和目录功能使用Java TM 编程语言编写的应用程序。它被定义为独立于任何特定的目录服务实现。因此,可以通用的方式访问各种目录(新的,新兴的,已经部署的)。

它的基本用途是什么?

大部分内容都在上面的答案中,但我想在这里提供架构,以便上面的内容更有意义。

enter image description here

要使用JNDI,你必须有JNDI类和一个或多个服务提供商。 Java 2 SDK v1。3包括以下命名/目录服务三个服务提供商:

  1. 轻量级目录访问协议(LDAP)
  2. 公共对象请求代理体系结构(CORBA),公共对象服务(COS)命名服务
  3. Java远程方法调用(RMI)注册表

因此,基本上你可以创建对象并将它们注册到目录服务上,稍后您可以在其上执行查找和执行操作。

0

命名服务将名称与对象关联起来,并根据它们的名称查找对象(RMI注册表是命名服务的一个很好的示例)。JNDI为许多现有的命名服务(如LDAP,DNS)提供了一个通用接口。

没有JNDI,远程资源的位置或访问信息必须在应用程序中进行硬编码或在配置中可用。维护这些信息非常繁琐且容易出错。

相关问题