<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 閱讀(3605) 評論(1)  編輯  收藏 所屬分類: 開發技術

    Feedback

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

    主站蜘蛛池模板: 亚洲国产小视频精品久久久三级 | 国产小视频在线观看免费| 亚洲av成人无码久久精品| 中国好声音第二季免费播放| 精品一区二区三区免费| 久久久青草青青国产亚洲免观 | 狠狠热精品免费观看| 嫩草在线视频www免费观看 | 国产成人亚洲综合网站不卡| 在线观看免费中文视频| 久久亚洲美女精品国产精品| 无码精品一区二区三区免费视频 | 亚洲人成网站在线播放影院在线| 中文字幕手机在线免费看电影| 国产gv天堂亚洲国产gv刚刚碰| 中文字幕乱码免费看电影| 水蜜桃亚洲一二三四在线| 99国产精品免费观看视频| 亚洲国产成人久久99精品| 欧美大尺寸SUV免费| 国产成人精品亚洲一区| 亚洲国产精品日韩专区AV| a级毛片毛片免费观看久潮喷| 亚洲精品国产成人专区| 91成人免费观看网站| 亚洲中文无码亚洲人成影院| 国产免费爽爽视频免费可以看| 一级毛片a免费播放王色电影 | 一个人看的www在线免费视频 | 99精品视频免费在线观看| 亚洲一级片在线观看| 国产乱子伦精品免费无码专区| 精品国产污污免费网站入口| 亚洲第一区香蕉_国产a| 成人免费视频88| 久久亚洲精品成人无码网站| 日韩av无码成人无码免费| 国产精品手机在线亚洲| 亚洲av中文无码乱人伦在线r▽ | 一二三四在线播放免费观看中文版视频 | 亚洲精品无码mⅴ在线观看|