OpensessionInViewInterceptor / Filter для обработки нескольких SessionFactories - PullRequest
3 голосов
/ 13 декабря 2011

Мы разрабатываем мультитенантное приложение с отдельной схемой на каждого арендатора.

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

Мы хотим использовать Spring TransactionManager вместе с OpenSessionInViewFilter.

. Мы могли бы найти некоторые ссылки для настройки OpenSessionInViewFilter для обработки нескольких SessionFactories (путем переопределения lookupSessionFactory метода), но это не работает для настак как нам нужно сослаться на этот фильтр из наших DAO.

Итак, мы планировали перейти на OpenSessionInViewInterceptor, который может быть доступен из других пружинных компонентов (DAO), но не нашли способа настроить его для поиска SessionFactory на основе TenantId.

Мы используем Hibernate 3.2.5 и Spring-2.5.6

1 Ответ

0 голосов
/ 25 мая 2012

Чтобы получить доступ к фильтру в DAO, вы можете определить свой фильтр как компонент и использовать DelegatingFilterProxy для регистрации этого компонента в качестве фильтра:

определение боба:

<bean id="openEntityManagerInViewFilter" class="org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter">
  <property name="entityManagerFactoryBeanName" value="entityManagerFactory"/>
</bean>

web.xml part:

<filter>
  <filter-name>openEntityManagerInViewFilter</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>openEntityManagerInViewFilter</filter-name>
  <url-pattern>/</url-pattern>
</filter-mapping>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...