2

我在嘗試連接Active Directory時偶爾會遇到此異常。CommunicationException [根異常是ConnectException:連接超時]

javax.naming.CommunicationException: <ServerIP>:<PORT> 
    [Root exception is java.net.ConnectException: Connection timed out: connect] 

這裏是我的代碼:

DirContext ctx = null; 
    Properties env = new Properties(); 

    env.put(Context.SECURITY_PRINCIPAL, <Bind_USER>); 
    env.put(Context.SECURITY_CREDENTIALS, <Bind_USER_PWD>); 
    env.put(Context.PROVIDER_URL, "ldap://<ServerIP>:<PORT>");    
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 

    ctx = new InitialDirContext(env); 

獲取連接超時異常此行ctx = new InitialDirContext(env);。 它不會每次都發生,但經常發生。

請告訴我,如何擺脫這個問題?

回答

1

偶爾也會發生這種情況。由於它只發生在1%的時間,我懷疑這是Juned的答案中列出的任何原因,因爲我的設置沒有任何變化。

對我來說,它發生得非常隨機,在我沒有做任何具體行動的情況下被修復。這讓我相信here提供的答案是正確的:

這很可能是連接泄漏。連接超時可能由許多事情引起,但其中大多數會每次都引起它。 LDAP服務器很可能會同時處理最大數量的連接,除此之外它不會調用accept(),因此新的傳入連接仍會保留在積壓隊列中,這會填滿,這可能會導致進一步的連接到時間出。

@OP您是否可以在服務器上運行netstat -anp來檢查上述假設?你還可以在LDAP服務器上設置連接空閒超時嗎?這可以解決連接泄漏問題,但是可以通過暴力破解其他方式。

0

有同樣的間歇性問題,雖然配置指着一個域名(而非IP)。

通過使用NSLOOKUP,發現一個不存在的DC列出了導致間歇性連接問題。

相關問題