2013-03-15 1 views
1

를 통해 AD 접근 :원인 나는 다음과 같은 예외가 발생하는 원인이되는 CAS에 문제가 쫓아하려고 자바

javax.naming.TimeLimitExceededException: [LDAP: error code 3 - Timelimit Exceeded]; remaining name '' 
     at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3097) 
     at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987) 
     at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794) 
     at com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:129) 
     at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:198) 
     at com.sun.jndi.ldap.LdapNamingEnumeration.hasMore(LdapNamingEnumeration.java:171) 
     at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:295) 
     at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:361)... 

오류는 거의 즉시 반환됩니다. 클라이언트 사이드 타임 아웃은 10 초로 설정되어 있지만 com.sun.jndi.ldap 코드를 살펴보면 도메인 컨트롤러가 상태가 3 인 응답을 반환하는 것처럼 보입니다. 제한 시간을 초과했습니다.

우리는 Active Directory 글로벌 카탈로그를 사용하고 있으며 필터와베이스는 매우 광범위합니다. 기본 = '', 필터 = (proxyAddresses = * : [email protected]) 그러나 쿼리는 가끔 성공하지만 반환합니다. 즉각적인 상태 코드 3.

이런 종류의 행동을 일으키는 원인을 알고있는 사람이 있습니까? 또는 정확하게 무엇이 일어나고 있는지 결정하는 방법에 대해 알아보십시오.

답변

1

검색 필터가 너무 광범위하게 나옵니다.

우리는 필터에서 와일드 카드를 사용하고 있었고 쿼리는 2 초도 채 걸리지 않았습니다.

그러나 Active Directory 구성 시간 제한보다 2 초가 훨씬 짧아서 오류가 즉시 발생하는 이유를 알 수 없었습니다 (실패한 경우 2 초도 걸리지 않음).

광고에 동일한 계정의 여러 요청이 걸린 시간이 있어야하며 어느 시점에 제한 시간 초과 오류가 반환되기 시작했다고 가정합니다.

해결하기 위해 더 이상 와일드 카드가 포함되지 않도록 검색 필터를 수정했습니다. 검색은 거의 즉시 실행되며 시간 제한은 더 이상 발생하지 않습니다.