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

若要解決此問題,請遵循下列步驟:

  1. 複查RDE強制的API區域限制。 這些限制限制了封裝可見性,並封鎖對第三方套裝(如io.jsonwebtoken)的存取權。

  2. 將必要的協力廠商程式庫內嵌至專案。 使用-conditionalpackageBundle-ClassPath來包含下列JAR檔案:

    • lib/jjwt-api-0.11.2.jar
    • lib/jjwt-impl-0.11.2.jar
    • lib/jjwt-jackson-0.11.2.jar
  3. 將下列指示新增至您的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.jar
    
    code language-none
    -conditionalpackage: \
      io.jsonwebtoken;version="0.11.2", \
      io.jsonwebtoken.security;version="0.11.2"
    
  4. 使用aio aem:rde:install部署更新的封裝。 確認所有相依性均已解決,服務中斷不再發生。

  5. 在製作和發佈環境中測試部署以確保穩定性。

相關閱讀

如何在AEM中使用快速開發環境

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