<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JNDI全攻略(二)

      關(guān)鍵字:JNDI,J2EE,Java,命名和目錄接口,Java Naming and Directory Interface

      摘要:本文詳細(xì)介紹了JNDI的目錄相關(guān)內(nèi)容,并以DNS Service Provider為例進(jìn)行了示例代碼的演示.本文為系列文章的第二篇,JNDI的基礎(chǔ)內(nèi)容請(qǐng)見本系列的第一篇

      總述:

      目錄(Directory)可看作是對(duì)命名(Naming)的一個(gè)擴(kuò)充,一個(gè)目錄對(duì)象不僅像命名一樣,而且還提供的對(duì)屬性(Attributes)的操作.由API文檔可知,javax.naming.directory.DirContext 類擴(kuò)展自Context接口,同樣,javax.naming.directory.InitialDirContext也擴(kuò)展自 javax.naming.InitialContext,由此也可看出目錄操作完全支持命名操作。下面給出一個(gè)DNS Service Provider例子以演示有關(guān)目錄的一些操作:

       

      <!-- Code creation by HtmlSave Eclipse Plug-in (C) 2005 Morten Moeller / eclipse.moelleryoung.com --> * Created on 2005-11-17
      package com.sily.jndi;


      import java.util.Properties;


      /**

       
      * Description:

       
      *
       
       
      * @author shizy

       
      * @version 1.0 date:2005-11-17

       
      */

      public class TestDNSJndi {

          
      public static void main(String[] args) throws Exception {

              
      Properties env = new Properties();

              
      env.put(Context.INITIAL_CONTEXT_FACTORY,

                      
      "com.sun.jndi.dns.DnsContextFactory");

              
      //此IP一定要為要訪問的DNS服務(wù)器的IP,可通過(guò)網(wǎng)絡(luò)設(shè)置查看
              env.put(Context.PROVIDER_URL, "dns://10.17.45.239");

              
      DirContext ctx = new InitialDirContext(env);

              
      System.out.println("a:" + ctx);

              
      DirContext ctx1 = (DirContext) ctx.lookup("www.sina.com");

              
      System.out.println("b:" + ctx1);

              
      printAttributes("c:", ctx1.getAttributes(""));

              
      //從ctx.getAttributes("www.sina.com")與ctx1.getAttributes("")結(jié)果一樣
              printAttributes("d:", ctx.getAttributes("www.sina.com"));

              
      Attributes attrs1 = ctx.getAttributes("www.sina.com",

                      
      new String[] { "a" });

              
      Attributes attrs2 = ctx.getAttributes("www.163.com",

                      
      new String[] { "a" });

              
      Attributes attrs3 = ctx1.getAttributes("", new String[] { "a" });

              
      Attributes attrs4 = ctx.getAttributes("www.baidu.com",

                      
      new String[] { "a" });

              
      printAttributes("e:", attrs1);

              
      printAttributes("f:", attrs2);

              
      printAttributes("g:", attrs3);

              
      printAttributes("attrs4:", attrs4);

              
              
      System.out.println("nameParse:"+ctx1.getNameInNamespace());

              
      //list,此方法會(huì)導(dǎo)致程序lock
              
      //listEnumation("list:",ctx.list(""));
              
      //----------------------search
              Attributes matchAttrs = new BasicAttributes(true);

              
      matchAttrs.put(new BasicAttribute("a", "61.172.201.13"));

              
      NamingEnumeration answer = ctx1.search("www.sina.com", matchAttrs);

              
      printNamingEnumeration("search :", answer);

          
      }


          
      public static void printAttributes(String tag, Attributes attres)

                  
      throws Exception {

              
      for (NamingEnumeration ae = attres.getAll(); ae.hasMore();) {

                  
      Attribute attr = (Attribute) ae.next();

                  
      System.out

                          
      .println(tag

                                  
      + "-----------------------------------------------\nattribute: "

                                  
      + attr.getID());

                  
      /* Print each value */

                  
      for (NamingEnumeration e = attr.getAll(); e.hasMore(); System.out

                          
      .println("value: " + e.next()))

                      
      ;

              
      }

          
      }


          
      public static void listEnumation(String tag, NamingEnumeration name)

                  
      throws Exception {

              
      for (; name.hasMore();) {

                  
      NameClassPair nameClass = (NameClassPair) name.next();

                  
      System.out

                          
      .println(tag

                                  
      + "-----------------------------------------------\nattribute: "

                                  
      + nameClass.getName() + ":"

                                  
      + nameClass.getClassName());

              
      }

          
      }


          
      public static void printNamingEnumeration(String tag, NamingEnumeration e)

                  
      throws Exception {

              
      for (; e.hasMore();) {

                  
      Attribute attr = (Attribute) e.next();

                  
      System.out

                          
      .println(tag

                                  
      + "-----------------------------------------------\nattribute: "

                                  
      + attr.getID());

                  
      /* Print each value */

                  
      for (NamingEnumeration ve = attr.getAll(); ve.hasMore(); System.out

                          
      .println("value: " + ve.next()))

                      
      ;

              
      }

          
      }

      }

       

      上例中,在jdk1.4中可運(yùn)行通過(guò)。對(duì)于DNS Service Provider更詳細(xì)的文檔,大家可通過(guò)此URL下載:http://java.sun.com/products/jndi/downloads/index.html

      上例一個(gè)可能運(yùn)行結(jié)果如下:

      a:javax.naming.directory.InitialDirContext@1bf216a
      b:com.sun.jndi.dns.DnsContext@3a6727
      c:-----------------------------------------------
      attribute: CNAME
      value: us.sina.com.cn.
      d:-----------------------------------------------
      attribute: CNAME
      value: us.sina.com.cn.
      e:-----------------------------------------------
      attribute: A
      value: 218.30.66.67
      value: 218.30.66.68
      value: 218.30.66.69
      value: 218.30.66.70
      value: 218.30.66.71
      value: 218.30.66.56
      value: 218.30.66.57
      value: 218.30.66.58
      value: 218.30.66.59
      value: 218.30.66.60
      value: 218.30.66.61
      value: 218.30.66.62
      value: 218.30.66.63
      value: 218.30.66.64
      value: 218.30.66.65
      value: 218.30.66.66
      f:-----------------------------------------------
      attribute: A
      value: 220.181.28.42
      g:-----------------------------------------------
      attribute: A
      value: 218.30.66.68
      value: 218.30.66.69
      value: 218.30.66.70
      value: 218.30.66.71
      value: 218.30.66.56
      value: 218.30.66.57
      value: 218.30.66.58
      value: 218.30.66.59
      value: 218.30.66.60
      value: 218.30.66.61
      value: 218.30.66.62
      value: 218.30.66.63
      value: 218.30.66.64
      value: 218.30.66.65
      value: 218.30.66.66
      value: 218.30.66.67
      attrs4:-----------------------------------------------
      attribute: A
      value: 220.181.27.5
      nameParse:www.sina.com.
      Exception in thread "main" javax.naming.OperationNotSupportedException
      at com.sun.jndi.dns.DnsContext.c_search(Unknown Source)
      at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source)
      at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
      at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
      at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
      at com.sily.jndi.TestDNSJndi.main(TestDNSJndi.java:57)


      示例分析:
      通過(guò)分析代碼,我們可以看出我們從DNS服務(wù)器獲取了指定域名的IP地址,而且可以看出www.sina.com有多個(gè)IP.
      另外,可以看出從ctx.getAttributes("www.sina.com")得到的結(jié)果與ctx1.getAttributes("")結(jié)果一樣,這便是目錄操作的兩種模式,這兩種模式取得的結(jié)果是一樣的,這點(diǎn)可以參考API文檔(
      http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/directory/DirContext.html):
      There are two basic models of what attributes should be associated with. First, attributes may be directly associated with a DirContext object. In this model, an attribute operation on the named object is roughly...

      另外,還有一點(diǎn)需要注意,從ctx.getAttributes()方法返回的Attributes中包含多個(gè)Attribute,每個(gè)Attribute包含多個(gè)values,其它詳細(xì)內(nèi)容請(qǐng)參考API文檔
      最后,代碼
      NamingEnumeration answer = ctx1.search("www.sina.com", matchAttrs);試圖對(duì)ctx1進(jìn)行屬性查找,但是拋出了異常,查看 DNS Service Provider 的文檔可知,DNS Service Provider 沒有提供對(duì)search方法的支持,大家可用其它的SP來(lái)測(cè)試此方法,如LDAP SP

      總結(jié):

      此例只是簡(jiǎn)單地演示的JNDI的目錄操作,對(duì)于目錄操作的其它高級(jí)主題如Search,Search Scope,Count Limit,Composite Names 等沒有詳細(xì)介紹,請(qǐng)參考其它相關(guān)文檔.

      posted @ 2010-06-16 22:50  chinaifne  閱讀(6617)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产精品污双胞胎在线观看| 爱啪啪av导航| 国产精品免费第一区二区| gogogo高清在线播放免费| 国产乱弄免费视频观看| 色情无码一区二区三区| 性色av不卡一区二区三区| 亚洲欧洲精品一区二区| 性欧美vr高清极品| 国产午夜影视大全免费观看| 日韩精品专区在线影观看| 99热成人精品热久久66| 日韩在线观看精品亚洲| 许昌县| 国产精品色内内在线播放| 护士张开腿被奷日出白浆| 无码里番纯肉h在线网站| 亚洲成av人片无码不卡播放器| 亚洲国产高清第一第二区| 国产一级二级三级毛片| 国产精品中文字幕在线看| av 日韩 人妻 黑人 综合 无码| 国产精品二区中文字幕| 综合久青草视频在线观看| 日韩中文字幕av有码| 国产激情艳情在线看视频| 国产无遮挡又黄又爽在线视频| 中文字幕一区有码视三区| 熟女女同亚洲女同中文字幕| 一本无码人妻在中文字幕免费 | 99精品国产精品一区二区| 国产高清自产拍av在线| 久久综合五月丁香六月丁香| 亚洲精品乱码久久久久久蜜桃图片| 人妻系列无码专区69影院| 亚洲国产午夜精品理论片妓女 | 久久精品无码一区二区小草| 亚洲女初尝黑人巨| av在线播放无码线| 日韩中文字幕av有码| 色婷婷综合久久久久中文一区二区 |