您的位置:首页 > 其它

SH配置中,hibernate不会自动释放session conn程序卡死

2012-06-29 16:57 127 查看
在实际应用过程中,发现一个问题,其表现形式为:

在访问数据库时,在多次(8)访问过后就出现容器不在继续访问。

有点像挂起。

研究发现,没有配置OpenSessionInViewFilter这个拦截器。

至于为什么,网上大把。主要就是提出没有配置这个,hibernate没有自动flush的功能。

下面把配置方式放上来。在web.xml文件中添加

<filter>

<filter-name>hibernateFilter</filter-name>

<filter-class>

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

</filter-class>

<init-param>

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

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

</init-param>

</filter>

<filter-mapping>

<filter-name>hibernateFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

-----------------------------------------------------------------------------------------------

Spring 配置文件

<!-- 事务管理 -->

<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"/>

</bean>

<!-- 配置事务拦截器 -->

<bean id="transactionInterceptor"

class="org.springframework.transaction.interceptor.TransactionInterceptor">

<!-- 事务拦截器bean需要依赖注入一个事务管理器 -->

<property name="transactionManager">

<ref bean="transactionManager"/>

</property>

<property name="transactionAttributes">

<!-- 下面定义事务传播属性-->

<props>

<prop key="*">PROPAGATION_REQUIRED</prop>

<prop key="save*">PROPAGATION_REQUIRED</prop>

<prop key="update*">PROPAGATION_REQUIRED</prop>

<prop key="delete*">PROPAGATION_REQUIRED</prop>

</props>

</property>

</bean>

<!-- 定义BeanNameAutoProxyCreator -->

<bean id="beanNameAutoProxyCreator"

class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

<property name="beanNames">

<list>

<value>*DAO</value>

</list>

</property>

<property name="interceptorNames">

<list>

<idref local="transactionInterceptor"/>

</list>

</property>

<property name="proxyTargetClass" value="true"/>

</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: