Session 具有无限会话的Tomcat中的GWT应用程序

Session 具有无限会话的Tomcat中的GWT应用程序,session,gwt,tomcat,Session,Gwt,Tomcat,我有一个在Tomcat6中运行的GWT应用程序。问题场景如下所示: 人们正在使用应用程序,例如,用户B在应用程序中单击 现在我重新启动应用程序 如果我没有打开GWT应用程序的起始页,那么一旦用户B继续在应用程序中工作,整个web应用程序就会崩溃 现在,如果我可以设置会话超时就足够了,这意味着用户在30分钟后被重定向到起始页(如果他在应用程序中没有做任何事情)。由于维护原因,目前仅在0300时重新启动 因此我想知道,是否可以在Tomcat中为GWT应用程序设置会话超时?在web.xml中,超时

我有一个在Tomcat6中运行的GWT应用程序。问题场景如下所示:

  • 人们正在使用应用程序,例如,用户B在应用程序中单击
  • 现在我重新启动应用程序
  • 如果我没有打开GWT应用程序的起始页,那么一旦用户B继续在应用程序中工作,整个web应用程序就会崩溃
现在,如果我可以设置会话超时就足够了,这意味着用户在30分钟后被重定向到起始页(如果他在应用程序中没有做任何事情)。由于维护原因,目前仅在0300时重新启动


因此我想知道,是否可以在Tomcat中为GWT应用程序设置会话超时?在web.xml中,超时被设置为30分钟,但我认为它实际上不适用于GWT应用程序。

应用程序的GWT部分只是客户端,不控制会话。要获得您想要的行为(30分钟不活动后超时),请创建一个servlet筛选器,该筛选器在每次请求时查看会话中的最后一个请求时间,如果请求时间已过期,则创建一个新的未经验证的会话,如果未过期,则使用下一个超时(或时间+30分钟)更新会话。然后在servlet代码中检查经过身份验证的会话,如果该会话无效,则重定向到登录页面

应用程序的GWT部分只是客户端,不控制会话。要获得您想要的行为(30分钟不活动后超时),请创建一个servlet筛选器,该筛选器在每次请求时查看会话中的最后一个请求时间,如果请求时间已过期,则创建一个新的未经验证的会话,如果未过期,则使用下一个超时(或时间+30分钟)更新会话。然后在servlet代码中检查经过身份验证的会话,如果该会话无效,则重定向到登录页面

有很多小服务。我通常让一个servlet处理许多映射,然后决定在servlet内做什么。使用请求工厂使所有数据调用通过该servlet,然后一个servlet用于rest api调用,一个servlet用于身份验证。过滤器也应该能够导致重定向,在这种情况下,跳过转发到过滤器链中的下一个内容。当然,这只有在每个servlet都需要此身份验证时才有意义。另一种方法是,因为您使用的是servlet,所以让它们都从某个AuthenticatedServlet扩展,后者提前进行检查。我通常让一个servlet处理许多映射,然后决定在servlet内做什么。使用请求工厂使所有数据调用通过该servlet,然后一个servlet用于rest api调用,一个servlet用于身份验证。过滤器也应该能够导致重定向,在这种情况下,跳过转发到过滤器链中的下一个内容。当然,这只有在每个servlet都需要此身份验证时才有意义。另一种方法是,因为您使用的是servlet,所以让它们都从某个AuthenticatedServlet扩展,后者提前进行检查。