J2EE 13 規範之解讀JNDI

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.