Java 查询到AD以获得无限结果

Java 查询到AD以获得无限结果,java,active-directory,Java,Active Directory,我正在使用下一个代码获取广告中的所有用户 Hashtable<String, String> env = new Hashtable<String, String>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://grupoasisa.local:636");

我正在使用下一个代码获取广告中的所有用户

Hashtable<String, String> env = new Hashtable<String, String>();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://grupoasisa.local:636");
    env.put(Context.SECURITY_PROTOCOL, "ssl");
    env.put(Context.SECURITY_PRINCIPAL, "DOMASISA\\"+USER_SERVICE);
    env.put(Context.SECURITY_CREDENTIALS, PASSWORD_SERVICE);

    try {
        DirContext ctx = new InitialLdapContext(env, null);

        SearchControls searchCtls = new SearchControls();

        String returnedAtts[]={"sAMAccountName", "description", "mail"};

        searchCtls.setReturningAttributes(returnedAtts);

        //Specify the search scope
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
        searchCtls.setTimeLimit(0);
        searchCtls.setCountLimit(0);

        //Specify the LDAP search filter
        String searchFilter="(&(objectCategory=person)(objectClass=user))";
        //Specify the Base for the search
        String searchBase = "DC=grupoasisa,DC=local";

        // Search for objects using the filter
        NamingEnumeration<SearchResult> answer = ctx.search(searchBase, searchFilter, searchCtls);

        //Loop through the search results
        while (answer.hasMoreElements()) {
            SearchResult searchResult = answer.next();
            Attributes attrs = searchResult.getAttributes();
            Attribute usuWin = attrs.get("sAMAccountName");
            Attribute racf = attrs.get("description");
            Attribute email = attrs.get("mail");    
        }
} catch (NamingException e) {
        System.err.println("Error: "+e.getMessage());
    } catch (Exception e) {
        System.err.println("Error: "+e.getMessage());
    }
Hashtable env=new Hashtable();
put(Context.INITIAL\u Context\u工厂,“com.sun.jndi.ldap.LdapCtxFactory”);
env.put(Context.PROVIDER\u URL,“ldap://grupoasisa.local:636");
环境保护协议(Context.SECURITY_PROTOCOL,ssl);
环境put(Context.SECURITY_PRINCIPAL,“DOMASISA\\”+用户服务);
环境put(Context.SECURITY\u凭证、密码\u服务);
试一试{
DirContext ctx=新的初始值ldapcontext(env,null);
SearchControls searchCtls=新的SearchControls();
字符串returnedAtts[]={“sAMAccountName”、“description”、“mail”};
searchCtls.设置ReturningAttributes(returnedAtts);
//指定搜索范围
searchCtls.setSearchScope(SearchControls.SUBTREE_范围);
searchCtls.setTimeLimit(0);
searchCtls.setCountLimit(0);
//指定LDAP搜索筛选器
字符串searchFilter=“(&(objectCategory=person)(objectClass=user))”;
//指定搜索的基数
String searchBase=“DC=grupoasisa,DC=local”;
//使用过滤器搜索对象
NamingEnumeration answer=ctx.search(searchBase、searchFilter、searchCtls);
//循环搜索结果
while(answer.hasMoreElements()){
SearchResult SearchResult=answer.next();
Attributes attrs=searchResult.getAttributes();
属性usuWin=attrs.get(“sAMAccountName”);
属性racf=attrs.get(“描述”);
属性email=attrs.get(“邮件”);
}
}捕获(NamingE例外){
System.err.println(“错误:+e.getMessage());
}捕获(例外e){
System.err.println(“错误:+e.getMessage());
}
虽然我指定搜索是无限的,但我只收到了1000条第一批记录。发生了什么事


提前感谢。

不可能,您必须对结果进行分页(分页控制)。试着回答。

好吧,这对我不起作用。我想我必须要求将属性MaxPageSize更改为一个更大的数字。非常感谢。@ClaraMG,您收到的确切异常是什么?我没有收到任何异常,但我只收到前1000条记录,我必须创建一个包含所有记录(超过1350条)的对象。