如何在Domino服务器端使用Java实现数据库签署操作
Domino服务端Java实现数据库签署的可行方案
关于Database.sign()服务端失效的说明
Database.sign()属于客户端上下文专用API,原生设计就是仅在Notes工作站运行时生效,服务端运行时因安全上下文校验限制无法正常调用,不属于代码调用逻辑的问题。
可行的服务端实现方法
方法1:调用NotesAdministrationProcess官方Admin API实现
这是最推荐的官方原生方案,步骤如下:
- 确保运行代码的身份(服务器ID或代理签署ID)已被加入服务器安全配置的「可运行无限制的LotusScript/Java代理」列表,同时拥有目标数据库的管理者权限
- 实例化
NotesAdministrationProcess对象,调用signDatabase方法提交签署任务到AdminP管理进程队列 - 若需要即时触发执行,可调用
Session.sendConsoleCommand("", "load adminp process immediate")触发AdminP立即处理队列中的签署任务
方法2:遍历设计元素逐个签署
你正在考虑的这个方案完全可行,适合不需要依赖AdminP的场景:
- 通过
Database.getDesignCollections()获取数据库全量设计元素集合,也可按类型分别获取表单、视图、代理、脚本库等设计对象 - 遍历每个设计元素调用
sign()方法,可根据需求跳过私有个人视图等不需要签署的元素 - 全部操作完成后调用
Database.save()提交变更即可,缺点是设计元素量大的数据库执行耗时较长
关于控制台命令的补充
Domino服务器没有原生直接签署单库的控制台命令,你之前尝试通过Session.sendConsoleCommand找不到对应指令是正常情况。
内容的提问来源于stack exchange,提问作者Dmytro Pastovenskyi
相关产品推荐
相关产品推荐

