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

时间:2017-10-20 14:47:32

标签: session tomcat8 session-management

我的项目使用自定义会话失效机制。它需要发送带有无效原因的通知,例如 - 如果用户请求发生无效 - 无效原因是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();
        }
    }
}

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

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

1 个答案:

答案 0 :(得分:0)

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