Java 读取AD域用户,解决只能最大查询到1000(MaxPageSize)记录数问题

2023-10-27

Java使用LdapContext查询AD域用户,发现只能查询到1000个(不同系统这个数值可能不同,现象就是最多只能查到固定数量)。查询资料发现这是受AD域设置的MaxPageSize参数影响,解决办法有两种。

方式一:直接扩大AD域的MaxPageSize,比如设置成10000。参考操作文档及说明

方式二:方法一官方不推荐使用,若可以修改程序代码,推荐使用方法二。进行分页读取,关键代码如下:

//初始化LdapContext对象
LdapContext ldapCtx = new InitialLdapContext(env, null);

int pageSize = 1000;//程序单次查询最大条数
//构建查询条件
SearchControls searchCtls = new SearchControls(); 
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchCtls.setReturningAttributes(attrNameArr);
ldapCtx.setRequestControls(new Control[]{new PagedResultsControl(pageSize, Control.CRITICAL)});

byte[] cookie = null;//用于判断是否还有剩余数据(进行分页)

do{
  NamingEnumeration<SearchResult> answer = ldapCtx.search(searchBase, searchFilter, searchCtls);
   while (answer!=null && answer.hasMore()) {
     SearchResult sr = answer.next();
   //这里写入对查询结果的处理逻辑
   //.....//读取cookie,判断是否有未读取完
  Control[] controls = ldapCtx.getResponseControls();
  if (controls != null) {
     for (int i = 0; i < controls.length; i++) {
         if (controls[i] instanceof PagedResultsResponseControl) {
            PagedResultsResponseControl prrc = (PagedResultsResponseControl) controls[i];
            cookie = prrc.getCookie();
          }
     }
  }

  // 将cookie提供给LdapContext,让它在接下来的查询中进行换页
  ldapCtx.setRequestControls(new Control[]{new PagedResultsControl(pageSize, cookie, Control.CRITICAL)});

}while (cookie != null);



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 读取AD域用户,解决只能最大查询到1000(MaxPageSize)记录数问题 的相关文章

随机推荐

  • 自我理解:类模板和模板类、函数模板和模板函数

    一 类模板和模板类 1 类模板 类模板的重点是模板 表示一个专门用来产生类的模板 类模板是对一批仅仅成员数据类型不同的类的抽象 只要为这一批类创建一个类模板 给出一套程序代码 就可以用来生成多种具体的类 模板类 从而大大提高编程的效率 te
  • 华为OD机试 C++【 最接近的数】

    题目 任务 假设你有一个正整数数组X和一个整数K 请计算下式的结果 X i X i 1 X i K 1 你的目标是找到使这个结果与数组的中位数最为接近的i值 如果有多个相同的结果 请返回最大的i 额外信息 数组的中位数是什么 当你把数组从小
  • git 合并练习

    用于git merge练习 常规步骤 克隆仓库 git clone xxxx git checkout b dev xxx test xxx为自己标识的id 例如本例dev xxx test 命令 描述 git clone 克隆仓库 git
  • 绘制产业招商地图,按“图”寻宝,沿“链”招商!

    当下 各地招商引资正在从过去的 地毯式招商 向 地图式招商 转变 招商引资不再是 拾到篮子都是菜 而是 提着篮子选菜 制定产业招商地图 实施精准招商 产业招商地图能够帮助政府把握产业分布特征和发展趋势 把建链 扩链 补链 强链与招大引强结合
  • 串级PID算法

    单环PID和串级PID的区别 框图表示 串级PID的优势 增加稳定性 增强抗干扰性 其实不是太理解 代码实现 定义4个PID的结构体 分别用于x方向内环 外环以及y方向内环 外环 当初做板球系统xy方向用的都是同一个PID结构体变量 最后居
  • 保姆级部署教程。

    目录 制作Centos7启动盘 制作RAID5硬盘 外网安装 内网安装 制作Centos7启动盘 下载 UltraISO Premium Edition 9 3 这是制作启动centos7启动盘的工具 下载安装完成后 无脑点击下一步安装就行
  • 物联网通讯协议:MQTT,NB-IOT,Zigbee,CoAP,RFID,BLUETOOTH,NFC,4G,HTTP

    目录 一 按网络四层协议分类 二 按需要网关来分类 三 NB IoT 4G对比 四 应用层协议 MQTT和COAP对比 物联网组网技术 WIFI 蓝牙 ZigBee 2G 4G 5G NB IoT LoRa 网关 物联网中常见的物联通信协议
  • ITU-R BT.709诞生始末

    20世纪70年代中期 日本在对角线长达1 m的屏幕上显示出了清晰的电视画面 这一消息不胫而走 70年代末 EBU代表团远赴日本NHK研究实验室 参观HDTV演示 这次演示给大家留下了深刻的印象 就在那时 SMPTE成立了一个委员会来研究HD
  • ajax异步无法获得返回值及无法操作iframe

    1 ajax异步无法获得返回值 function GetUserInfo var username ajax type get url Handle OpeartionHandler ashx success function userin
  • win10上C语言环境安装MinGW-w64-8.1.0的下载和安装

    MinGW w64 8 1 0的下载和安装 MinGW w64 install exe的下载 官网下载https sourceforge net projects mingw w64 files 运行mingw w64 install ex
  • LeetCode刷题 26.删除有序数组中的重复项

    题目要求给一个升序数组 原地O 1 删除重复出现的元素 使得每个元素只出现一次 返回删除后元素的长度 元素相对应位置保持不变 第一反应是 因为升序 所以可以用双指针来做 fast指针遍历数组 slow指针表示下一个不同的元素要放入的位置 数
  • Date 的GMT、UTC、ISO、CST、timestamp 等格式 及Moment、Dayjs

    文章目录 一 不同的时间格式 1 1 时间的由来 1 2 国际标准时间格式 1 格林威治标准时间 GMT 2 世界标准时 UTC 3 中国标准时间 CST 4 ISO 8601 标准时间 5 时间戳 二 Date 2 1 传参形式 2 2
  • 搜索与图论浅度算法学习笔记

    学习笔记 深度优先搜索 DFS 广度优先搜索 BFS 最短路径 dj算法 朴素版和 堆优化版 还不会 处理单源负权边的贝尔曼算法 spfa 只要单源路上没有负环即可 本质上是对贝尔曼算法进行优化 结合宽搜 floyd多源汇最短路径算法 拓扑
  • HTTP状态码详解

    状态码 含义 100 客户端应当继续发送请求 这个临时响应是用来通知客户端它的部分请求已经被服务器接收 且仍未被拒绝 客户端应当继续发送请求的剩余部分 或者如果请求已经完成 忽略这个响应 服务器必须在请求完成后向客户端发送一个最终响应 10
  • C语言基础入门48篇_36_指针相关的运算(指针可以比较大小、指针+1,实际是地址值加上指向的数据类型的大小、p1++可以实现数据的遍历)

    1 比较大小 指针是地址的数字编码 同类型的指针是可以比较大小的 不同类型的指针不能比较大小 include
  • scrapy爬取豆瓣TOP250电影

    1 思路分析 1 1 网页关系分析 上图红框内是第一页网址 第一页网址 https movie douban com top250 start 0 第二页网址 https movie douban com top250 start 25 第
  • 移动端实现hover效果

    document body addEventListener touchstart function 加上这行代码 空函数就行 然后 hover改成 active 实现PC端hover效果
  • Linux系统下alias重命名的命令,如何调用原生命令呢?

    在Linux系中 对于已经利用alias重定义别名的命令 如何在脚本中使用原命令 例如想使用cp的原命令 使得目标文件存在是直接覆盖 而不是进行确认是否覆盖 弹出是否覆盖是因为为了安全起见 好多Linuxer对cp命令进行了alias cp
  • docker部署vue项目

    材料 1 打包好的vue的dist文件夹 2 docker环境 运行环境结构图 dist 打包的项目 default conf nginx的配置文件 gzip on 开启或关闭gzip on off gzip disable msie6 g
  • Java 读取AD域用户,解决只能最大查询到1000(MaxPageSize)记录数问题

    Java使用LdapContext查询AD域用户 发现只能查询到1000个 不同系统这个数值可能不同 现象就是最多只能查到固定数量 查询资料发现这是受AD域设置的MaxPageSize参数影响 解决办法有两种 方式一 直接扩大AD域的Max