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 @PostConstruct du modèle Sling ne s’exécutent pas après avoir basculé de jakarta.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 :

  1. Mettez à jour toutes les classes de modèles Sling pour utiliser javax.annotation.PostConstruct au lieu de jakarta.annotation.PostConstruct.
  2. Supprimez toutes les jakarta.*imports liés aux @PostConstruct de toutes les classes de modèles Sling.
  3. Passez en revue les dépendances de votre projet (par exemple, pom.xml) et vérifiez que seules les dépendances javax sont utilisées pour les annotations relatives aux modèles Sling.
  4. Recréez le projet pour vous assurer que les modifications apportées à la dépendance et à l’importation sont correctement appliquées.
  5. 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.
  6. Vérifiez que toutes les classes de modèles Sling sont répertoriées dans /system/console/status-slingmodels.
  7. Vérifiez que les méthodes @PostConstruct  sont 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 compris jakarta-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.PostConstruct sur AEM 6.5 LTS.

Lecture connexe

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