<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    走在架構師的大道上 Jack.Wang's home

    Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks

           以前經常在諸如 weblogic, jboss, tomcat 服務器上配置 JNDI 服務,代碼也很簡單。但還沒有用過 LDAP 服務器. LDAP 用層次(樹) 結構存儲數據。 要引用樹中的項目,就需要列出樹中的節點名稱。從所要項目開始,一直向樹頂跟蹤。樹中每個節點都有 nodetype=value 形式的唯一 COM 域。 域組件的節點類型為 DC ,葉子節點類型為 O, LDAP 有屬性的概念,同時也有類的概念。因此,可以依據屬性或類檢索。
           Java 很是方便只要通過 JNDI 透過 LDAP 就可操作 LDAP, NIS, NDS, NT 等目錄服務器.

    例子1.
           通過屬性檢索

    import javax.naming.NamingEnumeration;
    import javax.naming.directory.Attribute;
    import javax.naming.directory.Attributes;
    import javax.naming.directory.BasicAttributes;
    import javax.naming.directory.InitialDirContext;
    import javax.naming.directory.SearchResult;

    /**
    * @author Jack.Wang
    *
    */
    public class NameSearch {
    public static void main(String args[]) {
    try {
    InitialDirContext ctx = new InitialDirContext();
    BasicAttributes searchAttrs = new BasicAttributes();
    searchAttrs.put("sn", "Tippin");
    NamingEnumeration objs = ctx.search(
    "ldap://ldap.jack.com/o=test search, dc=test,dc=com",
    searchAttrs);
    while (objs.hasMoreElements()) {
    SearchResult match = (SearchResult) objs.nextElement();
    System.out.println(match.getName());
    Attributes attrs = match.getAttributes();
    NamingEnumeration e = attrs.getAll();
    while (e.hasMoreElements()) {

    Attribute attr = (Attribute) e.nextElement();
    System.out.println(attr.getID());
    for (int i = 0; i < attr.size(); i++) {
    if (i > 0) {
    System.out.println(",");
    } else {
    System.out.println(attr.get(i));
    }
    }
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

           例子2.
               通過類名字檢索
    import javax.naming.NamingEnumeration;
    import javax.naming.NamingException;
    import javax.naming.directory.Attribute;
    import javax.naming.directory.Attributes;
    import javax.naming.directory.BasicAttributes;
    import javax.naming.directory.InitialDirContext;
    import javax.naming.directory.SearchControls;
    import javax.naming.directory.SearchResult;

    /**
    * @author Jack.Wang
    *
    */
    public class AllSearch {
    public static void main(String[] args) {
    try {
    InitialDirContext ctx = new InitialDirContext();
    SearchControls searchControls = new SearchControls();
    searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
    NamingEnumeration objs = ctx
    .search(
    "ldap://ldap.jack.com/o=test search, dc=test,dc=com",
    "(objectClass=*)", searchControls);
    while (objs.hasMoreElements()) {

    SearchResult match = (SearchResult) objs.nextElement();
    System.out.println(match.getName());
    Attributes attrs = match.getAttributes();
    NamingEnumeration e = attrs.getAll();
    while (e.hasMoreElements()) {

    Attribute attr = (Attribute) e.nextElement();
    System.out.println(attr.getID());
    for (int i = 0; i < attr.size(); i++) {
    if (i > 0) {
    System.out.println(",");
    } else {
    System.out.println(attr.get(i));
    }
    }
    }
    }
    } catch (NamingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    BasicAttributes searchAttrs = new BasicAttributes();
    }
    }
         例子3.
              基于文件系統的 binding

    import java.util.Hashtable;

    import javax.naming.Context;
    import javax.naming.InitialContext;

    public class TestBinding {
    private String serverName = "jackhost";

    private int portNumber = 1433;

    private String login = "jack";

    private String password = "19810622";

    private String databaseName = "jack";

    private String filePath = "jdbc/jack";

    public TestBinding() {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.fscontext.RefFSContextFactory");
    env.put(javax.naming.Context.PROVIDER_URL, "file:d:\\");
    try {
    Context ctx = new InitialContext(env);
    AnalogyDB ds = new AnalogyDB();
    ds.setServerName(serverName);
    ds.setPortNumber(portNumber);
    ds.setUser(login);
    ds.setPassword(password);
    ds.setDatabaseName(databaseName);
    ds.setDescription("JDBC Datasource connection.");
    ctx.bind(filePath, ds);
    ctx.close();
    } catch (Exception e) {
    System.err.println("ERROR " + e.getMessage());
    }
    }

    public static void main(String[] args) {
    TestBinding test = new TestBinding();
    }
    }

            例子3.
            基于文件系統的 lookup
    import java.sql.Connection;
    import java.util.Hashtable;

    import javax.naming.Context;
    import javax.naming.InitialContext;

    /**
    *
    * @author Jack.Wang
    *
    */
    public class TestLookup {
    public TestLookup() {
    try {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.fscontext.RefFSContextFactory");
    env.put(javax.naming.Context.PROVIDER_URL, "file:d:\\");
    Context ctx = new InitialContext(env);
    AnalogyDB ds = (AnalogyDB) ctx
    .lookup("jdbc/jack");
    Connection connection = ds.getConnection();
    System.out.println("Connection Established.");
    connection.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    public static void main(String[] args) {
    TestLookup test = new TestLookup();
    }
    }




    本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
    posted on 2007-11-07 21:03 Jack.Wang 閱讀(3601) 評論(1)  編輯  收藏 所屬分類: 開發技術

    Feedback

    # re: Java 在基于文件系統的 JNDI 和 JNDI+LDAP 協議應用實例[未登錄] 2008-03-21 08:47 jack
    不知道你 有沒有使用JNDI來和openldap服務器連接?  回復  更多評論
      

    主站蜘蛛池模板: 精品久久久久久国产免费了 | 亚洲乱亚洲乱妇无码麻豆| 亚洲伊人久久大香线蕉AV| 免费A级毛片无码A∨中文字幕下载| 亚洲情XO亚洲色XO无码| 九九综合VA免费看| 亚洲开心婷婷中文字幕| 中文字幕av无码不卡免费| 亚洲国产成人高清在线观看| a毛片全部播放免费视频完整18| 久久久久亚洲av毛片大| 热久久这里是精品6免费观看| 亚洲春色在线视频| 67pao强力打造高清免费| 亚洲伊人久久大香线蕉啊| 18禁无遮挡无码网站免费| 日日摸日日碰夜夜爽亚洲| 亚洲美女高清一区二区三区 | 免费无码又爽又刺激毛片| 噜噜噜亚洲色成人网站| 国产国拍精品亚洲AV片| 99蜜桃在线观看免费视频网站| 亚洲精品偷拍无码不卡av| 成人免费无码大片a毛片软件| 国产亚洲精品91| 国产亚洲色婷婷久久99精品| 亚洲人成在线免费观看| 色综合久久精品亚洲国产| 亚洲日本va中文字幕久久| 精品国产污污免费网站aⅴ| 日韩国产精品亚洲а∨天堂免| 久久久久亚洲精品天堂久久久久久 | 精品国产亚洲男女在线线电影 | 成人免费a级毛片| 国产99精品一区二区三区免费| 亚洲av色福利天堂| 日本免费高清一本视频| 99视频在线免费观看| 中国亚洲呦女专区| 亚洲午夜久久久影院伊人| 毛片基地免费观看|