修正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

若要解決此問題:

  1. 修改repoInit指令碼,將jcr:mixinTypes寫入為多值陣列,或移除已經存在mixin的行。
  2. org.apache.sling.jcr.repoinit套件組合升級至1.154或更新版本,其中包含此問題的修正。 此更新可能包含在未來基礎發行中;檢查發行排程的可用性
  3. 在更新的套件組合可供使用之前,請確定repoInit指令碼使用陣列來處理多值屬性。

透過實施這些步驟,可有效緩解存放庫初始化錯誤所導致的管道建置失敗。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f