【问题标题】:does grails flash scope work for multiple server instances?grails flash 范围是否适用于多个服务器实例?
【发布时间】:2017-03-02 09:25:11
【问题描述】:

我们在 grails 3 应用中添加了 spring-session,并且 flash 消息/错误停止显示。查看源代码,它看起来只是一个内存映射,尽管我不确定在持久会话时它是否会被序列化:

https://github.com/grails/grails-core/blob/master/grails-web-common/src/main/groovy/org/grails/web/servlet/GrailsFlashScope.java#L45

我想知道闪存范围是否仅在运行管理会话的单个实例时才有效,或者例如在具有多个实例且没有会话关联性的 tomcat 集群中闪存范围是否仍然有效?

【问题讨论】:

    标签: grails spring-session


    【解决方案1】:

    Spring-session 当前不允许更改 performance reasons 的会话对象。但是,您可以使用简单的过滤器自行保留它 - 或使用 spring-session grails plugin

    我个人使用 spring-session 依赖并从插件中获取 HttpSessionSynchronizer 过滤器 - 使用它是因为它是使 flash 与 spring-session 一起工作所需的唯一部分。

    【讨论】:

    • 您是专门为 Flash 范围执行此操作的,还是建议将此作为使用 Flash 消息的替代方法?
    • 闪存范围在会话中,这只会使会话对象像以前一样工作。尽管性能下降(在大多数情况下可以忽略不计)。
    • 需要明确的是,我仍然使用 spring-session - 添加过滤器只会使其行为符合您的预期。
    • 我遇到了这个问题。您能否与我分享一个使用此过滤器的示例?
    【解决方案2】:

    Flash 范围是特定于服务器实例的,并且在不使用会话亲和性的情况下无法与多个服务器实例一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      相关资源
      最近更新 更多