用Struts2+Hibernate開發(fā)Web程序
發(fā)現(xiàn)網(wǎng)站老是一動不動,在DAO中用 Statistics stats = HibernateUtil.getSessionFactory().getStatistics();
查看了統(tǒng)計結(jié)果,發(fā)現(xiàn)打開50個Session只有20個關(guān)閉了.
看結(jié)構(gòu)也沒有什么問題,我使用兩個ThreadLocal 存放Session 和Transaction,再用一個Filter去關(guān)閉,各個配置表面上也是沒有問題,可是做測試的時候才發(fā)現(xiàn)關(guān)閉Session的Filter根本就是沒有運行,或是有時運行,有時不運行,
仔細想了想,調(diào)整了一下sessionclosefilter和Struts2的filter的順序如下,終于可以關(guān)閉了
<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>