环境:
suse9 sp3+jdk_5_11+jboss4.05GA+eDirectory88问题描述:
有一个模块(ldap访问模块)对jndi函数InitialLdapContext()进行封装,使用的初始化环境变量是
com.sun.jndi.ldap.connect.pool=true
com.sun.jndi.ldap.connect.pool.initsize=2
com.sun.jndi.ldap.connect.pool.maxsize=3其他模块都通过ldap访问模块来对ldap服务器进行访问。
按理说已经配置了连接池的最大个数是3,这样通过netstat -nap来看,与ldap服务器应该最大只有3个连接的。但是我们运行几个小时后,通过netstat发现我们程序与ldap服务器有几十个连接(状态是已经连接),而且一直保持着。在jdk文档中发现InitialLdapContext函数不是线程安全的,所以我们对new InitialLdapContext()操作加了一个锁(锁1)。
对Context.close()也加了一个锁(锁2)。结果改了之后发现仍然有几十个连接。请各位兄弟门帮忙指点。