2010-12-06 23 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,遠程資源的位置或訪問信息必須在應用程序中進行硬編碼或在配置中可用。維護這些信息非常繁瑣且容易出錯。

相關問題