gpt4 book ai didi

java - OpenLDAP 和 UnboundID : use of transactions

转载 作者:行者123 更新时间:2023-11-29 03:45:05 26 4
gpt4 key购买 nike

我使用 OpenLDAP 作为 LDAP 服务器,使用 UnboundID 通过 Java 代码与其交互。我需要处理实体 A 的某个实例 X 的删除,实体 B 的其他几个实例 Y1、.. Yn 在逻辑上链接在一起。这意味着我首先需要删除 B (Y1, ... Yn) 的所有实例,然后我还想删除 X。我希望能够使用事务来执行此操作,以便中止事务如果在删除 Y1,..Yn 之一时出现问题并有可能回滚。我尝试按照以下示例进行操作:

https://www.unboundid.com/products/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/extensions/StartTransactionExtendedRequest.html

不过,我得到的是一个 LDAPException,表示不支持扩展操作。我如何处理交易?我认为 OpenLDAP 确实支持事务...

最佳答案

我不是很了解 OpenLDAP 的最新消息,但我最后听说的是 OpenLDAP 尚未添加对 LDAP 事务的支持,如 RFC 5805 中所述。但是,您应该能够通过查看来检查这一点在 OpenLDAP 根 DSE 上。在用于 Java 的 UnboundID LDAP SDK 中,您可以使用如下代码执行此操作:

 RootDSE rootDSE = ldapConnection.getRootDSE();
boolean supportsTransactions = rootDSE.supportsExtendedOperation(
StartTransactionExtendedRequest.START_TRANSACTION_REQUEST_OID);

如果 OpenLDAP 服务器尚不支持事务,那么您可能无法做任何事情来使其真正原子化并在遇到问题时能够回滚。如果 OpenLDAP 支持实验性 LDAP 无操作控制(我认为它支持),那么您可以使用 com.unboundid.ldap.sdk.experimental.DraftZeilengaLDAPNoOp12RequestControl 类将其包含在删除请求中以查看服务器是否接受删除所有条目,然后只有在看起来它们都会成功时才继续删除。否则,您可以在您的应用程序中保留日志,以便在出现故障时报告已删除的内容和未删除的内容。

尼尔

关于java - OpenLDAP 和 UnboundID : use of transactions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11345123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com