Última actualización el
3 may. 2021
Problema
Después de actualizar a AEM 6.2 o una versión posterior, la aplicación muestra los errores "Deserialización no permitida para la clase" (ver ejemplo a continuación).
java.lang.UnsupportedOperationException: Deserialization not allowed for class net.sf.ehcache.Element (on Thu Sep 21 12:29:55 CDT 2017) at org.kantega.notsoserial.DefaultNotSoSerial.preventDeserialization(DefaultNotSoSerial.java:256) at org.kantega.notsoserial.DefaultNotSoSerial.onBeforeResolveClass(DefaultNotSoSerial.java:248) at org.kantega.notsoserial.ObjectInputStreamClassVisitor.onBeforeResolveClass(ObjectInputStreamClassVisitor.java:48) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1613) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371) at net.sf.ehcache.store.disk.DiskStorageFactory.read(DiskStorageFactory.java:370) at net.sf.ehcache.store.disk.DiskStorageFactory.retrieve(DiskStorageFactory.java:886) at net.sf.ehcache.store.disk.Segment.decode(Segment.java:172) at net.sf.ehcache.store.disk.Segment.put(Segment.java:449) at net.sf.ehcache.store.disk.DiskStore.put(DiskStore.java:438) at net.sf.ehcache.store.FrontEndCacheTier.put(FrontEndCacheTier.java:267) at net.sf.ehcache.Cache.putInternal(Cache.java:1455) at net.sf.ehcache.Cache.put(Cache.java:1383) at net.sf.ehcache.Cache.put(Cache.java:1348)
Entorno
AEM 6.2 y versiones posteriores
Causa
Esto lo causa la solución de seguridad nososerial que se aplica a AEM. Para corregir el error se puede hacer una lista blanca de ciertas clases de java que permiten la deserialización.
Añada un archivo de lista blanca añadiendo este parámetro JVM:
-Dnotsoserial.whitelist=is-deserialized.txt
Resolución
-javaagent:notsoserial.jar -Dnotsoserial.whitelist=empty.txt -Dnotsoserial.dryrun=is-deserialized.txt