WebSphereApplicationServerLDAP连接池

WebSphereApplicationServerLDAP连接池,ldap,websphere,connection-pooling,websphere-8,Ldap,Websphere,Connection Pooling,Websphere 8,我们正在使用WebSphereApplicationServer8.5.0.0。我们需要查询LDAP服务器以获取客户详细信息。我尝试按照描述和配置连接池 我传递了以下JVM参数 -Dcom.sun.jndi.ldap.connect.pool.maxsize=5 -Dcom.sun.jndi.ldap.connect.pool.timeout=60000 -Dcom.sun.jndi.ldap.connect.pool.debug=all 下面是一个示例代码片段 Hashtable<St

我们正在使用WebSphereApplicationServer8.5.0.0。我们需要查询LDAP服务器以获取客户详细信息。我尝试按照描述和配置连接池

我传递了以下JVM参数

-Dcom.sun.jndi.ldap.connect.pool.maxsize=5
-Dcom.sun.jndi.ldap.connect.pool.timeout=60000
-Dcom.sun.jndi.ldap.connect.pool.debug=all
下面是一个示例代码片段

Hashtable<String,String> env = new Hashtable<String,String>();
...
...
env.put("com.sun.jndi.ldap.connect.pool", "true");
env.put("com.sun.jndi.ldap.connect.timeout", "5000");
InitialDirContext c = new InitialDirContext(env);
...
...
c.close();
Hashtable env=new Hashtable();
...
...
put(“com.sun.jndi.ldap.connect.pool”、“true”);
put(“com.sun.jndi.ldap.connect.timeout”,“5000”);
InitialDirContext c=新的InitialDirContext(env);
...
...
c、 close();
我这里有两个问题

  • 当我第六次调用该服务时,我得到javax.naming.ConnectionException:等待连接时超时:5000ms。我检查了连接池调试日志,发现尽管在finally块中安全地关闭了上下文,但连接并没有立即返回到连接池。连接在一段时间后释放,并在释放后的一段时间内过期。之后,如果我再次调用该服务,它将连接到LDAP服务器,但正在创建新的连接

  • 我尝试执行代码,并且能够看到连接池调试日志。但是,正在将日志记录到System.Err日志中。这是一个问题吗?我可以忽略它吗

  • 但是,当我将代码作为独立应用程序运行时(多线程,循环次数为50次),连接会立即返回/释放


    有人能告诉我我做错了什么吗?

    有趣的是,maxsize是5,而你的失败是6。尝试将maxsize设置为125。(我检查了我们的设定值)。此外,您可能希望按照IBM的建议对此进行配置。(我找到了这个链接)为了确保,您可以通过SSL访问LDAP吗?您提供的第二个链接告诉您,默认情况下,只有非SSL普通或无身份验证连接被池化,并且如果您使用的是SSLWe,而不是通过SSL使用ldap,则还必须指定“-Dcom.sun.jndi.ldap.connect.pool.protocol=plain SSL”。我们使用简单的身份验证。这是一个开发服务器。不确定prod LDAP服务器。