Grails - OSIV - 停止静态资源的“在视图中打开会话”过滤器

时间:2012-03-13 20:37:09

标签: grails

我也在Javaranch交叉发布。我通过谷歌搜索做了尽职调查。我没有找到任何答案。

我们有一个基于REST服务的Web应用程序,后端是使用Groovy和Grails(1.3.7与Groovy 1.7.x)实现的。我理解Open Session In View在Hibernate中的工作原理是什么,当用Spring配置Hibernate时,我们可以指定OSIV应该在过滤器配置中使用哪组URL。

问题是我找不到如何从OSIV过滤器的范围中排除一组URL(如匹配* .js,* .gif等)。我从Hibernate日志中发现,即使对于Javascript文件请求,Open Session In View也会启动并打开会话并关闭它。

提前致谢。

1 个答案:

答案 0 :(得分:7)

Grails有两种OSIV模式的实现,GrailsOpenSessionInViewFilterGrailsOpenSessionInViewInterceptor。过滤器在早期版本的Grails中使用,但拦截器现在是使用的(至少在1.2,1.3和2.0中)。由于它是WebRequestInterceptor,它仅适用于控制器请求,而不适用于JavaScript,CSS,图像等的静态请求。因此,对于简单的文件请求不必要地创建和绑定Hibernate会话,不存在性能问题。