JNDI---Naming Package

     JNDI是一組API,它通過java語言爲應用程序提供命名(naming)和目錄(directory)功能。它被定義成獨立於任何特定的目錄服務實現。因此各種不同的目錄服務可以通過通用的方法被訪問
    Architecture JNDI由一組API和SPI(service provider interface)組成。java程序通過JNDI API訪問各種naming和directory服務。SPI使各種naming和directory服務的實現透明地插件化從而使java程序訪問它所提供的服務。JNDI包包含在jdk1.3及以後的版本中.爲使用JNDI,你需要JNDI classes和一個或多個服務提供者(service providers).jdk1.3包含三個service providers:
·LDAP(Lightweight Directory Access Protocol)
·COS(CORBA Common Object Services name service)
·RMI(Java Remote Method Invocation Registry)
其它的service providers可以從這裏獲得
JNDI被分爲以下5個包:
·javax.naming
·javax.naming.directory
·javax.naming.event
·javax.naming.ldap
·javax.naming.spi
/*************************************************************/
naming package
提供用於訪問命名服務的類和接口
·Context上下文
  用於查詢、綁定/反綁定、重命名對象和創建與銷燬子上下文(subContext)
·Names名字
  在Context接口中每一個命名方法都有2個重載:一個接受Name參數一個接受java.lang.Sting。Name是一個用於表示泛化的"名字"的接口.因此在Context接口中,一個Name參數是代表合成名字的CompositeName的實例,因此你可以用可以橫越不同命名空間的名字來命名一個對象.其他類型的Name參數代表複合的名字.接受Name參數的重載對需要操作名字的應用很有用:組合他們,比較組件等等.
  java.lang.Sting的名字參數表示一個合成的名字,這個參數對簡單的應用程序來說看起來更有用,比如僅讀和查詢符合的對象
·Binding綁定
  listBindings()返回一個代表名字-對象對的bindings的enumeration.每一個binding由Binding類的一個實例來表示
  list()類似listBindings(),但它返回的是NameClassPair的enumeration. NameClassPair包含對象的名字和對象的類的名字.list()對於那些瀏覽性的應用程序很有用--想知道對象所限的上下文內容但並不需要實際的對象.雖然listBindings()提供所有的相同的信息,但是顯然它的代價是高昂的.
·References
  對象以不用的方式存儲在naming和directory服務中.一個服務支持java對象存儲也許支持以序列化的形式存儲對象,然而另一些naming和directory服務不支持java對象存儲.此外對於在目錄中的一些對象,java程序只是訪問它們的一組應用.這種情況下一個序列化的java對象也許不是一個適當的表示形式.一個reference或許是一個簡潔的對象表示方法,儘管它的序列化形式或許包含了更多的狀態
  JNDI定義Reference來表示reference.一個reference包含了構造一個java對象的信息.JNDI試圖從目錄中查詢出的reference轉化成java對象從而使JNDI客戶端明白在目錄中存儲的java對象到底是什麼.
·The Initial Context
  在JNDI中,所有的naming和directory操作都在相關的上下文環境下被執行.沒有絕對根結點.但是JNDI定義了一個初始上下文-- InitialContext,它提供用於naming和directory操作的開始點.一旦你擁有了初始上下文,你可以用它來查詢其他的上下文和對象.
·Exceptions
  JNDI定義了一系列的exception用於JNDI操作的異常處理.這些層次結構的根結點是 NamingException 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章