web-applications - 从其他线程关闭 http session

标签 web-applications servlets spring-mvc session-state httpsession

我已经使用 Spring MVC 实现了一个 Web 应用程序。 Web 应用程序集成在具有桌面用户界面的系统中。我想允许用户从 destkop GUI 关闭 Web 应用程序的 session 。

我尝试实现一个不太优雅的解决方案:调用httpsession的invalidate,但当在正在运行的http请求中使用正在失效的 session 时,它有时会中断。当它尝试调用渲染时(特别是在 WebUtil.getSessionAttribute 处),它会在 DispatcherServlet 处抛出 IllegalStateException,因为它正在尝试访问 session 属性并且 session 已经无效。

所以我的问题是:有没有什么方法可以将用户从非 http 请求线程的 session 中踢出,而不与正在运行的 http 请求发生冲突?或者至少是我可以处理的冲突。

谢谢

豪尔赫

最佳答案

您可以手动滚动一个机制,涉及一组要过期的静态 session ,以及一个 servlet 过滤器,该过滤器检查该组当前 session ,然后调用 session.invalidate 并重定向用户干净。您的桌面 API 只需向该集合添加一个 session ,并且用户将根据以下请求彻底失效(在 HTTP 请求线程中)。

为了防止内存泄漏,您还需要一个监听器在失效时从该集合中删除 session ,从而确保该集合仅包含有效 session 。

关于web-applications - 从其他线程关闭 http session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9783534/

相关文章:

html - Servlet返回“HTTP状态404请求的资源(/Servlet)不可用”

java - spring 4 Controller @RequestBody参数

ruby-on-rails - 在 Rails Controller 中有条件地调用渲染 View 的方法

javascript - 如何嵌入我的 Web 应用程序

maven - Tomcat - Maven 插件 : run webapps but not current project

java - Singleton Dagger2 组件

java - 如何从 servlet 执行 python 脚本?

java - Spring JPA 没有正在进行的事务

json - 使用 java.util.Set 时的 Jackson bug(或功能!?) - mySet.size() 始终为 1

java - 多个 Web 应用程序部署在具有单一访问主页的单独 tomcat 服务器上?