TagManager.resolve在AEM as a Cloud Service Publisher上返回空值

在AEM as a Cloud Service Publisher环境中,对TagManager.resolve的调用返回null,但相同的逻辑在AEM 6.5或Author环境中可以正常工作。 对于标记分辨率,系统默认为/etc/tags,而不是标准AEMaaCS路径: /content/cq:tags。 要解决此问题,请更新OSGi配置以禁用旧版支持,并从作者和发布者环境中删除/etc/tags节点。

描述 description

环境

Adobe Experience Manager (AEM) as a Cloud Service — 站点

问题/症状

  • Servlet代码使用:

    code language-none
    TagManager tagManager = request.getResourceResolver().adaptTo(TagManager.class);    Tag tag = tagManager.resolve("/content/cq:tags/...");
    

    TagManager仅在Publisher上解析为null,而在Author上解析为。

  • 日志文件显示:

    com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /etc/tags as root path for tags

    这表示系统默认使用/etc/tags

  • Publisher上的/etc/tags下存在标记,而Author上正确配置了/content/cq:tags

根本原因

发布服务器上存在/etc/tags下的标记会导致AEM默认使用旧版/etc/tags路径。

解决方法 resolution

要解决此问题:

  1. 将服务legacySupport.enabled.namecom.day.cq.tagging.impl.JcrTagManagerFactoryImplDay CQ标记服务 )的OSGi配置属性 设置为false。 这可确保AEM使用/content/cq:tags作为根路径。

  2. 请确保作者和发布者环境中的/etc/tags节点缺失或为空。

  3. 要清除发布者,请执行以下操作:

    1. 创建包含/etc/tags但不包含任何子节点的空白内容包。
    2. 在作者上安装该包并将其复制到发布服务器。 这将从两个环境中删除/etc/tags
  4. 或者,通过从作者分发UI发送/etc/tagsDelete 操作请求,直接从Publisher中删除 节点。

因此:

  • AEM日志应显示:com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /content/cq:tags as root path for tags
  • TagManager.resolve将正确使用/content/cq:tags上的标记。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f