我试图让Tomcat在关闭时保留会话。我已经注意到我在会话中存储的所有内容都是可序列化的,并且当我在Eclipse下运行Tomcat时,这样做的效果很好:当代码更改强制Eclipse重新加载WebApp时,会话现在存活。Tomcat会话反序列化失败,ClassNotFoundException异常
但是,当我尝试在独立的Tomcat中做同样的事情时,我遇到了一个问题。
我已经取消注释的经理元素$ {} catalina.base和/conf/context.xml设定的路径属性为$ {} catalina.base /SESSIONS.ser,并在关机时,我看到会议.ser文件出现。到现在为止还挺好。
但是,当我重新启动Tomcat,这似乎在catalina.out的:
[...]
06-Apr-2017 13:39:52.570 SEVERE [localhost-startStop-1] org.apache.catalina.session.StandardManager.startInternal Exception loading sessions from persistent storage
java.lang.ClassNotFoundException: com.mycompany.wtt.util.LogoutLogger
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285)
[...]
06-Apr-2017 13:39:54.158 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /data/tokken/apache-tomcat-8.5.12/webapps/wtt.war has finished in 1,134 ms
[...]
类com.mycompany.wtt.util.LogoutLogger是wtt.war Web应用程序的一部分,显然,Tomcat的尝试在加载webapp之前反序列化webapp的会话。看起来像这意味着我无法在应用程序中放置特定于应用程序的类,这是一个大问题,因为我的一些逻辑依赖于能够做到这一点,并通过实现javax.servlet.http创建自定义行为.HttpSessionActivationListener。
加载webapps后,有没有办法让Tomcat反序列化会话?
版本:Tomcat 8.5.12,Java 1.8.0_121。