LDAP之三:利用开源框架LDAPTemplate和JLDAP访问LDAP
生活随笔
收集整理的這篇文章主要介紹了
LDAP之三:利用开源框架LDAPTemplate和JLDAP访问LDAP
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LDAP現在用的越來越多,所謂LDAP既Lightweight Directory Access Protocol。關于它的一些基本知識,我在這里就不做系統的介紹了,網上有很多的資料。我主要說一下在JAVA的語言環境中,怎樣來操作LDAP。
在這里,我推薦兩個工具:LDAPTemplate和JLDAP。 網上的資料比較少,而且不少都是E文的,可能英語不太好的朋友,就很難入門了。在這我把我的經驗總結一下,和大家分享。 LDAPTemplate是基于Spring1.2.7來開發的,其用法和Spring的JDBCTemplate差不多。最初,我是用這個開源的框架來對LDAP進行操作的,但是后來由于開發工具的轉變,由eclipse轉到了RAD上,而RAD所用的JDK卻不支持Spring1.2.7(看來網上的謠傳沒錯,IBM總在某個陰暗的角落在和SUN作對),沒辦法,只好另辟蹊徑。后來發現了JLDAP,經過一番研究,發現它用起來并不比LDAPTemplate復雜,但在對象持久化方面需要自己去做,而LDAPTemplate通過AttributeMappers就可以把查詢到的結果轉換成POJO了。下面來具體的說一下怎么用JLDAP。首先要去下載一下JLDAP,具體下載的地址可以上網去搜。下載下來以后,lib里面的是開發所要用到的包,doc里面是幫助文檔API和示例程序。 先說說怎么查詢,其實查詢非常的簡單,如果用過JDBC連數據庫的話,那么連LDAP相比起來更加的簡單。 首先建立一個LDAPConnection對象。這個對象也可以通過連接池PoolManager來獲得。LDAPConnection con = new LDAPConnection();然后運行connect方法和bind方法。連接上LDAP以后,就可以通過search方法來查找數據了。示例程序如下:java 代碼
LDAPConnection lc = new LDAPConnection();
try {
lc.connect("6.1.19.154",389);
lc.bind(LDAPConnection.LDAP_V3,"cn=xxx","xxxxxx");
LDAPSearchResults rs = lc.search("dc=excel,dc=com,dc=cn",LDAPConnection.SCOPE_SUB,"objectClass=*",null,false);
int count = 0;
while(rs.hasMore()){
LDAPEntry entry = rs.next();
System.out.println(entry.getDN());
count++;
}
System.out.println("共有"+count+"條記錄。");
} catch (LDAPException e) {
System.err.print("連接異常! ");
e.printStackTrace();
}
雖然LDAP主要是用來進行讀操作的,但不可避免的,我們也要向其中添加一些新的數據。用JLDAP向LDAP服務器添加數據的操作也是非常簡單的。
為什么說非常簡單呢,因為大體上也就是分三步。第一步,連接LDAP服務器。第二步,建立一個要添加的新的實體LDAPEntry,并添加相應的屬性。第三步,通過add方法向LDAP中添加實體。 首先說連接服務器。還是非常簡單的三步:java 代碼
LDAPConnection con = new LDAPConnection();
con.connect("hostname",hostport);
con.bind("version","DN","password");
連接后,可以建實體了,也就相當與為數據庫添加一條新的記錄。這里用到了幾個類:LDAPEntry、LDAPAttribute和LDAPAttributeSet。首先建立一個LDAPAttributeSet,然后建立各種的LDAPAttribute,把他們add到LDAPAttributeSet中。然后建立一個LDAPEntry。其構造函數有兩個參數,一個是這個LDAPEntry的DN,一個是他的屬性集合,也就是LDAPAttributeSet。 最后,調用LDAPConnection實例化對象的add方法,把實體添加到服務器中。然后別忘了斷開連接喔。整體的示例代碼如下:java 代碼
LDAPAttributeSet attributeSet = new LDAPAttributeSet();
attributeSet.add(new LDAPAttribute("objectclass", new String(
"inetOrgPerson")));
attributeSet.add(new LDAPAttribute("cn", new String[] { "李",
"Jim Smith", "Jimmy Smith" }));
attributeSet.add(new LDAPAttribute("givenname", new String[] { "測試",
"Jim", "Jimmy" }));
attributeSet.add(new LDAPAttribute("sn", new String("Smith")));
attributeSet.add(new LDAPAttribute("telephonenumber", new String(
"1 801 555 1212")));
attributeSet.add(new LDAPAttribute("mail",
new String("JSmith@Acme.com")));
attributeSet.add(new LDAPAttribute("userpassword", new String(
"newpassword")));
LDAPEntry entry = new LDAPEntry("cn=李,cn=Lizl,dc=excel,dc=com,dc=cn",
attributeSet);
LDAPConnection con = new LDAPConnection();
con.connect("6.1.19.154", 389);
con.bind(LDAPConnection.LDAP_V3, "cn=XXX", "XXXXXX");
con.add(entry);
System.out.println("成功的添加了一條記錄!");
con.disconnect();
這里來說一說怎么從LDAP中刪除一個實體。 首先,連接LDAP服務器,然后通過DN來刪除一個實體。示例代碼如下:java 代碼
LDAPConnection con = new LDAPConnection();
con.connect("6.1.19.154",389);
con.bind(LDAPConnection.LDAP_V3,"cn=XXXX","XXXXXX");
con.delete("cn=JSmith,dc=excel,dc=com,dc=cn");
System.out.println("成功刪除一條記錄!");
在這里,我推薦兩個工具:LDAPTemplate和JLDAP。 網上的資料比較少,而且不少都是E文的,可能英語不太好的朋友,就很難入門了。在這我把我的經驗總結一下,和大家分享。 LDAPTemplate是基于Spring1.2.7來開發的,其用法和Spring的JDBCTemplate差不多。最初,我是用這個開源的框架來對LDAP進行操作的,但是后來由于開發工具的轉變,由eclipse轉到了RAD上,而RAD所用的JDK卻不支持Spring1.2.7(看來網上的謠傳沒錯,IBM總在某個陰暗的角落在和SUN作對),沒辦法,只好另辟蹊徑。后來發現了JLDAP,經過一番研究,發現它用起來并不比LDAPTemplate復雜,但在對象持久化方面需要自己去做,而LDAPTemplate通過AttributeMappers就可以把查詢到的結果轉換成POJO了。下面來具體的說一下怎么用JLDAP。首先要去下載一下JLDAP,具體下載的地址可以上網去搜。下載下來以后,lib里面的是開發所要用到的包,doc里面是幫助文檔API和示例程序。 先說說怎么查詢,其實查詢非常的簡單,如果用過JDBC連數據庫的話,那么連LDAP相比起來更加的簡單。 首先建立一個LDAPConnection對象。這個對象也可以通過連接池PoolManager來獲得。LDAPConnection con = new LDAPConnection();然后運行connect方法和bind方法。連接上LDAP以后,就可以通過search方法來查找數據了。示例程序如下:java 代碼
LDAPConnection lc = new LDAPConnection();
try {
lc.connect("6.1.19.154",389);
lc.bind(LDAPConnection.LDAP_V3,"cn=xxx","xxxxxx");
LDAPSearchResults rs = lc.search("dc=excel,dc=com,dc=cn",LDAPConnection.SCOPE_SUB,"objectClass=*",null,false);
int count = 0;
while(rs.hasMore()){
LDAPEntry entry = rs.next();
System.out.println(entry.getDN());
count++;
}
System.out.println("共有"+count+"條記錄。");
} catch (LDAPException e) {
System.err.print("連接異常! ");
e.printStackTrace();
}
雖然LDAP主要是用來進行讀操作的,但不可避免的,我們也要向其中添加一些新的數據。用JLDAP向LDAP服務器添加數據的操作也是非常簡單的。
為什么說非常簡單呢,因為大體上也就是分三步。第一步,連接LDAP服務器。第二步,建立一個要添加的新的實體LDAPEntry,并添加相應的屬性。第三步,通過add方法向LDAP中添加實體。 首先說連接服務器。還是非常簡單的三步:java 代碼
LDAPConnection con = new LDAPConnection();
con.connect("hostname",hostport);
con.bind("version","DN","password");
連接后,可以建實體了,也就相當與為數據庫添加一條新的記錄。這里用到了幾個類:LDAPEntry、LDAPAttribute和LDAPAttributeSet。首先建立一個LDAPAttributeSet,然后建立各種的LDAPAttribute,把他們add到LDAPAttributeSet中。然后建立一個LDAPEntry。其構造函數有兩個參數,一個是這個LDAPEntry的DN,一個是他的屬性集合,也就是LDAPAttributeSet。 最后,調用LDAPConnection實例化對象的add方法,把實體添加到服務器中。然后別忘了斷開連接喔。整體的示例代碼如下:java 代碼
LDAPAttributeSet attributeSet = new LDAPAttributeSet();
attributeSet.add(new LDAPAttribute("objectclass", new String(
"inetOrgPerson")));
attributeSet.add(new LDAPAttribute("cn", new String[] { "李",
"Jim Smith", "Jimmy Smith" }));
attributeSet.add(new LDAPAttribute("givenname", new String[] { "測試",
"Jim", "Jimmy" }));
attributeSet.add(new LDAPAttribute("sn", new String("Smith")));
attributeSet.add(new LDAPAttribute("telephonenumber", new String(
"1 801 555 1212")));
attributeSet.add(new LDAPAttribute("mail",
new String("JSmith@Acme.com")));
attributeSet.add(new LDAPAttribute("userpassword", new String(
"newpassword")));
LDAPEntry entry = new LDAPEntry("cn=李,cn=Lizl,dc=excel,dc=com,dc=cn",
attributeSet);
LDAPConnection con = new LDAPConnection();
con.connect("6.1.19.154", 389);
con.bind(LDAPConnection.LDAP_V3, "cn=XXX", "XXXXXX");
con.add(entry);
System.out.println("成功的添加了一條記錄!");
con.disconnect();
這里來說一說怎么從LDAP中刪除一個實體。 首先,連接LDAP服務器,然后通過DN來刪除一個實體。示例代碼如下:java 代碼
LDAPConnection con = new LDAPConnection();
con.connect("6.1.19.154",389);
con.bind(LDAPConnection.LDAP_V3,"cn=XXXX","XXXXXX");
con.delete("cn=JSmith,dc=excel,dc=com,dc=cn");
System.out.println("成功刪除一條記錄!");
總結
以上是生活随笔為你收集整理的LDAP之三:利用开源框架LDAPTemplate和JLDAP访问LDAP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LDAP之一:OpenLDAP管理员指南
- 下一篇: 查看、关闭被占用的端口