當(dāng)柳上原的風(fēng)吹向天際的時(shí)候...

          真正的快樂來源于創(chuàng)造

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          命名服務(wù)概述
          命名服務(wù)(Naming Service)是可以將復(fù)雜數(shù)據(jù)對(duì)象或其引用關(guān)聯(lián)到已知名稱的機(jī)制.然后可以發(fā)布這些名稱,客戶可以使用這些名稱查詢與它們相關(guān)聯(lián)的數(shù)據(jù)對(duì)象.名稱與對(duì)象之間的關(guān)聯(lián)稱為綁定.命名服務(wù)通常與其它服務(wù)(如文件系統(tǒng),目錄和數(shù)據(jù)庫等)集成以提供這種綁定.大家可以從現(xiàn)代圖書館的卡片目錄系統(tǒng)來理解命名服務(wù).

          JNDI介紹(Java Naming and Directory Inteface,Java命名與目錄接口)
          JNDI是Java命名與目錄接口(Java Naming and Directory Inteface)的縮寫,有時(shí)也簡稱Java名錄服務(wù),J2EE組件通過調(diào)用JNDI提供的查找(lookup)方法以定位對(duì)象。JNDI是專門為Java設(shè)計(jì)的,一個(gè)Java應(yīng)用程序可以用JNDI檢索Java對(duì)象.JNDI還可以執(zhí)行標(biāo)準(zhǔn)目錄操作,如關(guān)聯(lián)屬性和對(duì)象,并用對(duì)象的屬性搜索它們.
          JNDI名字是對(duì)象的友好名字,這些名字通過J2EE服務(wù)器提供的命名目錄服務(wù)綁定到各自的對(duì)象上。由于J2EE組件是通過JNDI編程接口訪問服務(wù)的,所以通常情況下把對(duì)象的友好名字稱之為JNDI名字。比如,mydatabase數(shù)據(jù)庫的JNDI名字為jdbc/mydatabase,一旦J2EE服務(wù)器啟動(dòng),系統(tǒng)自動(dòng)從配置文件讀取相關(guān)信息,并將jdbc/mydatabase的JNDI數(shù)據(jù)庫名字添加到名字空間。
          Sun公司對(duì)JNDI的定義為”一種對(duì)Java平臺(tái)的標(biāo)準(zhǔn)擴(kuò)展,它為Java技術(shù)編寫的應(yīng)用程序提供了對(duì)企業(yè)中多種命名和目錄服務(wù)的統(tǒng)一接口.作為Java Enterprise API集的一部分,JNDI使與異構(gòu)企業(yè)命名和目錄服務(wù)的無縫連接提供了可能”.

          連接工廠(Connection Factory)
          連接工廠(Connection Factory)是用于產(chǎn)生鏈接對(duì)象,使得J2EE組件可以訪問資源的一種對(duì)象。比如,用于數(shù)據(jù)庫的連接工廠是javax.sql.Database對(duì)象,它產(chǎn)生java.sql.Connection對(duì)象。

          JNDI和Weblogic Server
          Weblogic提供了在JNDI規(guī)范中規(guī)定的實(shí)現(xiàn).這使Java客戶可以用標(biāo)準(zhǔn)JNDI調(diào)用連接到Weblogic Server.客戶可以在Weblogic命名空間中訪問Weblogic命名服務(wù)并使對(duì)象可用,還可以檢索它們.
          如果希望訪問已經(jīng)加載到Weblogic Server的JNDI樹中的對(duì)象的Java客戶一般要執(zhí)行以下任務(wù):
          1.與服務(wù)器建立一個(gè)上下文
          2.對(duì)JNDI樹進(jìn)行查詢或者更新

          取得上下文例程
          這是在命名空間中訪問綁定對(duì)象的第一步.應(yīng)用程序?qū)@得引導(dǎo)上下文稱為InitialContext.它是從InitialContext工廠獲得的.這個(gè)工廠使用幾個(gè)屬性標(biāo)識(shí)上下文需要指向的Weblogic Server.
          Hashtable ht=new Hashtable();
          ht.put(Context.INITIAL_CONTEXT_FACTORY, 
          "weblogic.jndi.WLInitialContextFactory");
          ht.put(Context.PROVIDER_URL, 
          "t3://127.0.0.1:7001");

          Context ctx
          =null;   

          try {
              ctx
          =new InitialContext(ht);
          catch (NamingException e) {
              e.printStackTrace();
              System.out.println(
          "不能得到上下文");
          }

          創(chuàng)建一個(gè)綁定例程
          要在WeblogicJNDI樹中創(chuàng)建一個(gè)新的綁定,可使用Context.bind方法.這個(gè)方法以新綁定的名稱以及綁定到這個(gè)名稱號(hào)的對(duì)象為參數(shù).注意這個(gè)對(duì)象必須是可序列化的,也就是說它必須實(shí)現(xiàn)java.io.Serializablejie接口(實(shí)現(xiàn)這個(gè)接口無需實(shí)現(xiàn)任何方法,它只是告訴JVM這個(gè)對(duì)象可以序列化).
          Hashtable ht=new Hashtable();
          ht.put(Context.INITIAL_CONTEXT_FACTORY, 
          "weblogic.jndi.WLInitialContextFactory");
          ht.put(Context.PROVIDER_URL, 
          "t3://127.0.0.1:7001");
          Context ctx
          =null;   
          try {
            ctx
          =new InitialContext(ht);  
            String text
          ="菩提本非樹,明鏡亦非臺(tái),本來無一物,何處染塵埃.";   
            ctx.bind(
          "TEST", text);
          catch (NamingException e) {
            e.printStackTrace();
            System.out.println(
          "不能得到上下文");
          }

          下面是在Weblogic中查看剛才創(chuàng)建的綁定內(nèi)容圖示
          一.點(diǎn)擊環(huán)境,服務(wù)器,點(diǎn)擊“查看JNDI樹鏈接”


          二.可以看到已經(jīng)綁定到JNDI樹中的對(duì)象

          刪除現(xiàn)有的綁定例程
          使用Context.unbind方法可以從JNDI樹中刪除綁定,不能再從樹中訪問這些對(duì)象了.
          Hashtable ht=new Hashtable();
          ht.put(Context.INITIAL_CONTEXT_FACTORY, 
          "weblogic.jndi.WLInitialContextFactory");
          ht.put(Context.PROVIDER_URL, 
          "t3://127.0.0.1:7001");

          Context ctx
          =null;   
          try {
            ctx
          =new InitialContext(ht);  
            ctx.unbind(
          "TEST");
          catch (NamingException e) {
            e.printStackTrace();
            System.out.println(
          "不能得到上下文");
          }

          總結(jié)
          JNDI為應(yīng)用程序提供了標(biāo)準(zhǔn)統(tǒng)一的方式,連接和使用企業(yè)中存在的多個(gè)對(duì)象目錄的能力.WeblogiocServer提供了JNDI的實(shí)現(xiàn),客戶機(jī)可以和它無縫連接.同一客戶機(jī)還可以用JNDI API連接到另一命名服務(wù)上.Weblogic Server大量利用JNDI樹完成其常規(guī)功能.如果應(yīng)用程序使用EJB,那么這個(gè)EJB就發(fā)布在JNDI樹中,類似的其它對(duì)象如DataSource對(duì)象,事務(wù)對(duì)象都發(fā)布在JNDI樹上.

          參考例程
          WeblogicJNDI(注意:weblogic.jar請(qǐng)自行加入lib目錄)

          posted on 2009-09-25 09:16 何楊 閱讀(4196) 評(píng)論(0)  編輯  收藏
          主站蜘蛛池模板: 揭西县| 邛崃市| 乌海市| 巫溪县| 新沂市| 贵定县| 台州市| 永顺县| 苗栗市| 东乡县| 庆城县| 新闻| 大丰市| 佛山市| 九寨沟县| 水富县| 平昌县| 醴陵市| 上饶市| 磐石市| 扶余县| 应用必备| 舟曲县| 金塔县| 象州县| 邛崃市| 陈巴尔虎旗| 广南县| 三门县| 左贡县| 德兴市| 波密县| 将乐县| 比如县| 汽车| 泰宁县| 安陆市| 丹凤县| 黔西| 钟祥市| 淮滨县|