Hello,
I'm trying to implement a ldap search to get *all* groups I have in my ldap server. As the number of group is bigger than my server search limit (500), I'm trying to use PagedResultsRequestControl.
Here is my code :
Please note that I'm using a page size smaller than my server limit.Code:List<String> groups = new ArrayList<String>(); final int PAGE_SIZE = 100; PagedResultsRequestControl control = new PagedResultsRequestControl(PAGE_SIZE, null); do { List<String> groupsTemp = this.ldapTemplate.search(this.baseGroupSearch, this.groupSearchFilter, this.searchControls, new ParameterizedContextMapper<String>() { public String mapFromContext(Object arg0) { DirContextAdapter dirContextAdapter = (DirContextAdapter) arg0; return dirContextAdapter.getStringAttribute(CheckHomonymy.this.groupIdAttribute); } }, control); groups.addAll(groupsTemp); control = new PagedResultsRequestControl(PAGE_SIZE, control.getCookie()); } while (control.getCookie().getCookie() != null);
I'm getting this exception when I try to get the 5th page of object (5*100 objects fetched).
I don't understand why I have this as I'm using pages of 100 objects. I thought it would reset the limit after each call of ldapTemplate.search(...).
Where am I wrong ?
thank you.
dom
Code:org.springframework.ldap.LimitExceededException: [LDAP: error code 4 - Sizelimit Exceeded]; nested exception is javax.naming.SizeLimitExceededException: [LDAP: error code 4 - Sizelimit Exceeded]; remaining name 'o=internet' at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:140) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:295) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:234) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:583) at org.springframework.ldap.core.simple.SimpleLdapTemplate.search(SimpleLdapTemplate.java:101) at com.dexia.sofaxis.checkhomonymy.CheckHomonymy.getGroups(CheckHomonymy.java:154) at com.dexia.sofaxis.checkhomonymy.CheckHomonymy.checkGroups(CheckHomonymy.java:110) at com.dexia.sofaxis.checkhomonymy.CheckHomonymy.run(CheckHomonymy.java:99) at com.dexia.sofaxis.common.batch.engine.Launcher.run(Launcher.java:42) at com.dexia.sofaxis.common.batch.engine.UnitTestLauncher.run(UnitTestLauncher.java:53) at com.dexia.sofaxis.checkhomonymy.CheckHomonymyTest.testRun(CheckHomonymyTest.java:22) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) Caused by: javax.naming.SizeLimitExceededException: [LDAP: error code 4 - Sizelimit Exceeded]; remaining name 'o=internet' at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3037) at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2931) at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2737) at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1808) at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1731) at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:368) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:338) at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:321) at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:248) at org.springframework.ldap.core.LdapTemplate$4.executeSearch(LdapTemplate.java:230) at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:272) ... 31 more


Reply With Quote