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

문제를 해결하려면:

  1. 서비스 legacySupport.enabled.name(com.day.cq.tagging.impl.JcrTagManagerFactoryImpl일 CQ 태그 지정 서비스 )에 대해 OSGi 구성 속성 을(를) false로 설정하십시오. 이렇게 하면 AEM에서 /content/cq:tags을(를) 루트 경로로 사용합니다.

  2. 작성자와 게시자 환경 모두에서 /etc/tags 노드가 누락되었거나 비어 있는지 확인하십시오.

  3. 게시자를 정리하려면:

    1. /etc/tags을(를) 포함하지만 하위 노드가 없는 빈 콘텐츠 패키지를 만듭니다.
    2. Author에 패키지를 설치하고 Publisher에 복제합니다. 두 환경에서 /etc/tags이(가) 제거됩니다.
  4. 또는 작성자 배포 UI에서 /etc/tags삭제 작업 요청을 전송하여 게시자에서 직접 노드를 삭제하십시오.

그 결과는 다음과 같습니다.

  • 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