为什么Grails正在为每个http请求创建一个会话?

问题描述:

我有一个java客户端在tomcat7实例上对grails 2.5.5服务器执行HTTP请求。为什么Grails正在为每个http请求创建一个会话?

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

我试着使用:

static scope = 'singleton' 

但没有工作!

有人知道发生了什么?

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

+1

你在说什么类型的会话? HTTP,数据库,其他?我假设HTTP会话。如果是这样,你用什么来进行身份验证和会话管理? – Daniel

+0

我正在使用grails默认会话(HttpSession)。 我读了更多的这种行为,我发现[this](https://*.com/questions/9691709/grails-osiv-stop-open-session-in-view-filter-for-static-resources)。我现在正在测试删除过滤器中的一些操作,以防止grails为每个请求创建一个会话。 我认为问题在于,当请求在某个过滤器中输入时,grails会创建新会话。 –

+1

听起来您可能会对HTTP会话的工作方式感到困惑。如果你编写一个HTTP客户端来调用你的Grails应用程序,并且你的客户端没有对会话做任何特殊的事情,那么每个请求都会导致一个新的会话,因为每个请求都是一个全新的事情。服务器没有办法知道请求来自同一个进程,除非客户端被编码来处理这个请求。 –

我解决了这个解决方案:

  1. 没有改变Java的客户端请求(GET)。
  2. 我在我的过滤器中删除了URL的请求。
  3. 渲染器调用放在grails动作的末尾(我忘记了:/),所以grails无法将响应作为GET请求发送给客户端。

感谢所有评论家伙!