强制 tomcat 关闭时不使会话无效

Force tomcat not to invalidate session on shutdown

我的项目使用自定义会话失效机制。它需要发送带有失效原因的通知,例如 - 如果用户请求发生失效 - 失效原因是 USER_REQUEST,如果服务器关闭 - 则原因是 SHUTDOWN。 除了关闭情况外,所有工作都很好 - tomcat 本身使所有会话无效(至少 StandardManager 是这样)。

据我所知 - 我可以创建自己的管理器,它根本不会使会话无效:

public class HttpSessionManager extends StandardManager {

    @Override
    protected synchronized void stopInternal() throws LifecycleException {
        setState(LifecycleState.STOPPING);
        if (sessionIdGenerator instanceof Lifecycle) {
            ((Lifecycle) sessionIdGenerator).stop();
        }
    }
}

这个class 应该放在一些jar 文件中并放在tomcat/lib 文件夹中。 事实上,该解决方案需要与主要解决方案一起为 tomcat 分发额外的库,这并不好(交付过程变得复杂)

应该有另一种方法来做到这一点,或者我的解决方案可以以某种方式改进。

经过长时间深入的谷歌搜索这个问题 - 我可以说没有其他方法可以做到这一点。