久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

JNDI

來自站長百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索
JNDI的綁定

JNDI(Java Naming and Directory Interface,Java命名和目錄接口)是一組在Java應(yīng)用中訪問命名和目錄服務(wù)的API。命名服務(wù)將名稱和對象聯(lián)系起來,使得可以用名稱訪問對象。目錄服務(wù)是一種命名服務(wù),在這種服務(wù)里,對象不但有名稱,還有屬性。

JNDI簡介[ ]

  1. JNDI(Java Naming and Directory Interface)是SUN公司提供的一種標(biāo)準(zhǔn)的Java命名系統(tǒng)接口,JNDI提供統(tǒng)一的客戶端API,通過不同的訪問提供者接口JNDI SPI的實現(xiàn),由管理者將JNDI API映射為特定的命名服務(wù)和目錄系統(tǒng),使得Java應(yīng)用程序可以和這些命名服務(wù)和目錄服務(wù)之間進行交互。
  2. 集群JNDI實現(xiàn)了高可靠性JNDI,通過服務(wù)器的集群,保證了JNDI的負(fù)載平衡和錯誤恢復(fù)。
  3. 在全局共享的方式下,集群中的一個應(yīng)用服務(wù)器保證本地JNDI樹的獨立性,并擁有全局的JNDI樹。
  4. 每個應(yīng)用服務(wù)器在把部署的服務(wù)對象綁定到自己本地的JNDI樹的同時,還綁定到一個共享的全局JNDI樹,實現(xiàn)全局JNDI和自身JNDI的聯(lián)系。
  5. JNDI(Java Naming and Directory Interface)是一個應(yīng)用程序設(shè)計的API,為開發(fā)人員提供了查找和訪問各種命名和目錄服務(wù)的通用、統(tǒng)一的接口,類似JDBC都是構(gòu)建在抽象層上。
  6. JNDI可訪問的現(xiàn)有的目錄及服務(wù)有:
  • DNS
  • XNam
  • Novell目錄服務(wù)
  • LDAP(輕型目錄訪問協(xié)議)
  • CORBA對象服務(wù)
  • 文件系統(tǒng)
  • Windows XP/2000/NT/Me/9x的注冊表
  • RMI
  • DSML v1&v2
  • NIS

JNDI的優(yōu)點[ ]

  • 包含了大量的命名和目錄服務(wù),使用通用接口來訪問不同種類的服務(wù);
  • 可以同時連接到多個命名或目錄服務(wù)上;
  • 建立起邏輯關(guān)聯(lián),允許把名稱同Java對象或資源關(guān)聯(lián)起來,而不必知道對象或資源的物理ID。
  • JNDI程序包:
  1. javax.naming:命名操作;
  2. javax.naming.directory:目錄操作;
  3. javax.naming.event:在命名目錄服務(wù)器中請求事件通知;
  4. javax.naming.ldap:提供LDAP支持;
  5. javax.naming.spi:允許動態(tài)插入不同實現(xiàn)。
  • 利用JNDI的命名與服務(wù)功能來滿足企業(yè)級API對命名與服務(wù)的訪問,諸如EJB、JMS、JDBC 2.0以及IIOP上的RMI通過JNDI來使用CORBA的命名服務(wù)。

JNDI與JDBC[ ]

  • JNDI提供了一種統(tǒng)一的方式,可以用在網(wǎng)絡(luò)上查找和訪問服務(wù)。通過指定一個資源名稱,該名稱對應(yīng)于數(shù)據(jù)庫或命名服務(wù)中的一個記錄,同時返回數(shù)據(jù)庫連接建立所必須的信息。
  • JNDI主要有兩部分組成:應(yīng)用程序編輯接口和服務(wù)供應(yīng)商接口。應(yīng)用程序編程接口提供了Java應(yīng)用程序訪問各種命名和目錄服務(wù)的功能,服務(wù)供應(yīng)商接口提供了任意一種服務(wù)的供應(yīng)商使用的功能。
  • 代碼示例:
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");
}
catch(NamingException ne){
...
}

JNDI與JMS[ ]

  • 消息通信是軟件組件或應(yīng)用程序用來通信的一種方法。JMS就是一種允許應(yīng)用程序創(chuàng)建、發(fā)送、接收、和讀取消息的JAVA技術(shù)。
  • 代碼示例:
try{
Properties env = new Properties();
InitialContext inictxt = new InitialContext(env);
TopicConnectionFactory connFactory =
 (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory");
...
}
catch(NamingException ne){
...
}
  • 訪問特定目錄:舉個例子,人是個對象,他有好幾個屬性,諸如這個人的姓名、電話號碼、電子郵件地址、郵政編碼等屬性。通過getAttributes()方法
Attribute attr =
directory.getAttributes(personName).get("email");
String email = (String)attr.get();
  • 通過使用JNDI讓客戶使用對象的名稱或?qū)傩詠聿檎覍ο螅?/li>
 foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
  • 通過使用JNDI來查找諸如打印機、數(shù)據(jù)庫這樣的對象,查找打印機的例子:
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
  • 瀏覽命名空間:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}

JNDI的常用操作[ ]

  • void bind(String sName,Object object);――綁定:把名稱同對象關(guān)聯(lián)的過程
  • void rebind(String sName,Object object);――重新綁定:用來把對象同一個已經(jīng)存在的名稱重新綁定
  • void unbind(String sName);――釋放:用來把對象從目錄中釋放出來
  • Object lookup(String sName);――查找:返回目錄中的一個對象
  • void rename(String sOldName,String sNewName);――重命名:用來修改對象名稱綁定的名稱
  • NamingEnumeration listBinding(String sName);――清單:返回綁定在特定上下文中對象的清單列表
  • NamingEnumeration list(String sName);

代碼示例:重新得到了名稱、類名和綁定對象。

NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
...
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
SomeObject objLocal = (SomeObject) bnd.getObject();
}

相關(guān)條目[ ]

ODBC | JDBC | OOP | JAVA | EJB | 數(shù)據(jù)庫 | JSTL | JMX | RMI | WSDL

參考來源[ ]