好的,所以我将我的应用程序从非SSL连接到我的LDAP服务器的SSL连接.在非SSL中运行应用程序时,连接池工作正常.但是当我切换到SSL时,连接池不再有效.
在研究here时,我意识到我从未将“com.sun.jndi.ldap.connect.pool.protocol”属性设置为“plain ssl”,因为默认情况下它设置为plain.我以为这就是问题所在.
当我实现更改以包含“plain 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,ssl,ldap,connection-pooling
来源: https://codeday.me/bug/20190710/1421598.html