Apache commons-pool을 사용하여 LDAP 연결 풀을 구현했습니다. JNDI에서 제공하는 풀링 기능 (http://download.oracle.com/javase/jndi/tutorial/ldap/connect/pool.html)은 SSL 연결을 사용하기 때문에 사용할 수 없습니다 (사용자 지정 (Oracle 제공) 소켓 팩토리 사용). (java.naming.ldap.factory.socket
env 값 세트). LDAP 서버에 JNDI 풀링에서 컨텍스트를 제외시킵니다. 따라서 해당 풀링 등록 정보가 설정되어 있어도 JNDI 내의 풀링 기능은 자동으로 비활성화됩니다.가장 간단한 (가능한 한 복잡한) LDAP 작업이 무엇입니까
InitialDirContext
의 풀링 된 인스턴스가 풀로 반환되고 여전히 사용 가능하고 사용자가 닫지 않았는지 또는 만료되었는지 LDAP 서버에 연결이 끊어 졌는지 여부를 확인해야합니다. 다른 원인으로. 이 작업은 예외가 발생하지 않는 경우
final InitialDirContext ctx = internalPooledLDAPConnection.getCtx();
final Subscriber sub = internalPooledLDAPConnection.getSub();
SearchControls ctls = new SearchControls();
ctls.setSearchScope(2);
ctls.setReturningAttributes(new String[] { "dn"});
NamingEnumeration resultSet = ctx.search(sub.getUserSearchBase()[0], "(&(objectclass=*)(uid=orcladmin))", ctls);
, 그럼 내 내부 풀링 된 LDAP 연결 내부의 InitialDirContext
여전히 사용할 수 :
이것은 내가 현재 존재하는 것으로 알려진 특정 사용자의 DN을 찾아 볼 곳이다 재사용을 위해 수영장에서 안전하게 주어질 수 있습니다.
그러나 이것이 여기에서 수행 할 수있는 '가장 저렴한'연결 위생 확인인지 또는 내가 대신 사용할 수있는 훨씬 저렴한 LDAP 작업이 있는지 궁금해합니다.
제안 해 주셔서 감사합니다. 불행히도 JNDI LDAP 연결을 신뢰할 수있는 Oracle 애플리케이션 서버 라이브러리를 사용하기 때문에 JNDI에서 다른 것으로 전환 할 수 없습니다. – BertNase