修正AEM組建中的jcr:mixinTypes ValueFormatException
Adobe Experience Manager (AEM) as a Cloud Service中的管道組建因過期的org.apache.sling.jcr.repoinit套件組合而失敗。 當repoInit指令碼錯誤地將單一值指派給多值JCR屬性,觸發 ValueFormatException 時,就會發生此問題。 本文會說明根本原因,並提供更新套件組合併修正指令碼以解決問題的步驟。
說明 description
環境
- Adobe Experience Manager (AEM) as a Cloud Service — 網站
- 目前的
org.apache.sling.jcr.repoinit套件組合版本是1.1.38。需要1.154版或更新版本。 - 管道故障在部署期間間歇性發生。 開發環境部署通常會成功。
問題/症狀
管道建置失敗,並出現以下錯誤:
SlingRepositoryInitializer發生例外狀況,SlingRepository服務註冊中止javax.jcr.RepositoryException:儘管重試仍套用repoinit作業失敗;將loglevel設定為DEBUG以檢視所有例外狀況。 來自「組態PID 313,指令碼[ 0]」的最後一個例外狀況訊息是:無法在路徑[ /conf/somepath]上設定屬性: javax.jcr.ValueFormatException:無法將單一值指派給多值屬性: jcr:mixinTypes = mix:lockable
根本原因
repoInit指令碼嘗試指派 jcr:mixinTypes作為單一值,而非作為多值陣列。 這會造成未處理的ValueFormatException,導致管道執行失敗。
解決方法 resolution
若要解決此問題:
- 修改repoInit指令碼,將
jcr:mixinTypes寫入為多值陣列,或移除已經存在mixin的行。 - 將
org.apache.sling.jcr.repoinit套件組合升級至1.154或更新版本,其中包含此問題的修正。 此更新可能包含在未來基礎發行中;檢查發行排程的可用性。 - 在更新的套件組合可供使用之前,請確定repoInit指令碼使用陣列來處理多值屬性。
透過實施這些步驟,可有效緩解存放庫初始化錯誤所導致的管道建置失敗。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f