首页 > 解决方案 > 优化 ldap 连接延迟

问题描述

对于每个请求,Ldap 上下文初始化大约需要 17 秒,这对于我们的应用程序来说是非常高的并且不是预期的。因此,我已经初始化了一次上下文并为每个其他请求使用了相同的上下文,但是我得到了连接重置异常。

不知道这是否是不好的做法,但为了防止在每次搜索之前发生初始化,我在初始化后使用相同的上下文。这是示例代码:

private static volatile DirContext context ;

public synchronized static DirContext GetLdapDirContext() throws NamingException {

if(context != null) {
    return context;
}

Hashtable<String, Object> env = setLdapEnvironment();
context = new InitialLdapContext(env, null);
return context;

}

    private static Hashtable<String, Object> setLdapEnvironment() {

Hashtable<String, Object> ldapEnvironment = new Hashtable<>(11);
ldapEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
ldapEnvironment.put(Context.PROVIDER_URL, "ldaps://ldap.amazon.com:636/");
ldapEnvironment.put(Context.SECURITY_PRINCIPAL, "uid=****,ou=ldap users,ou=infrastructure,o=amazon.com");
ldapEnvironment.put(Context.SECURITY_PROTOCOL, "ssl");
ldapEnvironment.put(Context.SECURITY_AUTHENTICATION, "simple");

return ldapEnvironment;

}

反正有没有减少延迟?如果可行,使用相同的上下文是否安全?

标签: javaldap

解决方案


推荐阅读