Risoluzione degli errori di deserializzazione dopo l’aggiornamento jackson-databind
Questo articolo spiega come risolvere gli errori di deserializzazione in AEM Sites forms che si verificano dopo l’aggiornamento di jackson-databind, in particolare quando si fa riferimento alla classe PropertyNamingStrategy$SnakeCaseStrategy rimossa.
Descrizione description
Ambiente
- Siti Adobe Experience Manager (AEM)
- jackson-databind versione 2.20 o successiva
Problema/Sintomi
- Si verificano errori durante il caricamento dei moduli in AEM Sites.
- Il messaggio di errore include
TypeNotPresentExceptioncon riferimento acom.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy. - Gli endpoint servlet che utilizzano Jackson per la deserializzazione JSON non riescono in fase di runtime se fanno riferimento alla classe rimossa.
Causa
La classe PropertyNamingStrategy$SnakeCaseStrategy è stata dichiarata obsoleta in jackson-databind 2.12 e rimossa in 2.20. Qualsiasi codice che fa riferimento a questa classe avrà esito negativo dopo l’aggiornamento a jackson-databind 2.20 o versione successiva.
Risoluzione resolution
Per risolvere l’errore di deserializzazione del modulo AEM Sites causato dalla rimozione di PropertyNamingStrategy$SnakeCaseStrategy, eseguire la procedura seguente:
-
Cercare nel codebase eventuali riferimenti a
com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy. -
Sostituire tutti gli utilizzi di
PropertyNamingStrategy$SnakeCaseStrategyconPropertyNamingStrategies$SnakeCaseStrategy(prendere nota del modulo al plurale).- Vecchio:
com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy - Nuovo:
com.fasterxml.jackson.databind.PropertyNamingStrategies$SnakeCaseStrategy
- Vecchio:
-
Controlla la base di codice per eventuali altre costanti o classi obsolete o rimosse da jackson-databind 2.20 e versioni successive e aggiornale ai relativi equivalenti supportati.
-
Assicurati che jackson-databind sia incluso nell’ambito “fornito” nella configurazione della build per evitare conflitti di versione con la piattaforma.
-
Distribuisci il codice aggiornato nel tuo ambiente AEM.
-
Verificare che
TypeNotPresentExceptionnon venga più visualizzato nei registri e che i moduli vengano caricati come previsto.