有没有一种方法可以让 tomcat 7 在通过管理界面手动重新加载应用程序时使该应用程序的所有会话无效?
祝一切顺利,托马斯
答案1
来自 Tomcat 文档:
重启后持久性
每当 Apache Tomcat 正常关闭并重新启动时,或者触发应用程序重新加载时,标准管理器实现都会尝试将所有当前活动会话序列化到通过路径名属性定位的磁盘文件中。然后,当应用程序重新加载完成时,所有这些保存的会话将被反序列化并激活(假设它们在此期间没有过期)。
为了成功恢复会话属性的状态,所有此类属性都必须实现 java.io.Serializable 接口。您可以通过在 Web 应用程序部署描述符 (/WEB-INF/web.xml) 中包含该元素来让管理器强制执行此限制。
禁用会话持久性
如上所述,每个 Web 应用程序默认都配置了标准管理器实现,并在重新启动时执行会话持久性。要禁用此持久性功能,请为您的 Web 应用程序创建一个 Context 配置文件并在其中添加以下元素:
<Manager pathname="" />
http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html#Persistence_Across_Restarts
如果您还没有 META-INF/context.xml 文件,您可以使用这个:
<Context>
<Manager pathname="" />
</Context>
答案2
看标准管理器实现,您应该将pathName设置为空字符串或在启动前删除SESSIONS.ser。