AEM as a Cloud Service에서 배포 오류 해결
이 문서에서는 저장소 초기화 스크립트의 사용자 지정으로 인해 발생한 Adobe Experience Manager(AEM) as a Cloud Service의 배포 오류를 다룹니다. 기능 분기를 개발 단계에 배포할 때 이러한 오류는 성공적인 배포를 방해할 수 있으며 로그에 쉽게 표시되지 않습니다. 디버그 로그를 분석하면 문제가 해결됩니다.
설명 description
환경
- 제품: Adobe Experience Manager(AEM) as a Cloud Service - 사이트
- 단계: 개발
- 제한: Felix 콘솔을 통한 직접 수정이 제한됩니다.
문제/증상
-
저장소 초기화 오류로 인해 기능 분기 배포가 실패합니다.
-
로그에 다음과 같은 메시지가 표시됩니다.
code language-none Exception in a SlingRepositoryInitializer, SlingRepository service registration aborted javax.jcr.RepositoryException: Applying repoinit operation failed despite retry; set loglevel to DEBUG to see all exceptions. Last exception message from "Configuration PID 310, script[ 0] " was: CreatePath execution failed at cq(sling:Folder): javax.jcr.nodetype.ConstraintViolationException: org.apache.jackrabbit.oak.spi.state.ReadyOnlyBuilderException: This builder is read-only... -
오류는 저장소의 읽기 전용 노드 또는 변경할 수 없는 부분을 수정하려는 시도를 나타냅니다.
해결 방법 resolution
문제를 해결하려면 다음 단계를 수행합니다.
-
저장소 초기화 중에 자세한 예외 정보를 가져오려면 저장소 초기화 작업을 위해 로그 수준을
DEBUG(으)로 설정하십시오. Felix 콘솔을 통한 직접 액세스가 제한되어 있으므로 프로젝트 내에서 사용자 정의 로깅 구성을 사용하십시오. -
프로젝트의
/apps/<your-project>/config/폴더 아래에 OSGi 구성 파일을 만듭니다(예:com.adobe.granite.logging.impl.LogManagerFactory.config).-
이 파일에 다음 속성을 포함하십시오.
code language-none loggers=[ "org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory"] org.apache.sling.jcr.repoinit.impl.RepositoryInitializerFactory.log.level=DEBUG
-
-
Cloud Manager을 통해 업데이트된 구성을 배포하고 배포 후 Repo-init 작업에 대한 자세한 디버그 로그가 표시되는지 확인하십시오.
-
디버그 로그에서 저장소 초기화 중 오류에 대한 추가 컨텍스트를 검토하여 승인되지 않은 수정 사항 또는 읽기 전용 노드 변경 시도를 표시합니다.
-
Repo-init 스크립트가 저장소의 변경 불가능한 부분(예: 시스템 경로) 내에 노드를 생성하거나 수정하지 않도록 합니다.
-
읽기 전용 영역에 있는 경우
CreatePath(으)로 정의된 노드를 타깃팅하는cq(sling:Folder)명령을 제거하거나 조정하십시오. 새 노드 또는 구조를 추가해야 하는 경우 허용된 경로에 배포된 콘텐츠 패키지를 사용하여 이러한 변경 사항을 별도로 패키징합니다.
다음 단계를 수행하면 AEM의 시스템 경로 제한을 준수하면서 배포 실패를 식별하고 해결하는 데 도움이 됩니다.