फेंकने के बजाय झूठी वापसी करने के लिए मैंने रेफरल, को अनदेखा करने के लिए एलडीएपी DirContext.search (...) सेट अप किया है, लेकिन मैं जब भी मैं नामकरण एंटरमेशन.hasMore() को कॉल करता हूं तब भी एक रेफ़रल अपवाद प्राप्त करें।जावा- एलडीएपी DirContext.search (...) को कैसे बताना है। हैमोर() एक PartialResultException
Exception in thread "main" javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'DC=company,DC=com'
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2846)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2820)
at com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:129)
at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:198)
at com.sun.jndi.ldap.LdapNamingEnumeration.hasMore(LdapNamingEnumeration.java:171)
मैं DirContext.search बता सकते हैं रेफरल अनदेखी करने के लिए, तो NamingEnumeration.hasMore() के बजाय एक अपवाद फेंकने के झूठे रिटर्न कि?
इसहै कतरना:
import javax.naming.*;
import javax.naming.directory.*;
Properties p = new Properties();
p.setProperty(Context.INITIAL_CONTEXT_FACTORY, ldapInitContextFactory);
p.setProperty(Context.PROVIDER_URL, ldapURL);
p.setProperty(Context.SECURITY_CREDENTIALS, ldapPassword);
p.setProperty(Context.SECURITY_PRINCIPAL, ldapUser);
p.setProperty(Context.SECURITY_AUTHENTICATION, "simple");
p.setProperty(Context.REFERRAL, "ignore");
DirContext ctx = new InitialDirContext(p);
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setDerefLinkFlag(false);
NamingEnumeration e = ctx.search(ldapBaseDN, ldapQuery, null, searchControls);
for (; e.hasMore();) {
SearchResult sr = (SearchResult) e.next();
System.out.println("\nSearch Result: " + sr.getName());
}
नोट: अगर मैं रेफरल सक्षम, मैं जब मैं NamingEnumeration.hasMore() फोन एक LdapReferralException expcetion मिलता है।