AEM部署後RDE服務因缺少OSGi套件組合而中斷
將程式碼部署到Adobe Experience Manager as a Cloud Service (AEMaaCS) RDE環境時,如果第三方OSGi套裝(如io.jsonwebtoken)因更嚴格的API區域限制而無法解析,就會造成服務中斷。 若要修正此問題,請使用Bundle-ClassPath或-conditionalpackage將必要的JAR檔案內嵌在您的專案中,使用aio aem:rde:install重新部署,並驗證所有相依性是否已成功解析。
說明 description
環境
- 產品: Adobe Experience Manager as a Cloud Service (AEMaaCS) — 網站
- 內容: RDE (快速開發環境)
- 工具:部署的
aio aem:rde:install命令
注意:標準雲端執行個體和本機部署仍不受影響。
問題/症狀
-
使用
aio aem:rde:install部署後,RDE環境變得無回應。 -
執行個體會顯示「服務中斷」訊息。
-
重新啟動或重設執行個體無法修正問題。
-
錯誤記錄檔顯示與
io.jsonwebtoken相關的第三方OSGi套件相依性未解析。 -
相依性在本機和標準雲端環境中可解決,但在RDE中會失敗,因為API區域限制較嚴格。
-
錯誤記錄檔摘錄:
Unable to resolve fpaec-aem-base-components.core 645: missing requirement fpaec-aem-base-components.core [ 645] osgi.wiring.package; (&(osgi.wiring.package=io.jsonwebtoken)(version>=0.11.0)(!(version>=1.0.0)))
解決方法 resolution
若要解決此問題,請遵循下列步驟:
-
複查RDE強制的API區域限制。 這些限制限制了封裝可見性,並封鎖對第三方套裝(如
io.jsonwebtoken)的存取權。 -
將必要的協力廠商程式庫內嵌至專案。 使用
-conditionalpackage或Bundle-ClassPath來包含下列JAR檔案:lib/jjwt-api-0.11.2.jarlib/jjwt-impl-0.11.2.jarlib/jjwt-jackson-0.11.2.jar
-
將下列指示新增至您的
bnd.bnd檔案:code language-none Bundle-ClassPath: ., lib/jjwt-api-0.11.2.jar, lib/jjwt-impl-0.11.2.jar, lib/jjwt-jackson-0.11.2.jarcode language-none -conditionalpackage: \ io.jsonwebtoken;version="0.11.2", \ io.jsonwebtoken.security;version="0.11.2" -
使用
aio aem:rde:install部署更新的封裝。 確認所有相依性均已解決,服務中斷不再發生。 -
在製作和發佈環境中測試部署以確保穩定性。