Cloud Manager-Implementierung schlägt wegen Berechtigungen von Sling-Distribution-Importer fehl | AEM Cloud Service

Problem

Bei einer Implementierung von Cloud Manager auf AEM als Cloud Service-Umgebung schlägt der Implementierungsschritt fehl und Fehler wie der folgende werden angezeigt.

[Queue Processor for Subscriber agent forwardPublisherSubscriber] org.apache.jackrabbit.vault.fs.io.Importer Error while committing changes. Retrying import from checkpoint at /. Retries 4/10 
 
 
[Queue Processor for Subscriber agent forwardPublisherSubscriber] org.apache.sling.distribution.journal.impl.subscriber.DistributionSubscriber Error processing queue item 
org.apache.sling.distribution.common.DistributionException: Error processing distribution package dstrpck-1583514457813-c81e7751-2da6-4d00-9814-434187f08d32. Retry attempts 162/infinite. 
... 
Caused by: org.apache.sling.api.resource.PersistenceException: Unable to commit changes to session. 
... 
Caused by: javax.jcr.AccessDeniedException: OakAccess0000: Access denied 
 
 
[EventAdminAsyncThread #7] org.apache.sling.distribution.journal.impl.publisher.DistributionPublisher [null] Error processing distribution package dstrpck-1583514457813-c81e7751-2da6-4d00-9814-434187f08d32. Retry attempts 344/infinite. Message: Error trying to extract package at path /etc/packages/com.myapp/myapp-base.ui.content-5.1.0-SNAPSHOT.zip

Ursache

Der Sling-Distribution-Importer-Benutzer benötigt zusätzliche Berechtigungen für die im ui.content-Paket definierten Inhaltspfade.  Das bedeutet normalerweise, dass wir Berechtigungen für sowohl /conf als auch /var hinzufügen müssen.

Lösung

Dazu müssen Sie ein RepositoryInitializer OSGi-Konfigurationsskript zu Ihrem App-Implementierungspaket hinzufügen, um ACLs für den Sling-Distribution-Import-Benutzer bereitzustellen.
Im obigen beispielhaften Fehler enthält die Datei package myapp-base.ui.content-*.zip den Inhalt unter /conf und /var/workflow.  Damit die Implementierung nicht fehlschlägt, müssten wir Berechtigungen für Sling-Distribution-Importer unter diesen Pfaden hinzufügen. 

Hier ist ein Beispiel [1] einer solchen OSGi-Konfiguration, die zusätzliche Berechtigungen für den Benutzer des Sling-Distribution-Importers hinzufügt.  Bei dieser Konfiguration werden Berechtigungen unter /var hinzugefügt.  Diese XML-Datei unten [1] muss dem Anwendungspaket unter /apps/myapp/config hinzugefügt werden (wobei „myapp“ der Ordner ist, in dem Ihr Anwendungs-Code gespeichert wird).

[1] org.apache.sling.jcr.repoinit.RepositoryInitializer-DistributionService.config

Adobe-Logo

Bei Ihrem Konto anmelden