Java技术回顾之JNDI--JNDI API
1)你可以用jndi來得到object類的屬性
Attribute attr =directory.getAttributes(personName).get("email"); String email = (String)attr.get();2)你可以用jndi來搜索對象
foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls); 查找誰的名字叫Fox在wiz部門的員工?
3)你可以用jndi通過naming/directory服務查詢像printers和databases的對象
如:查詢 Printer Printer printer = (Printer)namespace.lookup(printerName); printer.print(document);
4)你可以用jndi列表出命名空間的特殊級別的內容
JNDI API包含以下5個package:
javax.naming
javax.naming.directory
javax.naming.event
javax.naming.ldap
javax.naming.spi
其中前面4個package定義了JNDI客戶端接口,面向使用命名和目錄服務的應用。
最后的javax.naming.spi定義了JNDI服務提供者接口(SPI),面向不同的命名和目錄服務提供者。 ?
命名服務主要API javax.naming
1、Context接口和InitialContext類
Context是命名服務的核心接口,提供對象查找,綁定/解除綁定,重命名對象,創建和銷毀子上下文等操作。
InitialContext類實現了Context接口,是訪問命名服務的起始上下文,通過它可查找對象和子上下文。
2、Name接口
對應于命名服務概念中的對象名稱。它的具體實現可能是一個簡單的字符串,也可能是一個復雜對象。CompoundName類和CompositeName類均實現了Name接口,分別代表復合名稱和混合名稱。
3、Binding類
對應于命名服務概念中的綁定。一個Binding包含對象名稱,對象的類名稱,對象本身。
4、Referenceable接口和Reference類
命名服務中對象的存儲方式各不相同。有的將對象直接序列化,這時實現標準的Serializable接口接口。有的要將對象存儲在命名系統外部,這就要用到Referenceable接口和Reference類了。Reference類包含了怎樣構造出一個實際對象的信息,實際對象則需要實現Referenceable接口。
Referenceable主要方法:
Reference getReference() 返回對象的引用。
當將一個實現了Referenceable接口的對象綁定到Context時,實際上通過getReference()得到它的Reference進行綁定。而如何從Reference中創建出Referenceable實例,則由具體的SPI實現,JNDI客戶不用關心。 ?
目錄服務主要API javax.naming.directory
1、DirContext接口和InitialDirContext類
DirContext是目錄服務的核心接口,它擴展了Context接口,除了提供了命名服務的各種操作外,還提供了訪問和更新目錄對象屬性的操作,以及Search操作。
InitialDirContext類擴展InitialContext類并實現了DirContext接口,是訪問目錄服務的起始點。
DirContext主要方法:
binding/rebing/unbinding等方法與Context類似,區別是各個方法中均添加了Attributes參數,表示綁定的是一個目錄對象,其中有對象本身,還有對象的屬性集合。這里不再列舉。
2、Attribute接口和Attributes接口
Attribute接口對應于目錄服務概念中的屬性。Attributes表示屬性的集合。
3、SearchResult類和SearchControls類
SearchResult類繼承自Binding類,表示DirContext的search操作的結果。SearchControls類用于對搜索操作進行更精細的控制,如指定搜索范圍(Scope),時間限制(TimeLimit)和結果數量限制(CountLimit)。
命名和目錄服務事件API javax.naming.event
1、EventContext接口和EventDirContext接口
分別表示支持事件通知的上下文,提供了添加和刪除事件監聽器的操作。
2、NamingEvent類
命名和目錄服務產生的事件。包含一個type表示不同的事件類型。
3、NamingListener/NamespaceChangeListener/ObjectChangeListener
NamingListener是處理NamingEvent事件監聽器的接口,NamespaceChangeListener和ObjectChangeListener是它的兩個子接口,分別定義了各自感興趣的NamingEvent事件類型的處理方法。
總結
以上是生活随笔為你收集整理的Java技术回顾之JNDI--JNDI API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 需求分析设计
- 下一篇: Effective Java~46. 优