首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

OpenSessionInViewFilter 配备注意事项

2012-10-29 
OpenSessionInViewFilter 配置注意事项首先要在工程的web.xml中配置如下: 配置要放在web.xml最上面?filte

OpenSessionInViewFilter 配置注意事项

首先要在工程的web.xml中配置如下: 配置要放在web.xml最上面

?<filter>
??? <filter-name>openSessionInViewFilter</filter-name>
??? <filter-class>org.springframeword.orm.hibernate3.OpenSessionInViewFilter</filter-class>

??? <init-param>

??????????? <param-name>singleSession</param-name>

??????????? <param-value>true</param-value>

??? </init-param>

??? <init-param>

??????????? <param-name>sessionFactoryBeanName</param-name>

??????????? <param-value>sessionFactoryClientManage</param-value>

??? </init-param>
</filter>

?

这里配置的时候涉及到两个初始化的参数,其中singleSession为true可保证如果获取当前线程绑定的session没有获取到的话,可以重新创建一个(细节大家可以看下相关API或者是源码)。看网上好多相关的说法突出说明一定要配置singleSession为true,实际上在源码中,这个属性默认就是为true的。

另外还有一个sessionFactoryBeanName这个属性,这个属性是指定通过哪个sessionFactory去获得session的。默认情况下,会在Spring管理的Bean中去查找ID为sessionFactory的sessionFactory配置,如果你在开发的过程中指定了其它的ID名称,那么在这里一定要记住进行配置。要不就会报找不到那个bean的错误。

?

好了,接下来我们就可以用这个拦截器去过滤我们的servlet了

<filter-mapping>

?????? <filter-name>openSessionInViewFilter</filter-name>

?????? <servlet-name>这里加入你要过滤的servlet名称</servlet-name>

</filter-mapping>

OK,现在好了,我们可以用了。

用这个的时候经常遇到一些问题如下:

打开的session是否要自己关闭:这个是不用的,上面指定的filter打开session,同时在完成请求之后会把这个session关掉的,所以自己不用关心这个。

通过session.openConnection()方法打开的connection要自己关闭吗,其实一般来说,自己打开的资源是需要自己关闭的,

但是这里的connection并不是自己打开的,如果使用了连接池的话,session用完的connection会回到池中的,这个会由连接池去管理,所以自己也不用操心(这个只是自己的理解,不知道对不对)。

好了,这个就写到这,大家有什么想法一起交流,谢谢!

?

热点排行