用Struts2+Hibernate開發Web程序
發現網站老是一動不動,在DAO中用 Statistics stats = HibernateUtil.getSessionFactory().getStatistics();
查看了統計結果,發現打開50個Session只有20個關閉了.
看結構也沒有什么問題,我使用兩個ThreadLocal 存放Session 和Transaction,再用一個Filter去關閉,各個配置表面上也是沒有問題,可是做測試的時候才發現關閉Session的Filter根本就是沒有運行,或是有時運行,有時不運行,
仔細想了想,調整了一下sessionclosefilter和Struts2的filter的順序如下,終于可以關閉了
<filter>
<filter-name>HibernateSessionCloseFiler</filter-name>
<filter-class>com.hitecin.struts2.filter.HibernateSessionClose</filter-class>
</filter>
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>HibernateSessionCloseFiler</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>