Los modelos Sling con jakarta.annotation.PostConstruct fallan en AEM 6.5 LTS
Los modelos Sling en AEM 6.5 LTS no se pueden inicializar cuando usan jakarta.annotation.PostConstruct, lo que impide que se ejecute la lógica posterior a la construcción e interrumpe el comportamiento del componente. Al actualizar los modelos para que utilicen javax.annotation.PostConstruct, se restaurará la inicialización adecuada y la funcionalidad de componente esperada.
Para resolver el problema, revierta Modelos Sling a javax.annotation.PostConstruct.
Descripción description
Entorno
- Adobe Experience Manager (AEM) Managed Services
- AEM 6.5 LTS con modelos Sling
Problema/Síntomas
- Los métodos del modelo Sling
@PostConstructno se ejecutan después de cambiar dejakarta.annotation.PostConstruct. - Los componentes que dependen de la lógica posterior a la construcción no se pueden procesar ni comportar correctamente.
- Los modelos se implementan correctamente, pero la lógica de inicialización no se ejecuta.
Causa principal
AEM 6.5 LTS no es totalmente compatible con los modelos Sling que usan el espacio de nombres jakarta.annotation. La implementación de modelos Sling solo reconoce javax.annotation.PostConstruct, por lo que los métodos jakarta.annotation.PostConstruct no se ejecutan durante la inicialización del modelo.
Resolución resolution
Pasos para resolver:
- Actualice todas las clases del modelo Sling para utilizar
javax.annotation.PostConstructen lugar dejakarta.annotation.PostConstruct. - Quitar todas las
jakarta.*importaciones relacionadas con@PostConstructde todas las clases del modelo Sling. - Revise las dependencias del proyecto (por ejemplo,
pom.xml) y confirme que solo se utilizanjavaxdependencias para las anotaciones relevantes para los modelos Sling. - Vuelva a generar el proyecto para asegurarse de que los cambios de dependencia e importación se aplican correctamente.
- Implemente el código actualizado y compruebe que el paquete que contiene los modelos Sling está en el estado Activo en
/system/console/bundles. - Compruebe que todas las clases de modelos Sling se enumeran en
/system/console/status-slingmodels. - Confirme que los métodos
@PostConstructse han invocado correctamente y que los componentes se comportan según lo esperado.
Notas:
- AEM 6.5 LTS no admite artefactos de Sling migrados al espacio de nombres
jakarta.*, incluidojakarta-based @PostConstruct. - Este comportamiento se alinea con las implementaciones de referencia como el proyecto AEM WKND Sites, que sigue usando
javax.annotation.PostConstructen AEM 6.5 LTS.