2011-03-31 11 views
14

के साथ जेएनडीआई मूल रूप से सक्रिय निर्देशिका में एलडीएपी पेड़ चल रहा हूं।सक्रिय निर्देशिका PartialResultException

प्रत्येक स्तर पर मैं "(objectClass=*)" के लिए क्वेरी करता हूं। जब मैं रूट पर ऐसा करता हूं उदाहरण के लिए "dc=example,dc=com" मुझे नीचे अपवाद मिलता है। यह हमारे अन्य एलडीएपी उदाहरणों पर ठीक काम करता है। कुछ कारणों से केवल हमारे सक्रिय निर्देशिका सर्वर पर मुझे यह अपवाद मिलता है। हमारे सक्रिय निर्देशिका सर्वर पर JXplorer का उपयोग करते समय भी मुझे एक ही अपवाद मिलता है।

ऑनलाइन पढ़ने से मैंने लोगों को यह कहते हुए पाया कि आपको निम्नलिखित का पालन करना चाहिए, यह सुनिश्चित नहीं है कि इसका क्या मतलब है ... इसलिए मेरे नियंत्रण ऑब्जेक्ट (javax.naming.directory.SearchControls) पर मैं क्वेरी के साथ पास करता हूं जिसे मैं searchControls.setDerefLinkFlag(true) पर कॉल करता हूं। मैंने इसे उसी परिणाम के साथ false पर सेट करने का भी प्रयास किया है। इस पर कोई सुझाव क्या हो सकता है? शायद मैं इसे कैसे ठीक कर सकता हूं?

नोट: इस पोस्ट में मैंने अपनी कंपनियों की गोपनीयता के लिए उदाहरण के लिए dc=<my company domain> से आधार डीएन बदल दिया।

javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'dc=example,dc=com' 
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2820) 
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794) 
at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1826) 
at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1749) 
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 com.motio.pi.gui.panels.useraccess.ldap.LDAPConnector.query(LDAPConnector.java:262) 
at com.motio.pi.gui.selector.directory.CognosDirectoryBrowserController.expandCognosTreeNode(CognosDirectoryBrowserController.java:99) 
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:597) 
at com.motio.pi.utils.PIThreadDelegate$1.run(PIThreadDelegate.java:54) 
at java.lang.Thread.run(Thread.java:662) 

उत्तर

31

तो जब मैं विधि के साथ मेरी नामकरण प्रसंग बना था:

javax.naming.ldap.InitialLdapContext.InitialLdapContext(
    Hashtable<?, ?> environment, Control[] connCtls) 

तर्क environment में नाम Context.REFERRAL के साथ एक संपत्ति है और इसके मान पर सेट किया जाना चाहिए: follow। यह वह सेटिंग थी जिसकी मुझे आवश्यकता थी।

+2

@startoftext: की-बेशक यह PartialResultException समस्या का हल है, लेकिन यह खोज धीमा हो जाता है। कृपया देखें http://stackoverflow.com/questions/14136091/ldap-search-is-very-slow। वास्तव में, 'अनुवर्ती' के साथ इसमें 4 सेकंड लगते हैं और 'अनुवर्ती' के बिना यह मेरे लिए 1 सेकंड लगता है। अगर आपके पास इसका कोई समाधान है, तो कृपया सलाह दें। –

+0

@ कार्तिक बोस मैं ldap के साथ काम नहीं कर रहा हूं इसलिए मुझे खेद है कि मैं मदद नहीं कर सकता। – startoftext

+0

(दूसरों के लिए) यदि ऊपर दिया गया समाधान काम नहीं करता है, तो आप निम्न 2 चीजों को आजमा सकते हैं: ** (1) ** जब आप नाम का उल्लेख करते हैं तो अधिक विशिष्ट रहें (उदा: 'ओयू = लेखा, डीसी = एक्स, डीसी = एक्स 'डीसी = एक्स, डीसी = वाई' के बजाय। ** (2) ** एलडीएपी पोर्ट नंबर को ** 3268 ** में बदलें (** 38 9 ** के बजाय) –

3

यदि आपको रेफ़रल उपयोग का पालन करते समय अपवाद मिलता है (उदाहरण के लिए: कनेक्शन का समय समाप्त हो गया है) तो आप रेफ़रल अनदेखा का उपयोग कर सकते हैं लेकिन आप आंशिक अपवाद नहीं प्राप्त करना चाहते हैं, आप 38 9 के बजाय 3268 पोर्ट नंबर का उपयोग कर सकते हैं यह पोर्ट वैश्विक कैटलॉग का उपयोग कर रहा है ldap के लिए। आप निम्न लिंक से जानकारी पा सकते हैं;

https://technet.microsoft.com/en-us/library/how-global-catalog-servers-work(v=ws.10).aspx

संबंधित मुद्दे