Thanks Kiran.

I'm not very clear how to achieve this using LdapNetworkConnection.

If I understand correctly, I see we've
LdapNetworkConnection.search(SearchRequest
request)
<https://directory.apache.org/api/gen-docs/latest/apidocs/org/apache/directory/ldap/client/api/LdapNetworkConnection.html#search(org.apache.directory.api.ldap.model.message.SearchRequest)>and
set the followReferrals on the search request passed here (the way I was
doing in my code snippet)?

Also, I'm not terribly familiar with how to process SearchCursor and
specifically handle referrals (if I've to do this). Will appreciate if you
can point to some example code.



On Tue, Aug 5, 2014 at 10:35 PM, Kiran Ayyagari <[email protected]>
wrote:

>
>
>
> On Tue, Aug 5, 2014 at 10:27 PM, prabhjot singh <[email protected]>
> wrote:
>
>> Thanks Kiran. That would mean LdapConnectionTemplate won't be safe to use
>> in any of the search operations.
>>
>> it is not about safety, just that this template class decided not to
> support referrals
>
>> Is it safe to use LdapConnectionTemplate for lookup operations at least?
>>
> yes, you can use, but you will face the same issue if a referral entry is
> recieved during lookup
>
> Looks like you are making heavy use of template in your code, if so, may
> be you can just extend
> the template to support referral entries or use LdapNetworkConnection
> directly.
>
>>
>> Thanks,
>> Prabhjot
>> ------------------------------
>> From: Kiran Ayyagari <[email protected]>
>> Sent: ‎8/‎5/‎2014 10:19 PM
>> To: [email protected]; [email protected]
>> Cc: [email protected]
>> Subject: Re: Apache LDAP API - ActiveDirectory Handling referrals
>>
>>
>>
>>
>> On Tue, Aug 5, 2014 at 9:45 PM, Prabhjot Singh <[email protected]
>> > wrote:
>>
>>> Hi Experts,
>>>
>>>
>>>
>>> Can you please point me on how to handle referrals in the search
>>> operation?
>>> I want the logic to follow the referrals so it collects results from all
>>> Active Directory DCs. I get below exception even with followReferrals set
>>> to true.
>>>
>>>
>>>
>>> public List<Group> getAllGroups(String customer, String baseDn) throws
>>> Exception {
>>>
>>>         LdapConnectionTemplate connection =
>>> connections.getLdapConnectionTemplate(customer);
>>>
>>> LdapConnectionTemplate doesn't support referrals, so search using
>> LdapNetworkConnection directly
>>
>>>         SearchRequest searchRequest = connection.newSearchRequest(baseDn,
>>> "(objectclass=organizationalUnit)", SearchScope.ONELEVEL,
>>> GROUP_ATTRIBUTES);
>>>
>>>         searchRequest = searchRequest.followReferrals();
>>>
>>>         return connection.search(searchRequest, new GroupMapper());
>>>
>>> }
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> java.lang.RuntimeException: ERR_02002_FAILURE_ON_UNDERLYING_CURSOR
>>> Failure
>>> on underlying Cursor.
>>>
>>>                 at
>>>
>>> org.apache.directory.api.ldap.model.cursor.CursorIterator.next(CursorIterator.java:86)
>>>
>>>                 at
>>>
>>> org.apache.directory.ldap.client.template.LdapConnectionTemplate.search(LdapConnectionTemplate.java:662)
>>>
>>>                 at
>>>
>>> com.kaseya.mobility.directory.core.dao.group.DirectoryDetailsDaoImpl.getAllGroups(DirectoryDetailsDaoImpl.java:53)
>>>
>>>                 at
>>>
>>> com.kaseya.mobility.directory.core.dao.group.DirectoryDetailsDaoImplTest.testGetAllGroups(DirectoryDetailsDaoImplTest.java:66)
>>>
>>>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> Method)
>>>
>>>                 at
>>>
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>
>>>                 at
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>
>>>                 at
>>>
>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>>>
>>>                 at
>>>
>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>>>
>>>                 at
>>>
>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>>>
>>>                 at
>>>
>>> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>>>
>>>                 at
>>>
>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>>>
>>>                 at
>>>
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
>>>
>>>                 at
>>>
>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
>>>
>>>                 at
>>> org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>>>
>>>                 at
>>> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>>>
>>>                 at
>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>>>
>>>                 at
>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>>>
>>>                 at
>>> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>>>
>>>                 at
>>> org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>>>
>>>                 at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
>>>
>>>                 at
>>>
>>> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
>>>
>>>                 at
>>>
>>> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211)
>>>
>>>                 at
>>> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
>>>
>>>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> Method)
>>>
>>>                 at
>>>
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>
>>>                 at
>>> com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
>>>
>>> Caused by:
>>> org.apache.directory.api.ldap.model.cursor.CursorLdapReferralException
>>>
>>>                 at
>>>
>>> org.apache.directory.ldap.client.api.EntryCursorImpl.get(EntryCursorImpl.java:164)
>>>
>>>                 at
>>>
>>> org.apache.directory.ldap.client.api.EntryCursorImpl.get(EntryCursorImpl.java:50)
>>>
>>>                 at
>>>
>>> org.apache.directory.api.ldap.model.cursor.CursorIterator.next(CursorIterator.java:80)
>>>
>>>                 ... 29 more
>>>
>>
>>
>>
>> --
>> Kiran Ayyagari
>> http://keydap.com
>>
>
>
>
> --
> Kiran Ayyagari
> http://keydap.com
>



-- 
Thanks,
Prabhjot

Reply via email to