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列出了导致间歇性连接问题。

相关问题