有一个应用程序根据需要与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()创建将旧的自动关闭?
如果它只是一个内部对象,它将被垃圾收集但是这个连接对象呢?
答案 0 :(得分:0)
没有理由每次关闭上下文对象。 您应该知道,服务器(或某些网络设备,如负载均衡器代理)可能会关闭连接,然后您可能需要重新初始化连接。
我们有一些Example JNDI solutions您可能会觉得有帮助。
-Jim