#java #ldap
Работаю с LDAP на Java. При первом запуске программы, все проходит отлично, данные приходят нормально. Но если пройдет некоторые время, 1-2 часа, то программа начинает выдавать Exception Problem searching directory: javax.naming.CommunicationException: iat.iat:389 [Root exception is java.net.ConnectException: Connection timed out: connect] И проблема решается, если перезагрузить ПК, на котором запущена программа. Кто знает, как решить проблему? env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put("java.naming.security.principal", "isdgfh@iat.iat"); env.put("java.naming.security.credentials", "ergdfgdfgdf"); env.put("java.naming.provider.url", "ldap://iat.iat:636/DC=iat,DC=iat"); env.put(Context.PROVIDER_URL, ldapURL); try { LdapContext ctx = new InitialLdapContext(env, null); SearchControls searchCtls = new SearchControls(); searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // Фильтр для поиска группы по никнейму String searchFilter = "(sAMAccountName=" + username + ")"; // Где Искать String searchBase = "DC=iat,DC=iat"; //Член String returnedAtts[] = {"member"}; //String returnedAtts[] = null; searchCtls.setReturningAttributes(returnedAtts); System.out.println(username); NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls); //Выборка из AD по логину while (answer.hasMoreElements()) { sr = (SearchResult) answer.next(); sr2 = sr.toString(); } ctx.close(); } catch (NamingException e) { System.err.println("Problem searching directory: " + e); } return sr2;
Ответы
Ответ 1
Для начала стоит понять не текут ли соединения. Для этого можно сделать heap dump (используя, например, jmap), когда после нескольких часов программа стала выдавать java.net.ConnectException и посмотреть на него в Eclipse MAT, YourKit или чём нибудь ещё. Искать стоит соединения, которые используются внутри LdapContext'а. Также стоит перенести закрытие контекста в finally, т. к. соединения могут течь в случае javax.naming.NamingException.
Комментариев нет:
Отправить комментарий