Spring 3, TransactionManagement, Tomcat и изменение промежуточного полета источника данных - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть метод, который я аннотировал аннотацией @Transactional.

Проблема в том, что источник данных, с которым работает код, может измениться! Вкратце, возможно ли изменить источник данных транзакции во время работы приложения?

По глубине: Приложение позволяет пользователям выбирать базу данных для запуска SQL. Они могут изменить базу данных во время выполнения. Мне бы хотелось, чтобы приложение выполняло все sql в транзакции - группы sql всегда используют один и тот же источник данных, поэтому это не проблема.

Проблема в том, что я не знаю, как изменить транзакцию для использования другого источника данных. В различных статьях предлагается JTATransactionManager, но мы находимся на tomcat, так что никаких кубиков.

Есть ли простой способ сделать это, или нам нужно будет отказаться от аннотации @Transactional и сделать что-то еще?

А если так, что это за "что-то еще"?

О, база данных db2, если это нужно!

спасибо!

1 Ответ

0 голосов
/ 29 декабря 2011

Одно из возможных решений

  1. Настройка всех возможных источников данных в весенней конфигурации

    а. Источник данных1 для DB1 б. Источник данных2 для DB2 и т. Д.

  2. Сохранение карты указанного выше источника данных в классе обслуживания и создание JDBCTemplate Spring из выбранного источника данных на основе некоторого ключа из карты.

...