我正在尝试为 CQ5.6 编写自定义文件上传组件,但遇到了反向复制的问题。在 Publish 实例中创建的节点,但未复制到 Author 实例。调用复制器后,error.log 中出现下一行:
\n\ncom.day.cq.replication.impl.ReplicatorImpl Replication triggered, but no agent found or selected.\nRun Code Online (Sandbox Code Playgroud)\n\n复制代理已打开。在其他情况下,例如用户表单,复制工作成功,所以我认为问题出在我的代码中的某个地方。有我使用的代码:
\n\nNode node = session.getNode(path);\nValueFactory valueFactory = session.getValueFactory();\nBinary contentValue = valueFactory.createBinary(is);\nNode parent = node.addNode(fileName, "nt:unstructured");\nparent.setProperty(DELETED, false);\nparent.setProperty(DESCRIPTION, description);\nNode fileNode = parent.addNode(fileName, "nt:file");\nfileNode.addMixin("mix:referenceable");\nNode resNode = fileNode.addNode("jcr:content", "nt:resource");\nresNode.setProperty(Property.JCR_DATA, contentValue);\nCalendar lastModified = Calendar.getInstance();\nlastModified.setTimeInMillis(lastModified.getTimeInMillis());\nresNode.setProperty(Property.JCR_LAST_MODIFIED, lastModified);\nparent.setProperty("cq:distribute", true);\nparent.setProperty("cq:lastModified", Calendar.getInstance());\nparent.setProperty("cq:lastModifiedBy", session.getUserID());\nsession.save();\nreplicator.replicate(session, ReplicationActionType.ACTIVATE, parent.getPath());\nsession.logout();\nRun Code Online (Sandbox Code Playgroud)\n\n我应该怎么做才能使反向复制适用于我在 servlet 中创建的节点?
\n\n更新: \n根据 Tomek R\xc4\x99kawek 的回答,我更新了我的代码,但问题仍然没有解决。这是新代码:
\n\nResourceResolver resourceResolver = resolverFactory.getAdministrativeResourceResolver(null);\nSession session = resourceResolver.adaptTo(Session.class);\nString path = (String) componentContext.getProperties().get(SAVEPATH);\nNode node = session.getNode(path);\nValueFactory …Run Code Online (Sandbox Code Playgroud) aem ×1