Aem 未在发布实例中删除节点

Aem 未在发布实例中删除节点,aem,jcr,sling,Aem,Jcr,Sling,我通过mix:shareablemixin在父页面和子页面之间共享节点。在author实例中,数据的同步工作正常,但当页面被激活时,共享节点将使用不同的UUID创建(这会中断同步)。我编写这段代码是为了在UUID不同时重新克隆节点 //parentPageNode and currentPageNode are jcr nodes of parent and current page respectively Node parentFooNode = parentPageNode.

我通过mix:shareablemixin在父页面和子页面之间共享节点。在author实例中,数据的同步工作正常,但当页面被激活时,共享节点将使用不同的UUID创建(这会中断同步)。我编写这段代码是为了在UUID不同时重新克隆节点

//parentPageNode and currentPageNode are jcr nodes of parent and current page respectively       
Node parentFooNode = parentPageNode.getNode("foo");
Node currentFooNode = currentPageNode.getNode("foo");
if(!(parentFooNode.getUUID().equals(currentFooNode.getUUID()))){
    log.info("parent page foo node and child page foo node have different UUID");
//revolver factory obtained through @Reference Injection
// need admin creds to delete node in publish
    ResourceResolver resourceResolver = resolverFactory.getAdministrativeResourceResolver(null);
    Session session = resourceResolver.adaptTo(Session.class);
    Workspace workspace = session.getWorkspace();
    currentfooNode.remove();
    log.info("node removed");
    session.save();
    log.info("session saved "+currentPageNode.hasNode("foo"));
    workspace.clone(workspace.getName(), parentfooNode.getPath(),currentPageNode.getPath()+"/foo", false);
    session.save();
}

问题是,当此代码运行时,节点不会被删除。因此,当克隆节点时,它会创建foo[2]节点,但日志显示“session saved false”(currentPageNode.hasNode(“foo”)返回false,即使它实际上没有删除节点)。奇怪的是,由于remove()调用没有异常。当UUID id不同时,如何删除节点,并在发布实例上将子页面foo节点与父页面foo节点重新同步。

是否收到任何错误消息。。??你能在这里添加日志信息吗?这样可以很容易地调试我没有收到任何错误消息。。我想问题是我没有在我要删除的节点的父节点上调用save()方法,session.save()显然不足以保持更改。我放弃了这种方法,转而使用另一种方法,因此在实践中没有验证node.save()部分。