как настроить DispatcherServlet и ContextLoaderListener для того, чтобы уступить OpenViewInSessionFilter - PullRequest
0 голосов
/ 16 февраля 2012

У меня были некоторые проблемы с моим менеджером транзакций, использующим Spring 3.0.5 и Hibernate 3.6.1. Узнав, что мне нужен OpenViewInSessionFilter в посте на stackoverflow , я попробовал его, и он все еще не работал, так как у меня все еще был lazyInitializationException.

Я также обнаружил здесь (благодаря вашим комментариям и знаниям, спасибо, ребята), что и DispatcherServlet, и ContextLoaderListener имеют каждый sessionFactory, и что OpenViewInSessionFilter фактически использует тот из ContextLoaderListener.

Я также узнал, что DispatcherServlet может borrow sessionFactory от ContextLoaderLister, но не наоборот.

, сказав, что я нахожу это очень запутанным в практике, так как проект, над которым я работаю, требует, чтобы оба работали должным образом.

my web.xml и application contexts доступны для pastie

Может кто-нибудь показать мне, как заставить работать OpenViewInSessionFilter? Спасибо, что прочитали это.

1 Ответ

1 голос
/ 16 февраля 2012

Вы не должны помещать конфигурацию в web.xml, просто в applicationContext.xml. Далее из viewResolver (я поставил рядом с ним), включите код:

<mvc:interceptors>
    <bean id="openSessionInViewInterceptor" 
              class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
</mvc:interceptors>
...