如何检查servlet(java)中的sessionId是否有效

如何检查servlet(java)中的sessionId是否有效,java,session,servlets,Java,Session,Servlets,我正在我的web应用程序中维护SessionID和HttpSession对象的映射。我使用HttpSessionListener从映射中填充或删除会话。当我的web服务器崩溃、宕机并重新启动时,我需要一种方法来检查提交的sessionid是否有效。显然,当应用程序重新联机时,映射是空的,因此所有会话id都是无效的,但是如果可能的话,我只想用某种方法检查传入的会话id 谢谢一个建议是将地图序列化到磁盘,并在Web服务器启动时重新加载。将地图备份到磁盘的策略取决于您的需求,您可以在每次添加/更新地图

我正在我的web应用程序中维护SessionID和HttpSession对象的映射。我使用HttpSessionListener从映射中填充或删除会话。当我的web服务器崩溃、宕机并重新启动时,我需要一种方法来检查提交的sessionid是否有效。显然,当应用程序重新联机时,映射是空的,因此所有会话id都是无效的,但是如果可能的话,我只想用某种方法检查传入的会话id


谢谢

一个建议是将地图序列化到磁盘,并在Web服务器启动时重新加载。将地图备份到磁盘的策略取决于您的需求,您可以在每次添加/更新地图时或定期写入磁盘。将会话数据写入磁盘相当容易,这是实现冗余和负载平衡场景的常用方法。

您可以将会话数据保存在某个表中的DB中。这样它就不会受到撞车的影响。顺便说一下,如果您也需要,服务器会将会话序列化到磁盘。

您究竟为什么要自己维护会话?servlet容器应该为您这样做。我还没有看过你的代码,也许你有一个很好的理由去做你正在做的事情,但是我感觉你只是不理解ServletAPI,正在尝试自己重新实现它


另外,您可能对此感兴趣:Tomcat有一个特性,它可以持久化会话,这意味着会话状态在服务器重启后仍然有效。更新应用程序时请关闭此选项,因为不同版本的类之间可能存在不匹配。

我目前正在努力解决相同的问题。看我正在使用GWT;你能解释一下整个sessionID是怎么做的吗?