好的,所以我正在将我的应用程序从非 SSL 转移到 SSL 连接到我的 LDAP 服务器。在非 SSL 中运行应用程序时,连接池工作正常。但是,当我切换到 SSL 时,连接池不再有效。
研究时here我意识到我从未将“com.sun.jndi.ldap.connect.pool.protocol”属性设置为“普通 ssl”,因为默认情况下它设置为普通。我认为这是问题所在。
当我实现包含“普通 ssl”的更改时,它并没有解决问题,连接池仍然没有被使用。
我还缺少其他设置吗?
相关代码:
Hashtable LDAPEnvironment = new Hashtable();
LDAPEnvironment.put(Context.SECURITY_AUTHENTICATION, SECURITY_AUTHENTICATION);
LDAPEnvironment.put(Context.SECURITY_PRINCIPAL, SECURITY_PRINCIPAL);
LDAPEnvironment.put(Context.SECURITY_CREDENTIALS, SECURITY_CREDENTIALS);
LDAPEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
LDAPEnvironment.put(Context.PROVIDER_URL, PROVIDER_URL );
LDAPEnvironment.put(Context.SECURITY_AUTHENTICATION, "simple");
LDAPEnvironment.put("java.naming.ldap.version", versionOfLDAP );
if (ldapProtocol != null && ldapProtocol.equalsIgnoreCase("SSL")){
LDAPEnvironment.put(Context.SECURITY_PROTOCOL,"ssl");
LDAPEnvironment.put("com.sun.jndi.ldap.connect.pool.protocol","plain ssl");
}
LDAPEnvironment.put("com.sun.jndi.ldap.connect.pool", "true");
最佳答案
我发现了问题。该文档明确指出,这些属性是系统属性,不是环境属性。我将这些设置为环境属性。 :-)
关于java - 如何通过 LDAP SSL 启用连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825652/