已通过AccessDeniedException阻止分发队列

描述 description

环境

  • Experience Manager
  • Experience Manager as a cloud service

问题/症状
当尝试使用“快速发布”、“管理发布”或“复制”复制某些页面内容(或XF和其他类型的资源)时,作者上的分发队列将获得 已阻止.

可以通过检查 发布 ​分发UI中的分发队列(AEM — 工具 — 部署 — 分发):


选择Golden Publisher队列(列表中的粗体条目),将提供更多详细信息,特别是所涉及的内容  路径  (此处可能有多个元素):


查看  日志  选项卡将显示以下相应错误:
2023/03/08 12:11:26:238 - INFO — 使用分发包PackageMessage(pubSlingId=a1133c97-6809-411e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck-1678277486031-63159f4b-c577-4079-8741-d41660597d20, pkgType=journal_fileval ault, pkgLength=6330, pubAgentName=publish, userId=replication-service, paths=/content/wknd/fr, deepPaths=) at offset=158705 2023/03/08 12:11:27:459 - WARN — 消息:尝试导入分发包PackageMessage(pubSlingId=a1133c97-6809-411e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck-1678277486031-63159f4b-c577-4079-8741-d41660597d20失败pkgType=journal_filevault, pkgLength=6330, pubAgentName=publish, userId=replication-service, paths=/content/wknd/fr, deepPaths=) at offset=158705,原因是“javax.jcr.AccessDeniedException: OakAccess000:Access被拒绝”,导入程序将稍后重试,Stacktrace: org.apache.sling.distribuiling.distribution.common.DistributionException: javax.javax.jcr.jcr.AccessDenitionDenitionExceptionException: Access0 000:访问被拒绝……

您需要 清除队列 (或删除该项目)以取消阻止队列。

解决方法 resolution

尽管出现错误  javax.jcr.AccessDeniedException,则可能与分发服务用户的ACL/权限无关,但如果以下情况不适用于您的情况,则应考虑这一点。

诊断

在某些情况下,当复制的内容确实具有与特殊目录相关的特定配置时,可能会出现上述错误  jcr:lockIsDeep  属性。

为了确认诊断,您必须检查 每个提及的路径  ,并提供以下任何您可访问/适用的工具:

  1. 适用于开发实例的CRX/DE
  2. 存储库浏览器
  3. 在包管理器中创建内容包(此选项也是解决方案的一部分)

然后您需要检查  jcr:content  分发队列UI中找到的每个路径的节点,并验证是否:

  • It  有一个  jcr:lockIsDeep="(Boolean)true"  属性
  • It 不会  有一个  jcr:lockOwner="xxx"  属性
  • ( it 不会 有一个  mix:lockable  中的值  jcr:mixinTypes)

如果是这种情况,问题将得到确认,因为  jcr:lockIsDeep  属性不应单独存在。 此属性应始终与  jcr:lockOwner  时间  锁定  一个页面。

不能只设置 jcr:lockIsDeep  属性,即使使用JCR API,因此解释此情况的根本原因主要是使用单个属性安装了“损坏的”内容包。

分辨率

要修复内容,唯一的解决方案是在作者中安装包,该包在相应节点上设置了正确的属性。

您可以从具有相应内容的另一个实例创建包,或者,如果受影响的实例上只有此内容,则可以按照以下说明进行操作:

  1. 在已损坏的实例上为错误页面生成包
  2. 下载包
  3. 提取  .content.xml  对于page/jcr:content
  4. 使用手动删除行  jcr:lockIsDeep
  5. 使用新的/修复的.content.xml更新包
  6. 重新上传并安装修改后的包

然后,您可以再次检查页面属性,并成功测试复制/分发。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f