2

我们正在构建一个多租户服务器,每个租户都有一个数据库/模式。为此,我们使用 Springs AbstractRoutingDataSource 根据租户切换数据源。

租户由 servlet 过滤器中 url 的子域确定。此租户存储在线程本地中。

在启动线程之前,这一切都很好。例如,当休眠搜索重新索引时,它会启动很多线程。

当这些线程之一尝试获取连接时,线程本地返回 null 并且我无法确定租户。

4

2 回答 2

0

我通过使用存储我的租户的会话范围的 spring bean 来修复它。

样品见链接

于 2012-06-27T14:54:10.087 回答
0

您可以将租户标识符存储在InheritableThreadLocal. 子线程将有权访问相同的 ThreadLocal 变量,因此将了解租户并使用相同的数据库。

于 2020-05-16T23:09:28.770 回答