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
TypeNotPresentExceptionverweisendecom.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:
-
Durchsuchen Sie Ihre Code-Basis nach Verweisen auf
com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy. -
Ersetzen Sie alle Verwendungen von
PropertyNamingStrategy$SnakeCaseStrategydurchPropertyNamingStrategies$SnakeCaseStrategy(beachten Sie die Pluralform).- Alt:
com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy - Neu:
com.fasterxml.jackson.databind.PropertyNamingStrategies$SnakeCaseStrategy
- Alt:
-
Ü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.
-
Stellen Sie sicher, dass jackson-dataBind in Ihrer Build-Konfiguration mit dem Bereich „provided“ enthalten ist, um Versionskonflikte mit der Plattform zu vermeiden.
-
Stellen Sie den aktualisierten Code in Ihrer AEM-Umgebung bereit.
-
Stellen Sie sicher, dass die
TypeNotPresentExceptionnicht mehr in den Protokollen angezeigt wird und dass die Formulare erwartungsgemäß geladen werden.