天天看點

了解JNDI程式設計,通俗的解釋一波

  • 1.jndi是個什麼東西?

    JNDI全稱(java naming ang drectory interface ,java 命名與目錄服務接口),在這個世界,一切都是對象,如何管理這些對象至關重要,jndi便是名字,對象映射管理的一套标準。
  • 2.命名服務

    (1)常見的命名服務系統

    DNS域名系統,負責ip與域名的映射;

    作業系統中的檔案系統,各個檔案對象與檔案名的映射;

    戶籍管理系統,每個公民與身份證的映射;

    (2)上下文

    一個命名服務系統要存放一堆的映射關系需要一個對象進行管理,context便是這個對象。

    (3)命名系統提供了那些服務

    注冊(綁定),查找,登出(解綁)。

    3.目錄服務

    當需要管理的對象多而複雜時,根據不同對象的特征将對象進行分類,于是便有了目錄服務。其相對于命名服務多了對象的屬性,友善管理。

    4.JNDI程式設計基礎

    (1).使用方式

    通過上面,我們知道命名目錄服務系統一般搭建在遠端伺服器上,不同服務提供商所提供的内容不一樣,但是為了友善用戶端對服務内容的通路,這時就需要建立一個标準,提供統一的服務建立與通路的接口,讓命名目錄服務的建立與通路統一化

    (2)程式設計架構

    1.java jndi api :定義了jndi的接口和常見實作類。

    服務通路者:
    javax.naming    提供命名服務的簡單通路
    javax.naming.drectory     通路目錄服務的接口和類
    javax.naming.event      處理通路命名服務和目錄服務的異常資訊類
    javax.naming.ldap      通路ldap目錄服務的接口和類
    javax.naming.spi       提供ldap協定目錄服務的驅動的實作
               
    2.service provider interface(spi):定義了服務提供者接口以及驅動類。
    服務提供者:
    實作jndi服務的驅動,提供命名與目錄服務
               

    (3)命名服務的連接配接

    1.本地連接配接

    context:提供命名服務上下文的接口

    initialcontext:命名服務的實作

    連接配接模闆:

try
  {
  Context ctx=new InitialContext();
  ctx.close();
}
catch(NamingException e)
{
}
           

ps:關閉連接配接對象并不會關閉命名服務本身。

2.遠端連接配接

遠端連接配接需要提供以下參數:命名服務工廠類,位址,賬号,密碼。

weblogic伺服器連接配接模闆:

try{
Properties properties =new Properties();
//設定命名服務工廠類
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");   
//賬号
properties.put(Context.SECURITY_PRINCIPAL, "admin");   
//密碼
properties.put(Context.SECURITY_CREDENTIALS, "123456");   
//命名服務協定,位址,端口
properties.put(Context.PROVIDER_URL, "t3://192.168.70.11:1199");  
Context ctx=new InitialContext(properties);
//業務處理
ctx.close();
}catch(NamingException  e)
{
//namingexceptionjkl/處理
}