如何删除ldap节点并使用Java删除其下的所有子树节点?

时间:2018-02-26 04:28:45

标签: java ldap

enter image description here

示例,我想在其中删除groupcode=SG节点和2个子节点,但我得到javax.naming.ContextNotEmptyException

这是我的代码:

    public boolean delete(String dn, DirContext context) {
    if ((dn == null || dn.isEmpty()) 
            || context == null) {
        LOG.error("#delete(?, ?): Some parameters is null or empty!");
        return false;
    }

    try {
        context.destroySubcontext(dn);
        return true;
    } catch (NamingException e) {
        LOG.error("#delete(?, ?): Error when trying to delete!", e);
        return false;
    }
}

我该怎么办?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果您的LDAP服务器支持Tree Delete control并且您可以找到它的Java实现,那么您就完成了:只需设置上下文的请求控件以在执行删除之前包含该控件的实例。这不是一个常见的操作,例如OpenLDAP不支持它。

否则你必须列出每个子上下文并递归删除叶子。