【发布时间】:2013-01-16 23:56:27
【问题描述】:
我在 jaxws 中有一个 Web 服务,我可以在登录后连接到该服务。一切正常,我通过登录名和密码并登录,我正在 WS 服务器上为该用户创建会话。毕竟我想注销,所以我删除了所有会话属性并调用 session.invalidate()。
属性被去掉了,但是进入tomcat管理器,看到session还在。
当我登录时,会话已将 setMaxInactiveInterval 设置为 7200 秒(2 小时)。会话当然会在这段时间之后被销毁,但是如果不再使用该会话,那么让空会话保持 2 小时是什么意思。
有没有办法完全销毁该会话?无需等待 2 小时?
【问题讨论】:
-
所以您有某种“注销”网络服务请求?您不必删除会话属性:如果您使会话无效,则应该为您完成。您是否注册了任何 HttpSessionListener 或 HttpSessionBindingListener 对象?如果是这样,它们可能会干扰 Tomcat 实际使您的会话过期的能力。您不必等待 2 小时。
-
我没有注册这两个听众。是的,这是某种注销。我知道我不应该等待 2 小时,但会话仍然处于活动状态。我将删除从会话中删除属性的部分。
-
目前在 disconnect() 方法中,我有 session.setMaxInactiveInterval(1) 并且会话在 30 秒 - 1 分钟后被销毁,这比 2 小时要好,但我确信这是不好的解决方案。如果我将 session.invalidate() 添加到此方法中,会话将在 30 分钟后过期。我不知道为什么会这样,Session应该被销毁,但不是:/
-
发生在哪个操作系统上?对我来说 session.invalidate() 在 Centos 操作系统中不起作用,但在 Windows 中同样可以。
标签: web-services session tomcat invalidation