adserver处理只显示1000条,---(分页)

package org.jeecg.modules.to.util;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.Control;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
import javax.naming.ldap.PagedResultsControl;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Hashtable;

import static org.jeecg.modules.to.util.paged.parseControls;

@Slf4j
@Component
public class adserver {
//    public static void main(String[] args) {
//        connect();
//    }

    public void connect() {
        Hashtable<String, String> HashEnv = new Hashtable<String, String>();
        HashEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); // LDAP访问安全级别(none,simple,strong)
        HashEnv.put(Context.SECURITY_PRINCIPAL, "12@123.com"); //AD的用户名
        HashEnv.put(Context.SECURITY_CREDENTIALS, "Wel1co2m0"); //AD的密码
        HashEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // LDAP工厂类
        HashEnv.put("com.sun.jndi.ldap.connect.timeout", "3000");//连接超时设置为3秒
        HashEnv.put(Context.PROVIDER_URL, "ldap://" + "域名地址" + ":" + 389);// 默认端口389
        try {
            LdapContext ctx = new InitialLdapContext(HashEnv, null);
            // 域节点
            String searchBase = "OU=DGF,OU=CN,DC=kul-dc,DC=xxx,DC=com";
            // LDAP搜索过滤器类
            String searchFilter = "(&(objectCategory=person)(objectClass=user))";
            // 搜索控制器
            SearchControls searchCtls = new SearchControls(); // Create the
            // search
            // controls
            // 创建搜索控制器
            searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE); // Specify

            searchCtls.setReturningAttributes(null);

            searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);

            int pageSize = 900;

            byte[] cookie = null;

            //请求分页结果控件
            Control[] ctls = new Control[]{new PagedResultsControl(pageSize, true)};

            ctx.setRequestControls(ctls);

            //初始化计数器以总计结果
            int totalResults = 0;

            //使用过滤器搜索对象
            do {
                NamingEnumeration results = ctx.search(searchBase,
                        searchFilter, searchCtls);
                //循环浏览每个页面中的结果
                while (results != null && results.hasMoreElements()) {

                    SearchResult sr = (SearchResult) results.next();

                    System.out.println("name: " + sr);
                    log.info(totalResults + "adserver" + sr);
                    //increment the counter

                    totalResults++;
                }
                // 检查响应控制
                cookie = parseControls(ctx.getResponseControls());

                //将cookie传递回服务器以进入下一页
                ctx.setRequestControls(new Control[]{new
                        PagedResultsControl(pageSize
                        , cookie, Control.CRITICAL)});
            } while ((cookie != null) && (cookie.length != 0));
            ctx.close();
            System.out.println("Total entries: " + totalResults);
        } catch (AuthenticationException e) {
            System.out.println("身份验证失败!");
            e.printStackTrace();
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值