如何使用tomcat的catlina api访问会话管理

时间:2012-09-14 05:14:19

标签: tomcat servlets java-ee-6 tomcat7

如何使用tomcat的catlina api访问会话管理。我要求从我的代码中使其他用户的会话无效。

2 个答案:

答案 0 :(得分:2)

出于显而易见的原因,我个人不希望绑定到Tomcat包并尽可能多地使用javax.servlet API。您可以通过创建会话侦听器并将所有会话保持在WeakHashMap来实现您的任务,如此

<!-- your webapp's web.xml -->
<listener>
  <listener-class>path.to.SessionListener</listener-class>
</listener>

class SessionListener implements HttpSessionListener {
   private static final Map<String, HttpSession> sessions = Collections.synchronizedMap(new WeakHashMap<String, HttpSession>());

   public void sessionCreated(HttpSessionEvent event) {
      sessions.put(event.getSession().getId(), event.getSession());
   }

   public void sessionDestroyed(HttpSessionEvent event) {
      sessions.remove(event.getSession().getId());
   }
}

其余的就像添加另一种方法来迭代所有会话并使它们无效一样简单。

答案 1 :(得分:0)

为特定用户使用session.invalidate方法,例如。

如果您在session.set属性中设置用户,则从accessor方法获取该particualr方法。

使用pojo bean来获取它。

在使会话无效之前,检查必须是真实的或有效的。