是应该每次都显式关闭InitialDirContext对象吗?

时间:2015-11-24 21:17:31

标签: active-directory ldap

有一个应用程序根据需要与LDAP进行通信,用于多个操作,如用户信息提取,用户列表,组列表,电子邮件ID等。每次需要创建请求时,都会创建并使用InitialDirContext对象如下。

Properties ldapProperties = new Properties(); ldapProperties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); ldapProperties.put(Context.PROVIDER_URL, "ldaps://serv:636"); ldapProperties.put(Context.SECURITY_AUTHENTICATION, "simple"); ldapProperties.put(Context.SECURITY_PRINCIPAL, "user"); ldapProperties.put(Context.SECURITY_CREDENTIALS, "password"); ldapProperties.put("java.naming.ldap.attributes.binary", "tokenGroups"); InitialDirContext ctx = new InitialDirContext(ldapProperties); ctx.search(....);

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

如果它没有关闭并且有多个新的InitialDirContext()创建将旧的自动关闭?

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

1 个答案:

答案 0 :(得分:0)

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

我们有一些Example JNDI solutions您可能会觉得有帮助。

-Jim