問題
セッションを逆シリアル化しようとすると、次のようなエラーが発生する場合があります。
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+
解決策
- サーバーを停止し、以下のプロパティを portal-ext.properties に追加し、 true に設定して、ポータルを再起動します。
ポートレット セッションのレプリケーションを有効にするには、このプロパティを true に設定します。 これは、アプリケーション サーバーでセッション レプリケーションが有効になっている場合にのみ必要です。
環境: LIFERAY_PORTLET_PERIOD_SESSION_PERIOD_REPLICATE_PERIOD_ENABLED
デフォルト:portlet.session.replicate.enabled=false