Active directory InitialDirContext对象是否应该每次都显式关闭?

Active directory InitialDirContext对象是否应该每次都显式关闭?,active-directory,ldap,Active Directory,Ldap,有一个应用程序可以根据需要与LDAP对话,以执行一些操作,如用户信息获取、用户列表、组列表、电子邮件ID等。每次必须发出请求时,都会创建一个InitialDirContext对象,并按如下方式使用 Properties ldapProperties=新属性(); ldapperties.put(Context.INITIAL_Context_工厂,“com.sun.jndi.ldap.LdapCtxFactory”); ldapProperties.put(Context.PROVIDER\u

有一个应用程序可以根据需要与LDAP对话,以执行一些操作,如用户信息获取、用户列表、组列表、电子邮件ID等。每次必须发出请求时,都会创建一个InitialDirContext对象,并按如下方式使用


Properties ldapProperties=新属性();
ldapperties.put(Context.INITIAL_Context_工厂,“com.sun.jndi.ldap.LdapCtxFactory”);
ldapProperties.put(Context.PROVIDER\u URL,“ldaps://serv:636");
ldapProperties.put(Context.SECURITY_身份验证,“simple”);
ldapProperties.put(Context.SECURITY_主体,“用户”);
ldapProperties.put(Context.SECURITY_凭证,“密码”);
ldapperties.put(“java.naming.ldap.attributes.binary”、“tokenGroups”);
InitialDirContext ctx=新的InitialDirContext(ldapProperties);
ctx.搜索(…);

是否应该使用close()方法关闭此“ctx”对象

如果它没有关闭并且有多个新的InitialDirContext()创建,那么旧的会自动关闭吗


如果它只是一个内部对象,它将被垃圾收集,但是这个连接对象呢?

没有理由每次都关闭上下文对象。 您应该知道,服务器(或某些网络设备,如负载平衡器代理)可能会关闭连接,然后您可能需要重新初始化连接

我们有一些你可能会觉得有用的


-吉姆,谢谢你。我浏览了这些例子。在我当前的代码中,上下文对象没有关闭。每当需要与LDAP通信时,就会初始化一个新的LDAP。我在示例中注意到的一点是,显式指定了“keystore”。这是必须的吗?我已将证书导入JRE,但再也看不到SSLHandshake,因此我没有指定密钥库。@我应该在服务器端寻找什么参数来查看是否是正在关闭连接的服务器?(与LDAP通信时,我看到间歇性连接重置错误)