java Naming and Directory Interface (JNDI)是J2EE平臺的一個主要產品并且支持EnterPRise JavaBeans(EJB)。JNDI可以無縫連接不同種類的企業命名和目錄服務。程序員們能夠使用JNDI建立輕便的目錄支持應用程序。讓我們來看看它的工作原理以及開始使用它所必需的代碼。
名字命名
幾乎所有計算平臺都要依靠某種標準化的命名系統來查找、獲取以及存儲資源。例如,文件系統靠的是文件和目錄名,目錄服務靠的是對象名,而DNS系統依靠URL——你就是靠它找到本文的。
大多數的命名系統使用某種能避免名字沖突的與法。
當試圖引用其中一個文件時這會造成很多麻煩。但是,假如每個文件被引用的時候都包括了其父目錄,那問題就解決了。為了示范,我們假設命名語法使用一個UNIX式的分隔符。用完整路徑名來引用每個名為File 1的文件應該使用如下的語法:
/Root/Directory 2/Directory 2.2.1/File 1
/Root/Directory 2/Directory 2.2.2/File 1
注重每個文件的完整路徑都是唯一的。這就保證了操作系統能夠正確地對一個文件進行操作,而不必擔心會與其它文件發生沖突。提供這種對對象上下文便捷引用的環境被稱為命名空間
Java Naming and Directory Interface是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
Java 2 SDK 1.3版加入了JNDI。假如使用的是1.1或1.2版,可以下載并作為JDK的標準擴展來安裝。還必須為想要使用的特定的命名空間安裝service provider,比如LDAP、文件系統或RMI。這些service provider可以從Sun的JNDI Web站點下載或從SPI的供給商那里得到。
新聞熱點
疑難解答