Résolution des échecs de désérialisation après la mise à niveau de jackson-databind
Cet article explique comment résoudre les échecs de désérialisation dans AEM Sites forms qui se produisent après la mise à niveau de jackson-databind, en particulier lorsque la classe PropertyNamingStrategy$SnakeCaseStrategy supprimée est référencée.
Description description
Environnement
- Sites Adobe Experience Manager (AEM)
- jackson-databind version 2.20 ou ultérieure
Problème/Symptômes
- Des erreurs se produisent lors du chargement des formulaires dans AEM Sites.
- Le message d’erreur inclut
TypeNotPresentExceptionréférencement descom.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy. - Les points d’entrée de servlet utilisant Jackson pour la désérialisation JSON échouent à l’exécution s’ils référencent la classe supprimée.
Cause
La classe PropertyNamingStrategy$SnakeCaseStrategy a été abandonnée dans jackson-databind 2.12 et supprimée dans 2.20. Tout code référençant cette classe échouera après la mise à niveau vers jackson-databind 2.20 ou une version ultérieure.
Résolution resolution
Pour résoudre l’erreur de désérialisation des formulaires AEM Sites due à la suppression de PropertyNamingStrategy$SnakeCaseStrategy, procédez comme suit :
-
Recherchez dans votre base de code toute référence à
com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy. -
Remplacez toutes les utilisations de
PropertyNamingStrategy$SnakeCaseStrategyparPropertyNamingStrategies$SnakeCaseStrategy(notez le pluriel).- Ancien :
com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy - Nouveau :
com.fasterxml.jackson.databind.PropertyNamingStrategies$SnakeCaseStrategy
- Ancien :
-
Vérifiez votre base de code pour toute autre constante ou classe obsolète ou supprimée de jackson-databind 2.20 et versions ultérieures, et mettez-les à jour vers leurs équivalents pris en charge.
-
Assurez-vous que jackson-databind est inclus avec la portée « fournie » dans votre configuration de version pour éviter les conflits de version avec la plateforme.
-
Déployez le code mis à jour dans votre environnement AEM.
-
Vérifiez que le
TypeNotPresentExceptionn’apparaît plus dans les journaux et que les formulaires se chargent comme prévu.