Servlet会话无效

时间:2010-10-23 14:19:26

标签: java servlets

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

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

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

注销该用户

问题

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

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

1 个答案:

答案 0 :(得分:2)

您不需要过滤器。一个简单的Servlet会做:

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

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

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

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