在AEM 6.5 LTS上使用jakarta.annotation.PostConstruction的Sling模型失敗
AEM 6.5 LTS上的Sling模型使用jakarta.annotation.PostConstruct時無法初始化,這會使建構後邏輯無法執行並中斷元件行為。 更新模型以使用javax.annotation.PostConstruct會還原適當的初始化和預期的元件功能。
若要解決此問題,請將Sling模型還原為javax.annotation.PostConstruct。
說明 description
環境
- Adobe Experience Manager (AEM) Managed Services
- 含Sling模型的AEM 6.5 LTS
問題/症狀
- 從
@PostConstruct切換後,Sling模型jakarta.annotation.PostConstruct方法沒有執行。 - 依賴建構後邏輯的元件無法轉譯或行為正確。
- 模型部署成功,但初始化邏輯無法執行。
根本原因
AEM 6.5 LTS不完全支援使用jakarta.annotation名稱空間的Sling模型。 Sling模型實作只辨識javax.annotation.PostConstruct,因此在模型初始化期間不會執行jakarta.annotation.PostConstruct方法。
解決方法 resolution
解決步驟:
- 更新所有Sling模型類別以使用
javax.annotation.PostConstruct而非jakarta.annotation.PostConstruct。 - 從所有Sling模型類別中移除與
jakarta.*相關的所有@PostConstruct匯入。 - 檢閱您的專案相依性(例如
pom.xml),並確認僅將javax相依性用於Sling模型相關的註解。 - 重建專案以確保相依性和匯入變更正確套用。
- 部署更新的程式碼,並確認包含Sling模型的套件組合在 中處於 作用中
/system/console/bundles狀態。 - 確認所有Sling模型類別都列在
/system/console/status-slingmodels.中 - 確認已成功叫用
@PostConstruct方法,且元件如預期般運作。
附註:
- AEM 6.5 LTS不支援移轉到
jakarta.*名稱空間(包括jakarta-based @PostConstruct)的Sling成品。 - 此行為會與AEM WKND Sites專案之類的參考實作一致,此專案會繼續在AEM 6.5 LTS上使用
javax.annotation.PostConstruct。
相關閱讀
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f