Tomcatでシャットダウン時にセッションを維持しようとしています。私はすでにセッションに保存されているものはすべてシリアライズ可能であるという要件に注意しました。TomcatをEclipseで実行するとうまくいきます。コード変更によってEclipseがWebアプリケーションをリロードするとセッションが生き残ります。Tomcatセッションの逆シリアル化がClassNotFoundExceptionで失敗する
しかし、スタンドアローンのTomcatで同じことをしようとすると、問題が発生します。
$ {catalina.base} /conf/context.xmlのManager要素のコメントを解除し、パス名属性を$ {catalina.base} /SESSIONS.serに設定しました。シャットダウン時に、私はSESSIONS .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。