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 TypeNotPresentException con riferimento a com.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:

  1. Cercare nel codebase eventuali riferimenti a com.fasterxml.jackson.databind.PropertyNamingStrategy$SnakeCaseStrategy.

  2. Sostituire tutti gli utilizzi di PropertyNamingStrategy$SnakeCaseStrategy con PropertyNamingStrategies$SnakeCaseStrategy (prendere nota del modulo al plurale).

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

  4. Assicurati che jackson-databind sia incluso nell’ambito “fornito” nella configurazione della build per evitare conflitti di versione con la piattaforma.

  5. Distribuisci il codice aggiornato nel tuo ambiente AEM.

  6. Verificare che TypeNotPresentException non venga più visualizzato nei registri e che i moduli vengano caricati come previsto.

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