我也在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也会启动并打开会话并关闭它。
提前致谢。
答案 0 :(得分:7)
Grails有两种OSIV模式的实现,GrailsOpenSessionInViewFilter
和GrailsOpenSessionInViewInterceptor
。过滤器在早期版本的Grails中使用,但拦截器现在是使用的(至少在1.2,1.3和2.0中)。由于它是WebRequestInterceptor
,它仅适用于控制器请求,而不适用于JavaScript,CSS,图像等的静态请求。因此,对于简单的文件请求不必要地创建和绑定Hibernate会话,不存在性能问题。