Les modèles Sling avec jakarta.annotation.PostConstruct échouent sur AEM 6.5 LTS
Les modèles Sling sur le LTS AEM 6.5 ne parviennent pas à s’initialiser lorsqu’ils utilisent jakarta.annotation.PostConstruct, ce qui empêche l’exécution de la logique post-construction et perturbe le comportement des composants. La mise à jour des modèles pour utiliser javax.annotation.PostConstruct restaure l’initialisation correcte et les fonctionnalités attendues du composant.
Pour résoudre ce problème, rétablissez les modèles Sling sur javax.annotation.PostConstruct.
Description description
Environnement
- Adobe Experience Manager (AEM) Managed Services
- AEM 6.5 LTS avec modèles Sling
Problème/Symptômes
- Les méthodes de
@PostConstructdu modèle Sling ne s’exécutent pas après avoir basculé dejakarta.annotation.PostConstruct. - Les composants qui reposent sur une logique post-construction ne s’affichent pas ou ne se comportent pas correctement.
- Les modèles sont déployés avec succès, mais la logique d’initialisation ne s’exécute pas.
Cause principale
AEM 6.5 LTS ne prend pas entièrement en charge les modèles Sling utilisant l’espace de noms jakarta.annotation. L’implémentation des modèles Sling ne reconnaît que les javax.annotation.PostConstruct, de sorte que les méthodes jakarta.annotation.PostConstruct ne sont pas exécutées lors de l’initialisation du modèle.
Résolution resolution
Procédure à suivre :
- Mettez à jour toutes les classes de modèles Sling pour utiliser
javax.annotation.PostConstructau lieu dejakarta.annotation.PostConstruct. - Supprimez toutes les
jakarta.*imports liés aux@PostConstructde toutes les classes de modèles Sling. - Passez en revue les dépendances de votre projet (par exemple,
pom.xml) et vérifiez que seules les dépendancesjavaxsont utilisées pour les annotations relatives aux modèles Sling. - Recréez le projet pour vous assurer que les modifications apportées à la dépendance et à l’importation sont correctement appliquées.
- Déployez le code mis à jour et vérifiez que le lot contenant les modèles Sling est à l’état Actif dans le
/system/console/bundles. - Vérifiez que toutes les classes de modèles Sling sont répertoriées dans
/system/console/status-slingmodels. - Vérifiez que les méthodes
@PostConstructsont appelées avec succès et que les composants se comportent comme prévu.
Remarques :
- AEM 6.5 LTS ne prend pas en charge les artefacts Sling migrés vers l’espace de noms
jakarta.*, y comprisjakarta-based @PostConstruct. - Ce comportement s’aligne sur les implémentations de référence telles que le projet AEM WKND Sites, qui continue à utiliser
javax.annotation.PostConstructsur AEM 6.5 LTS.