Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在群集环境上部署应用程序时,FlashAttributes无法正常工作_Spring_Spring 3 - Fatal编程技术网

Spring 在群集环境上部署应用程序时,FlashAttributes无法正常工作

Spring 在群集环境上部署应用程序时,FlashAttributes无法正常工作,spring,spring-3,Spring,Spring 3,我正在使用redirectAttributes将成功或失败消息传递到重定向的url。因此,我只能在重定向页面上显示一次成功或失败消息。如果再次刷新同一页面,则消息将不会再次出现。这是正常的,在tomcat上的正常部署中工作良好 现在,我们已经建立了一个集群环境,在其中部署了web应用程序。但在这种情况下,重定向属性的工作异常。有时有效,有时无效 下面是我用来将flashAttribute添加到重定向属性的代码行 redirectAttributes.addFlashAttribute("succ

我正在使用redirectAttributes将成功或失败消息传递到重定向的url。因此,我只能在重定向页面上显示一次成功或失败消息。如果再次刷新同一页面,则消息将不会再次出现。这是正常的,在tomcat上的正常部署中工作良好

现在,我们已经建立了一个集群环境,在其中部署了web应用程序。但在这种情况下,重定向属性的工作异常。有时有效,有时无效

下面是我用来将flashAttribute添加到重定向属性的代码行

redirectAttributes.addFlashAttribute("successMsg", message);
我在集群环境中使用Spring3.1.0.RELEASE版本和Tomcat7

我想知道这个问题是否有解决办法。是否有任何较新的Spring版本支持在集群环境中使用重定向属性? 你也可以让我知道,如果有其他的方式来执行这种东西


提前感谢。

听起来您的客户端HTTP会话可能无法在Tomcat服务器之间共享。由于Spring Flash属性为,您可能会遇到以下情况:

  • 初始请求转到serverA,并在serverA上的会话中设置flash属性
  • 发生重定向,请求被发送到serverB。serverA和serverB为用户提供了不同的HTTP会话(假设您没有共享它们的机制),因此serverB看不到flash属性(它有自己单独的HTTP会话)
  • 如果将客户端请求发送到的服务器不确定,则可能会间歇性遇到此问题。例如,如果上述两个请求碰巧都转到了serverA,那么flash属性将正常工作,因为会话是相同的

    如果是这种情况,则需要一种机制来:

  • 提供一个“粘性”会话——确保给定客户机的所有请求都路由到同一个Tomcat服务器。通常,这是通过负载平衡器/路由机制实现的(例如:nginx ip哈希路由)
  • 实现——使会话在所有Tomcat服务器之间共享,这样无论哪个Tomcat为客户端请求提供服务,HTTP会话都是相同的

  • 完美的你很好地理解了这个问题,并作了相应的回答。非常感谢你的回答。我一定会试试这个。:)您能告诉我会话复制的工作配置吗?我已经阅读了您在第二种机制中提供的链接,但不知道如何实现这一点。请提供配置:)