java - 如何通过 LDAP SSL 启用连接池?

标签 java ssl ldap connection-pooling

好的,所以我正在将我的应用程序从非 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/

相关文章:

java - 为什么我们通常使用||结束 |?有什么区别?

node.js - 我无法为我的 Google App Engine 禁用 http 请求

windows - LDAP 服务器签名协议(protocol)

java - Sonar Web Service API,按开发者过滤数据

java - 为什么 StreamHandler 不捕获日志消息?

java - java接收html网页时出错

java - 在 LDAP 中存储照片

java - 如何使用 Spring 和 Java 从 LDAP 获取 userPassword 属性

java - 如何从 testNG 测试计划中传递 invocationCount 的值

android - 代理 SSL 流量时,Charles 代理如何工作?