2009-07-19 9 views
5

के लिए झूठी लौटने पर बहुत समय लगता है, मैं एक एलडीएपी सर्वर (सक्रिय निर्देशिका) खोजने की कोशिश कर रहा हूं। जब मैं खोज परिणामों का विश्लेषण करता हूं, hasMoreElementsNamingEnumeration की विधि को झूठी वापसी के दौरान लगभग 15-20 सेकंड लगते हैं। यह मामला नहीं है जब यह सच हो रहा है। क्या इस मुद्दे को हल करने का कोई तरीका है?नामकरणएन्यूमेंटेशन है MoreElements विधि LDAP

कोड:

SearchControls ctrl = new SearchControls(); 
ctrl.setSearchScope(SearchControls.SUBTREE_SCOPE); 
String searchFilter = "(&(objectClass=user("uid"="abc"))"; 
NamingEnumeration ne = dirContext.search("ldap://abc:389/dc=abc,dc=xy", searchFilter,ctrl); 

if (ne != null) { 
    while (ne.hasMoreElements()) { 
     //parse results 
    } 

उत्तर

0

ई यह एक LDAP क्वेरी में देता वस्तुओं की संख्या की एक डिफ़ॉल्ट सीमा होती है। मुझे लगता है कि यह 1000 ऑब्जेक्ट रेंज में है।

यदि आप 1001 हिट करते हैं, तो आपको 1000 लौटाया जाता है, फिर एक त्रुटि होती है, इसलिए मैं यह मामला देख सकता था।

गणना करें कि आप परीक्षण में कितनी ऑब्जेक्ट वापस लेते हैं, और betcha आप 1000 को हराते हैं और फिर विफल हो जाते हैं।

6

NamingEnumeration पिछली बार hasMoreElements() पर कॉल करते समय कुछ सफाई करता है। यह भी जांचता है कि क्या अतिरिक्त रेफ़रल हैं संदर्भ-संपत्ति Context.REFERRAL "अनुवर्ती" पर सेट है। हमारे सॉफ़्टवेयर में एक मामले में इसने वर्णित व्यवहार को बिल्कुल सही बताया: अंतिम कॉल hasMoreElements() (या hasMore() या next() को अधिक से अधिक बार कॉल करने की अनुमति देता है) 40 सेकंड तक होता है क्योंकि एलडीएपी संदर्भ में रेफ़रल खोजे जाते हैं। समाधान Context.REFERRAL को "अनुवर्ती" पर सेट नहीं करना है।

+0

'setReferral ("follow") को हटाकर मेरे लिए काम किया। – manikanta

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