directory-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From prabhjot singh <er.prabhj...@gmail.com>
Subject Re: Apache LDAP API - ActiveDirectory Handling referrals
Date Wed, 06 Aug 2014 08:03:09 GMT
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 <kayyagari@apache.org>
wrote:

>
>
>
> On Tue, Aug 5, 2014 at 10:27 PM, prabhjot singh <er.prabhjots@gmail.com>
> 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 <kayyagari@apache.org>
>> Sent: ‎8/‎5/‎2014 10:19 PM
>> To: api@directory.apache.org; users@directory.apache.org
>> Cc: er.prabhjots@gmail.com
>> Subject: Re: Apache LDAP API - ActiveDirectory Handling referrals
>>
>>
>>
>>
>> On Tue, Aug 5, 2014 at 9:45 PM, Prabhjot Singh <prabhjot.singh@kaseya.com
>> > 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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message