У меня есть проект с tomcat 9, java 8, jsf 2.2.13 и primefaces 4. Когда я запускаю tomcat и вхожу в приложение, сразу после загрузки страницы индекса сервер закрывает сеанс, и мне нужно снова войти в систему . Но это происходит только один раз (каждая первая попытка после запуска сервера), после этого проблема больше не возникает. Журнал:
Cannot serialize session attribute [myBean] for session [XXX]
java.io.NotSerializableException: org.springframework.web.context.support.XmlWebApplicationContext
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at org.apache.catalina.session.StandardSession.doWriteObject(StandardSession.java:1712)
at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1066)
at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:315)
at org.apache.catalina.session.StandardManager.unload(StandardManager.java:267)
at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:382)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5397)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3756)
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:299)
at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5535)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1353)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1357)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1357)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1335)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Единственные два атрибута, которые явно не реализуют Serializable: org.springframework.context.ApplicationContext и org.primefaces.model.menu.MenuModel
AopTestUtils.getUltimateTargetObject
всегда возвращает действительный Serializable.
Объявление компонента:
@ManagedBean(name = "myBean")
@Controller
@Scope(value = "session")
public class MyBean implements Serializable {
}