会话超时时来自浏览器的HTTP请求

时间:2016-09-19 15:11:22

标签: session notifications httpsession

我有两个HTTP服务器提供的UI。 因此,我需要从两个服务器清除HTTP会话。 注销用例很简单,但对于我如何为会话超时用例进行操作并不清楚。

可以通过HttpSessionBindingListener在服务器端进行通知 Getting notification when bounded/unbounded to a HTTP session。 但是如何通知客户端网站呢? 我必须将请求从浏览器发送到第二台服务器,以便能够清理第二台服务器上的会话cookie,因此我无法从服务器端发送请求。

一台服务器是Tomcat 8,第二台服务器是Apache HTTPD服务器。我想通过UI回调来解决它(来自Tomcat HTTP servlet服务器)。

2 个答案:

答案 0 :(得分:4)

来自Apache HTTPD(Apache)文档:

将会话与外部应用程序集成

https://httpd.apache.org/docs/2.4/mod/mod_session.html#integration

  • 您可以编写自己的模块,然后您可以使用此模块在Tomcat认为它们可用之后删除会话。
  • 您可以使用Tomcat和Apache外部的会话数据库(例如,在MySQL中),两个服务器都会使用它来验证用户。删除会话只需要从数据库中删除该条目。
  • 作为一个独立的应用程序:正如文档所述,您可以完成查找和访问会话文件,破坏它们以及编辑它们的工作。如果Tomcat和Apache在不同的机器上,您可以在Apache机器上安装一个带有侦听器的代理,并让Tomcat请求代理删除会话数据。
  • Apache通常使用PHP,并且还有数据库。两者都可以有自己的会议来处理。

答案 1 :(得分:0)

您可以尝试几种方法。

  1. 正如@ Kwebble所提到的,在Tomcat会话超时时,调用Apache服务器并要求它注销/使会话无效。

  2. 如果会话在Tomcat中超时,UI会在发出任何请求时了解它。现在从UI,调用Apache服务器以注销/使会话无效。