Spring-JDBC-сессия с Hibernate Multi-Tenancy - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать приложение с весенней загрузкой (масштабируемое по своей природе) с Hibernate Multi-tenancy (база данных на каждого клиента), эта часть работает нормально. Я запускаю это приложение в кластере, у меня возникают проблемы в сеансах HTTP (необходимо реплицировать сеансы HTTP через другие узлы). Для этого я попытался использовать Spring JDBC Session, но столкнулся с проблемами при настройке.

Я только что включил зависимость Spring Session в файл gradle и применил аннотацию @EnableJdbcHttpSession к моему файлу AppConfigurations.java.

Проблема, с которой я сталкиваюсь, заключается в том, что из-за ошибки некоторых компонентов требуется bean-компонент с именем 'dataSource', я тоже пытался объявить это.

Я веду карту источников данных, в которой хранится источник данных каждого арендатора.

После запуска приложения карта каким-то образом содержит только один источник данных, который является источником по умолчанию (для которого я создал бин с именем 'dataSource').

Я не уверен, что мне здесь не хватает, или даже 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;
    }

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

Я ожидаю, что для каждого арендатора будут таблицы сеансов, в которых данные сеансов будут храниться отдельно. Может кто-нибудь, пожалуйста, предложить выход из этого? или, может быть, если бы кто-то мог поделиться какой-то образцовой базой кода с такой интеграцией, это было бы здорово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...