Beheben von Deserialisierungsfehlern nach einem Upgrade von jackson-dataBind

In diesem Artikel wird erläutert, wie Deserialisierungsfehler in AEM Sites Forms behoben werden, die nach dem Upgrade von jackson-databind auftreten, insbesondere wenn auf die entfernte PropertyNamingStrategy$SnakeCaseStrategy verwiesen wird.

Beschreibung description

Umgebung

  • Adobe Experience Manager (AEM) Sites
  • jackson-dataBind Version 2.20 oder höher

Problem/Symptome

  • Fehler beim Laden von Formularen in AEM Sites.
  • Die Fehlermeldung enthält TypeNotPresentException verweisende com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy.
  • Servlet-Endpunkte, die Jackson für die JSON-Deserialisierung verwenden, schlagen zur Laufzeit fehl, wenn sie auf die entfernte Klasse verweisen.

Ursache

Die PropertyNamingStrategy$SnakeCaseStrategy-Klasse ist seit jjackson-databind 2.12 veraltet und wurde in 2.20 entfernt. Jeder Code, der auf diese Klasse verweist, schlägt nach der Aktualisierung auf jackson-databind 2.20 oder höher fehl.

Lösung resolution

Gehen Sie wie folgt vor, um den AEM Sites-Deserialisierungsfehler zu beheben, der durch das Entfernen von PropertyNamingStrategy$SnakeCaseStrategy verursacht wurde:

  1. Durchsuchen Sie Ihre Code-Basis nach Verweisen auf com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy.

  2. Ersetzen Sie alle Verwendungen von PropertyNamingStrategy$SnakeCaseStrategy durch PropertyNamingStrategies$SnakeCaseStrategy (beachten Sie die Pluralform).

    • Alt: com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy
    • Neu: com.fasterxml.jackson.databind.PropertyNamingStrategies$SnakeCaseStrategy
  3. Überprüfen Sie Ihre Codebasis auf alle anderen veralteten oder entfernten Konstanten oder Klassen aus jackson-databind 2.20 und höher und aktualisieren Sie sie auf die unterstützten Entsprechungen.

  4. Stellen Sie sicher, dass jackson-dataBind in Ihrer Build-Konfiguration mit dem Bereich „provided“ enthalten ist, um Versionskonflikte mit der Plattform zu vermeiden.

  5. Stellen Sie den aktualisierten Code in Ihrer AEM-Umgebung bereit.

  6. Stellen Sie sicher, dass die TypeNotPresentException nicht mehr in den Protokollen angezeigt wird und dass die Formulare erwartungsgemäß geladen werden.

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