2011-08-18 42 views
0

我測試LDAP連接我得到一個異常javax.naming.NameNotFountException: [LDAP: error code 32 - No Such Object]; remaining name = 'DC=my-company, DC=group'如何使用JNDI

它的原因可能是,該DN 'DC=my-company, DC=group'是無效的。但是,如果我將ldapAdServer,ldapUsername,ldapPassword設置爲無效值,也會發生此類異常。所以,我想我的LDAP連接沒有正確設置。

如何測試LDAP連接是否成功創建?

回答

0

No Such Object是當請求的對象不存在時由目錄服務器返回的錯誤。使用正確的基礎對象而不是dc=my-company,dc=com

如果您不知道基礎對象,則可以通過查詢root DSE來發現目錄前綴(或命名上下文)。如果您不知道正確的基礎對象,則可以使用前綴或命名上下文作爲基礎對象,直到發現基礎對象(應該比前綴或命名上下文更接近數據)。

更一般地說,如果您確定您的目錄服務器將通過LDAP訪問,則不應使用JNDI。您將能夠快速開發出工作實用的代碼,使其他人更容易理解,如果您使用專業質量的LDAP SDK(如UnboundID中的那個),則可以更高效地進行開發。標準版本免費且附帶源代碼。

+0

非常感謝! – mtm

0

但是,如果我將ldapAdServer, ldapUsername,ldapPassword設置爲無效值,也會發生此類異常。

不,它不。你會得到一個不同的例外。

+0

好吧,我會得到一個不同的例外,如果我將正確連接到LDAP,不是嗎? – mtm

+0

@mtm這個評論對我來說毫無意義。如果連接正確,則可以獲得您在問題中提到的NameNotFoundException。如果你沒有足夠的連接來進行搜索,你不可能得到這個例外。例如,如果憑證錯誤,您將得到一個AuthenticationException。 – EJP

+0

我將ldapAdServer更改爲「0.0.0.777」,將ldapUsername更改爲「yxcv」。沒有這樣的服務器,沒有這樣的用戶。所以,我無法正確連接。畢竟,我得到了相同的NameNotFoundException。這就是爲什麼我認爲,這並不取決於我是否連接。如果我連接正確,我真的很驚訝NameNotFoundException發生。感謝您的回覆@ejp! – mtm