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 TypeNotPresentException référencement des com.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 :

  1. Recherchez dans votre base de code toute référence à com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy.

  2. Remplacez toutes les utilisations de PropertyNamingStrategy$SnakeCaseStrategy par PropertyNamingStrategies$SnakeCaseStrategy (notez le pluriel).

    • Ancien : com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy
    • Nouveau : com.fasterxml.jackson.databind.PropertyNamingStrategies$SnakeCaseStrategy
  3. 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.

  4. 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.

  5. Déployez le code mis à jour dans votre environnement AEM.

  6. Vérifiez que le TypeNotPresentException n’apparaît plus dans les journaux et que les formulaires se chargent comme prévu.

recommendation-more-help
experience-cloud-kcs-help-kbarticles