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
要解决此问题:
-
将服务
legacySupport.enabled.name(com.day.cq.tagging.impl.JcrTagManagerFactoryImplDay CQ标记服务 )的OSGi配置属性 设置为false。 这可确保AEM使用/content/cq:tags作为根路径。 -
请确保作者和发布者环境中的
/etc/tags节点缺失或为空。 -
要清除发布者,请执行以下操作:
- 创建包含
/etc/tags但不包含任何子节点的空白内容包。 - 在作者上安装该包并将其复制到发布服务器。 这将从两个环境中删除
/etc/tags。
- 创建包含
-
或者,通过从作者分发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上的标记。