Issue
You might get an error when trying to deserialize a session, which looks similar to this:
java.lang.IllegalStateException: Error deserializing Session [2522563CC05A5789E25189BD49FFB38C] org.apache.catalina.session.PersistentManagerBase.loadSessionFromStore(PersistentManagerBase.java:766) org.apache.catalina.session.PersistentManagerBase.swapIn(PersistentManagerBase.java:710) org.apache.catalina.session.PersistentManagerBase.findSession(PersistentManagerBase.java:494) org.apache.catalina.connector.Request.doGetSession(Request.java:2974) org.apache.catalina.connector.Request.getSessionInternal(Request.java:2694) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:512) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:880) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1601) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748) java.lang.ClassNotFoundException: com.liferay.journal.web.internal.util.JournalUtil$FiniteUniqueStack org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188) java.lang.Class.forName0(Native Method) java.lang.Class.forName(Class.java:348) org.apache.catalina.util.CustomObjectInputStream.resolveClass(CustomObjectInputStream.java:159) java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1868) java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751) java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042) java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573) java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) org.apache.catalina.session.StandardSession.doReadObject(StandardSession.java:1587) org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1040) org.apache.catalina.session.JDBCStore.load(JDBCStore.java:654) org.apache.catalina.session.PersistentManagerBase.loadSessionFromStore(PersistentManagerBase.java:760) org.apache.catalina.session.PersistentManagerBase.swapIn(PersistentManagerBase.java:710) org.apache.catalina.session.PersistentManagerBase.findSession(PersistentManagerBase.java:494) org.apache.catalina.connector.Request.doGetSession(Request.java:2974) org.apache.catalina.connector.Request.getSessionInternal(Request.java:2694) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:512) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:880) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1601) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748)
Environment
- Liferay DXP 7.0+
Resolution
- Stop the server, add the below property to portal-ext.properties, set it to true and restart the portal.
Set this property to true to enable portlet session replication. This is only needed when session replication is enabled on the application server.
Env: LIFERAY_PORTLET_PERIOD_SESSION_PERIOD_REPLICATE_PERIOD_ENABLED
Defaults:portlet.session.replicate.enabled=false