<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服務器連接?  回復  更多評論
      

    主站蜘蛛池模板: 黑人粗长大战亚洲女2021国产精品成人免费视频 | 久久精品国产亚洲77777| 黄色大片免费网站| 国产一级理论免费版| 亚洲乱理伦片在线观看中字| 在线观看日本免费a∨视频| 亚洲日韩中文字幕天堂不卡 | 最近中文字幕mv免费高清电影| 亚洲欧洲国产精品久久| 永久在线免费观看| 亚洲综合无码一区二区三区| 日韩亚洲国产高清免费视频| 亚洲日韩国产一区二区三区在线| 青青草国产免费久久久下载| 香蕉视频免费在线| 亚洲色婷婷一区二区三区| 免费视频成人手机在线观看网址| 蜜芽亚洲av无码精品色午夜| 无人在线观看免费高清视频| 亚洲欧美日韩国产精品一区| 免费在线观看理论片| 99久久成人国产精品免费| 99久久亚洲精品无码毛片| 成年人网站在线免费观看| 特黄aa级毛片免费视频播放| 国产精品亚洲片在线| 久久久久久久91精品免费观看| 日韩色视频一区二区三区亚洲| 久久久久亚洲精品无码网址 | 国产中文在线亚洲精品官网| 免费一区二区三区| 亚洲影视自拍揄拍愉拍| 免费真实播放国产乱子伦| 在线观看肉片AV网站免费| 亚洲AV色吊丝无码| 亚洲欧洲日本在线| 97人妻无码一区二区精品免费| 日本亚洲欧美色视频在线播放| 亚洲精品一品区二品区三品区| 韩国免费一级成人毛片| 在线免费视频你懂的|