gpt4 book ai didi

java - OpenSessionInViewInterceptor/Filter 来处理多个 SessionFactory

转载 作者:行者123 更新时间:2023-12-02 09:39:41 24 4
gpt4 key购买 nike

我们正在开发一个 Multi-Tenancy 应用程序,每个租户都有单独的架构。

我们为每个架构使用一个 SessionFactory,无需使用 OpenSessionInViewFilter 即可正常工作。

我们希望将 Spring TransactionManagerOpenSessionInViewFilter 一起使用。

我们可以找到一些引用来自定义 OpenSessionInViewFilter 来处理多个 SessionFactories (通过重写 lookupSessionFactory 方法),但它对我们不起作用,因为我们需要引用此 Filter来 self 们的 DAO。

因此,我们计划使用可以从其他 spring bean (DAO) 访问的 OpenSessionInViewInterceptor,但没有找到一种方法来自定义它以基于以下内容查找 SessionFactory租户ID。

我们使用 Hibernate 3.2.5 和 Spring-2.5.6

最佳答案

要访问 DAO 中的过滤器,您可以将过滤器定义为 bean,并使用 DelegatingFilterProxy 将此 bean 注册为过滤器:

bean 定义:

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

web.xml 部分:

<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>

关于java - OpenSessionInViewInterceptor/Filter 来处理多个 SessionFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com