java - 优化 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;
}
反正有没有减少延迟?如果可行,使用相同的上下文是否安全?
解决方案
推荐阅读
- javascript - using jquery ui autocomplete but styles hiding
- reactjs - Two onChange Events for One TextField is Not Executing Both onChange Events
- powershell - 3 数组 ForEach 循环 SQL 查询
- scikit-learn - 在 GridSearchCV 中处理训练和测试集
- ios - 材质扩展面板中的 Angular 材质单选按钮在 iOS 13 中滚动时消失
- laravel - 在 Laravel Eloquent 中需要帮助以进行多重连接
- logging - 在凭据提供程序中捕获 RDP 客户端 IP
- flutter - 如何创建可扩展/可收缩的水平 ListView?
- angular - 有没有办法在其父组件中使用相应输入的垫子自动完成功能?
- python - How to enter parameters into a function when using pandas apply