【问题标题】:Why Grails is creating one session per http request?为什么 Grails 会为每个 http 请求创建一个会话?
【发布时间】:2017-07-12 05:40:03
【问题描述】:

我有一个 java 客户端,它向 tomcat7 实例上的 grails 2.5.5 服务器发出 HTTP 请求。

奇怪的是,tomcat7 或 grails 对 grails 控制器的每个请求都会创建一个会话。

我试过用:

static scope = 'singleton'

但是没有用!

有人知道发生了什么吗?

Tomcat7 根据 http 请求创建会话还是 grails 控制器配置?

【问题讨论】:

  • 你在说什么类型的会话? HTTP,数据库,其他?我假设 HTTP 会话。如果是这样,您使用什么进行身份验证和会话管理?
  • 我正在使用 grails 默认会话(HttpSession)。我阅读了更多这种行为,发现this。我现在正在测试删除过滤器中的一些操作,以防止 grails 为每个请求创建会话。我认为问题在于当请求进入某个过滤器时,grails 会创建新会话。
  • 听起来您可能对 HTTP 会话的工作方式感到困惑。如果您编写一个调用 Grails 应用程序的 HTTP 客户端,并且您的客户端没有对会话进行任何特殊处理,那么每个请求都应该导致一个新会话,因为每个请求都是全新的事物。服务器无法知道请求来自同一个进程,除非客户端被编码来处理。
  • 这些都与控制器范围或过滤器无关。
  • 我认为没有问题。您实际上并没有在客户端中建立或使用会话,因此您的服务器也不会识别一个。但是不,这与控制器范围或过滤器无关,除了您可以从过滤器或控制器更改会话。我建议你看看你的客户为会话管理提供了什么,然后从那里开始!

标签: session grails tomcat7


【解决方案1】:

我用这个解决方案解决了:

  1. 未更改 Java 客户端中的请求 (GET)。
  2. 我在过滤器中删除了 URL 请求。
  3. render 调用放在 grails 操作的末尾(我忘记了:/),因此 grails 无法向客户端提供响应并将请求视为 GET 查看请求。李>

感谢所有 cmets 伙计们!

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 2013-02-23
    • 1970-01-01
    • 2016-08-07
    • 2011-05-15
    • 1970-01-01
    • 2016-01-18
    • 2021-06-15
    • 2018-11-05
    相关资源
    最近更新 更多