您的担心可能是有根据的:池化减少了套接字连接的垃圾收集和暂停时间,但我强烈建议您对照 VisualVM 之类的分析器检查您的假设。我曾经解决的每一个性能问题都不是我想象的那样。不要盲目猜测你的代码!
假设您在 Sun/Oracle JVM 上,有一个属性可以启用透明池:
Hashtable env = new Hashtable();
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=myroot");
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put("com.sun.jndi.ldap.connect.pool", "true");
DirContext ctx = new InitialDirContext(env);
ConnectionUtil 类不允许设置此属性,但如果必须使用 ConnectionUtil,可以尝试在 JVM 上设置以下属性:
-Dcom.sun.jndi.ldap.connect.pool=true
不确定这是否会起作用。您必须使用 wireshark 或其他东西来验证行为。