具有Hibernate多租户的Spring-JDBC-Session

时间:2019-04-10 13:52:48

标签: spring spring-boot multi-tenant spring-session

我正在尝试使用Hibernate Multi-tenancy(每个租户使用数据库的方式)创建一个Spring Boot应用程序(本质上是可扩展的),这部分工作正常。 我正在群集中运行此应用程序,我在HTTP会话中遇到问题(需要在其他节点上复制HTTP会话)。为此,我尝试使用Spring JDBC Session,但是在设置它时遇到了问题。

我只是在gradle文件中包括了Spring Session依赖项,并将@EnableJdbcHttpSession注释应用于了我的AppConfigurations.java文件。

我面临的问题是,它给了我一些组件要求使用名为“ dataSource”的bean的错误,我也尝试声明了这一点。

我正在保存一个数据源图,其中包含每个租户的数据源。

应用程序启动后,该映射以某种方式仅保留一个数据源,这是默认的数据源(为此我创建了一个名为“ dataSource”的bean)。

我不确定我在这里缺少什么,甚至不确定Spring-Session是否支持多租户。

下面的代码显示了我如何创建数据源映射,并在应用程序启动时进一步对其进行初始化:

@Bean(name = "dataSourceMap" )
    public Map<String, DataSource> dataSourceMap() {

        Map<String, DataSource> datasources = new HashMap<>();
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setPoolName("defaultDataSourcePool");
        hikariConfig.setMaximumPoolSize(5);
        hikariConfig.setMinimumIdle(5);
        hikariConfig.setJdbcUrl(url);
        hikariConfig.setUsername(username);
        hikariConfig.setPassword(password);
        datasources.put(defaultTenant, new HikariDataSource(hikariConfig));

         return datasources;
    }

类似地,我还定义了一个返回默认数据源的bean。

我希望每个租户都有会话表,这些表将分别保存会话数据。 有人可以提出建议吗?或者如果有人可以通过这种集成共享一些示例代码库,那就太好了。

0 个答案:

没有答案