【发布时间】: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 客户端,并且您的客户端没有对会话进行任何特殊处理,那么每个请求都应该导致一个新会话,因为每个请求都是全新的事物。服务器无法知道请求来自同一个进程,除非客户端被编码来处理。
-
这些都与控制器范围或过滤器无关。
-
我认为没有问题。您实际上并没有在客户端中建立或使用会话,因此您的服务器也不会识别一个。但是不,这与控制器范围或过滤器无关,除了您可以从过滤器或控制器更改会话。我建议你看看你的客户为会话管理提供了什么,然后从那里开始!