TagManager.resolve가 AEM as a Cloud Service 게시자에서 null을 반환합니다.
AEM as a Cloud Service Publisher 환경에서 TagManager.resolve을(를) 호출하면 null을 반환하지만, AEM 6.5 또는 Author 환경에서는 동일한 논리가 올바르게 작동합니다. 시스템은 기본적으로 표준 AEMaaCS 경로 /etc/tags이(가) 아닌 태그 확인을 위해 /content/cq:tags로 설정되어 있습니다. 이 문제를 해결하려면 OSGi 구성을 업데이트하여 레거시 지원을 비활성화하고 작성자 및 게시자 환경 모두에서 /etc/tags 노드를 제거하십시오.
설명 description
환경
Adobe Experience Manager(AEM) as a Cloud Service - Sites
문제/증상
-
서블릿 코드는 다음을 사용합니다.
code language-none TagManager tagManager = request.getResourceResolver().adaptTo(TagManager.class); Tag tag = tagManager.resolve("/content/cq:tags/...");TagManager는 작성자가 아닌 게시자에서만 null로 확인됩니다.
-
로그 파일에는 다음이 표시됩니다.
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /etc/tags as root path for tags시스템이
/etc/tags(으)로 기본 설정되어 있음을 나타냅니다. -
/etc/tags이(가) 작성자에 올바르게 구성된 동안 게시자의/content/cq:tags에 태그가 있습니다.
근본 원인
게시자의 /etc/tags 아래에 태그가 있으면 AEM이 기본적으로 기존 /etc/tags 경로로 설정됩니다.
해결 방법 resolution
문제를 해결하려면:
-
서비스
legacySupport.enabled.name(com.day.cq.tagging.impl.JcrTagManagerFactoryImpl일 CQ 태그 지정 서비스 )에 대해 OSGi 구성 속성 을(를) false로 설정하십시오. 이렇게 하면 AEM에서/content/cq:tags을(를) 루트 경로로 사용합니다. -
작성자와 게시자 환경 모두에서
/etc/tags노드가 누락되었거나 비어 있는지 확인하십시오. -
게시자를 정리하려면:
/etc/tags을(를) 포함하지만 하위 노드가 없는 빈 콘텐츠 패키지를 만듭니다.- Author에 패키지를 설치하고 Publisher에 복제합니다. 두 환경에서
/etc/tags이(가) 제거됩니다.
-
또는 작성자 배포 UI에서
/etc/tags삭제 작업 요청을 전송하여 게시자에서 직접 노드를 삭제하십시오.
그 결과는 다음과 같습니다.
- AEM 로그가 표시되어야 함:
com.day.cq.tagging.impl.JcrTagManagerFactoryImpl Using /content/cq:tags as root path for tags TagManager.resolve이(가)/content/cq:tags의 태그를 올바르게 사용합니다.