【问题标题】:(GAE-Standard+Java11) Sessions with multiple instances running(GAE-Standard+Java11) 运行多个实例的会话
【发布时间】:2020-12-03 08:54:20
【问题描述】:

我已经在 GAE、Java 11、标准环境上部署了我的 Spring Boot 应用程序。根据 Java11 的 documentation,我们需要使用 app.yaml 来配置实例。

我想知道如何在实例之间启用会话共享。根据我的研究,早些时候我们可以通过在appengine-web.xml 中设置sessions-enabledasync-session-persistence 来简单地解决这个问题。随着appengine-web.xml 消失,在app.yaml 中执行此操作的等效方法是什么。

我想要实现的用例是:

  1. 使用 spring security(不幸的是,当我认为同一用户的请求转到另一个实例时,我会被注销。)
  2. 将从 DB 中检索到的用户存储在 @SessionScoped 变量中,以避免多次 DB 调用。

这里的任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: java spring google-app-engine google-cloud-platform spring-security


    【解决方案1】:

    我浏览了很多文档,但我相信这不在 app.yaml 配置参考中。

    或者,我发现您可以使用会话亲和性来使用实例来始终回复同一用户的请求,这可以在您的应用中启用,您可以根据 app.yaml 使用下一个标签这个documentation

    network:
      session_affinity: true
    

    希望这对你有用。

    【讨论】:

    • 感谢您进行探索,根据文档,会话亲和性位仅适用于灵活环境,但无论如何在标准上尝试这样做没有害处,我会尝试并恢复如果有效,请返回。谢谢!
    • 我相信这将无法通过现在配置 java 11 的新方式来实现(并且除了依赖配置文件之外,您不必实现会话解决方案。)所以在在这里,我的建议是与他们一起打开一个feature request,以便将其合并到 java 11 运行时或 GAE。
    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 2023-03-25
    • 2017-07-13
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多