標籤:j2ee jndi hashtable j2ee規範
對於我這樣初次接觸J2EE的菜鳥來說,J2EE的 13規範都顯得那麼神秘。
今天先從JNDI說起,讓我們一個一個的揭開13規範的神秘面紗。
JNDI
JNDI(Java Naming and Directory Interface)Java 命名與目錄介面,JavaEE規範中重要的規範之一,是命名
服務的抽象機制。
常用的JNDI操作:
bind(String sName,Object object),綁定:把名稱同對象關聯的過程。
rebind(String sName,Object object),重新綁定:用來把對象同一個已經存在的名稱重新綁定。一般使用
rebind()而不使用bind(),因為當有重名的時候rebind()不會出現異常,而bind()會報異常。
unbind(String sName),釋放:用來把對象從目錄中釋放出來。
lookup(String sName),尋找:返回目錄總的一個對象。
rename(String sOldName,String sNewName),重新命名:用來修改對象名稱綁定的名稱。
NamingEnumeration listBindings(String sName),清單:返回綁定在特定上下文中指定屬性名稱對象的清單列
表,它返回名字、類和對象本身,它用於那些需要對對象進行實際操作的應用。具體使用如下:
//得到初始目錄環境的一個引用
Context cntxt = new InitialContext();
執行個體:
Binding樣本:
<span style="font-size:18px;">public static InitialContext getInitialContext() throws NamingException { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); env.put(Context.PROVIDER_URL,"t3://localhost:7001"); InitialContext context = new InitialContext(env); return context;}//獲得 initial contextInitialContext initialContext = getInitialContext();//建立一個名為 Bank 的對象.Bank myBank = new Bank();//把Bind 對象綁定到JNDI樹。initialContext.rebind("theBank",myBank);</span>
Lookup樣本:
public static InitialContext getInitialContext() throws NamingException { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); env.put(Context.PROVIDER_URL,"t3://localhost:7001"); InitialContext context = new InitialContext(env); return context;}//獲得 initial contextInitialContext initialContext = getInitialContext();//找到綁定的Bank 對象.Bank myBank = (Bank) initialContext.lookup("theBank");
JNDI作用
為開發人員提供尋找和訪問各種命名和目錄服務的通用、統一的介面
我的理解:
大家都用過HashTable和Dictionary。他們的工作原理是:以Key和Value的形式儲存物件,每一個添加項都是由
一個值及其相關連的鍵組成。在使用的時候可以根據Key找到相應的對象。
JNDI也可以這樣理解。他利用bind和rebind操作同樣以鍵值(Key和Value)的形式將對象綁定到JNDI樹上,然
後以lookup操作根據Key尋找到相應的Value(對象),進行操作。
每一個規範都是對編程某一方面的抽象,JNDI主要提供尋找服務。它為編程人員提供了一個統一的操作方式,不
管是LDAP、RMI、DNS、目錄服務、檔案服務、對象、設定檔等等,我們只需知道它們的名字就可以擷取和操作
他們。
J2EE 規範要求所有 J2EE 容器都要提供 JNDI 規範的實現。JNDI 在 J2EE 中的角色就是“交換器” —— J2EE 組
件在已耗用時間接地尋找其他組件、資源或服務的通用機制。JNDI 在 J2EE 應用程式中的主要角色就是提供間接層,
這樣組件就可以發現所需要的資源,而不用瞭解這些間接性。從這方面來看JNDI起到的作用類似於面板模式,這麼做
也能夠解除外部資源與應用程式之間的耦合。
J2EE 13 規範之解讀JNDI