AccessDeniedException でブロックされた配布キュー
Quick Publish、公開を管理、またはレプリケートを使用してページコンテンツ、XF、またはその他のリソースをレプリケートしようとすると、オーサーの配布キューがブロックされます。 これを確認するには、配布 UI から publish 配布キューをチェックします(AEM > Tools > Deployment > Distribution)。 このドキュメントに記載されている手順に従って、問題を解決します。
説明 description
環境
- Adobe Experience Manager
- Experience Manager as a cloud service
問題/症状
「クイックPublish」、「公開を管理」、「レプリケート」を使用して一部のページコンテンツ(または XF およびその他の種類のリソース)をレプリケートしようとすると、作成者の配布キューが ブロック されます。
これは、配布 UI から publish Distribution Queue を確認することで確認できます(AEM - ツール – デプロイメント – 配布)。
Golden Publisher キュー(リストから太字で入力)を選択すると、詳細が表示され、特に関連する PATH (ここでは複数の要素が存在できます):
「 ログ 」タブを調べると、次の対応するエラーが表示されます。
2023/03/08 12:11:26:238 – 情報 – 配布パッケージでリクエストを受け付けた PackageMessage (pubId=a117-68099-41 1e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck-1678277486031-63159f4b-c577-4079-8741-d41660597d20, pkgType=journal_filevault, pkgLength=6330, pubAgentName=publish, userId=replication-service, paths=[ /content/wknd/fr] , deep パス=[ ]) (オフセット=158705)
2023/03/08 12:11:27:459 – 警告 – メッセージ:配布パッケージ PackageMessage (pubSlingId=a1133c97-6809-411e-a435-4eea0ecbe889, reqType=ADD, pkgId=dstrpck-1678277486031-63159f4b-c 577-4079-8741-d41660597d20, pkgType=journal_filevault, pkgLength=6330, pubAgentName=publish, userId=replication-service, paths=[ /content/wknd/fr], deepPaths=[ ]) at offset=158705 が'javax.jcr.AccessDeniedException: OakAccess00000: Access denied'のため、インポーターは後で再試行します。
Stacktrace:org.apache.sling.distribution.common.DistributionException: javax.jcr.AccessDeniedException: OakAccess0000:Access denied[…]
キューのブロックを解除するには、キューをクリア (またはその項目を削除)する必要があります。
解決策 resolution
エラーが javax.jcr.AccessDeniedException 生しているにもかかわらず、配布サービスユーザーの ACL/権限とは関係がない可能性がありますが、次のシナリオがお客様の場合に適用されない場合は、これを考慮する必要があります。
診断
レプリケートされたコンテンツに、特別な jcr:lockIsDeep プロパティに関連する特定の設定がある場合は、上記のエラーが発生することがあります。
診断を確定するには、(前述の各パス を、アクセス可能または適用可能な次のツールのいずれかで検査する必要があります
- 開発インスタンスのCRX/DE
- リポジトリブラウザー
- パッケージマネージャーでのコンテンツパッケージの作成(このオプションも解決の一部です)
次に、配布キュー UI に表示されている各パスの jcr:content ノードを確認し、次の点を確認する必要があります。
- does have a
jcr:lockIsDeep="(Boolean) true" プロパティ jcr:lockOwner="xxx"プロパティ ありません- (
jcr:mixinTypes** にmix:lockableの値** ありません)
この場合、jcr:lockIsDeep プロパティは単独では存在すべきではないので、問題は確認されます。 ページを ロック する場合、このプロパティは常に jcr:lockOwner と共同で設定する必要があります。
JCR API を使用しても、jcr:lockIsDeep プロパティのみを設定することはできません。そのため、この状況を説明する根本原因は、主にその単一のプロパティで 破損 コンテンツパッケージをインストールしたことにあります。
解決策
コンテンツを修正する唯一の解決策は、対応するノードに正しいプロパティが設定されているパッケージをオーサーにインストールすることです。
そのパッケージは、対応するコンテンツを持つ別のインスタンスから作成するか、影響を受けるインスタンスにこのコンテンツしかない場合は、次の手順に従います。
- 問題のあるページの壊れたインスタンスに対してパッケージを生成します
- パッケージをダウンロードします
- page/jcr:content の
.content.xmlを抽出します。 - jcr:lockIsDeep を使用して手動で行を削除する
- 新しい/固定の.content.xml でパッケージを更新します
- 変更したパッケージの再アップロードとインストール
ページのプロパティを再度確認し、レプリケーション/配布を正常にテストします。