Servlet会话无效

我在2个不同的服务器中有2个应用程序 – Tomcat(基本上是.WAR文件)和jBoss中的EAR。

EAR是一个可重用的应用程序,我将对用户进行身份validation,并将控件发送回Tomcat上的应用程序。 在进行身份validation时,我正在jBoss应用上创建会话对象。

当我将控件发送回Tomcat上的应用程序时,我会询问用户是否要签署validation应用程序。 如果用户按下“是”按钮,我将不得不从validation应用程序注销该用户

问题

1)我读到Filter是使会话无效的最佳方式。 在我的情况下,由于validation应用程序旨在由超过1个用户使用,filter将如何知道它需要使哪个会话无效?

2)我应该将jBoss应用程序中创建的会话ID传递给Tomcat应用程序,以便在用户决定注销时 – 我需要将相同的会话ID传递给jBoss应用程序,以使filter无效吗?

您不需要filter。 一个简单的Servlet将:

public LogoutServlet extends HttpServlet { @Override public void doGet(...) { request.getSession().invalidate(); } } 

然后将此servlet映射到web.xml /lougout ,每当用户想要注销时,都应将其发送到http://youhost/yourapp/logout

如果你想在他已经使用tomcat服务器时将他注销,你需要重定向回JBoss服务器以使那里的会话无效。

请注意, request.getSession()获取当前会话 – 即属于发出请求的用户的会话。 您的servlet容器(服务器)为您处理此问题。