У меня есть существующее приложение Spring с классом DAO, которое расширяет NamedParameterJdbcDaoSupport
.Динамическая связь с несколькими входами JNDI источника данных с пружиной
В контекстном файле Spring у меня есть атрибут «p: dataSource-ref», который ссылается на элемент «jee: jndi-lookup», который ссылается на имя JNDI, определенное в контейнере.
Что-то вроде этого:
<jee:jndi-lookup jndi-name="${jndiPrefix}/specificdb" id="mydb"/>
<bean class="com...dao.OrdersDAO" p:name="ordersDAO" p:dataSource-ref="mydb"/>
Это все работает отлично. Я развернул это как для WebLogic, так и для TomEE.
Теперь мне нужно рассмотреть новое приложение, которое имеет несколько более динамичные отношения с его источниками данных. Общий поток данных нового приложения будет очень похож на существующее приложение.
Новое приложение будет иметь N источников данных, все с той же моделью данных. Контейнер будет иметь определения для имен JNDI для всех источников данных, и я полагаю, что мне нужно будет иметь дополнительное имя JNDI, которое просто содержит строку с разделителями-запятыми, содержащую все имена JNDI для источников данных.
Каковы некоторые эффективные стратегии для выполнения подобных действий весной?
Update:
Одна вещь, которую я не ясно в моей должности, какой тип алгоритма я бы использовать, чтобы «выбрать», который DataSource использовать под одеялом.
Дело в том, что я не выбираю ни одного источника данных, я использую все из них. Приложение требует, чтобы запрос выполнялся на всех источниках данных, а набор результатов - объединение всех из них.
Первый ответ описывает стратегию, которая по существу соединяет источник данных «фасад» с одним из множества других источников данных. Это интересная проблема, но не то, что я ищу здесь.
В любом случае, я считаю, что понимаю, как это сделать, но я еще не реализовал его. Я намерен динамически создавать набор источников данных и связывать их с DAO (не уверен, хочу ли я одного DAO с набором источников данных или отношения 1-1 между DAO и источниками данных). Обширная служба будет читать строку среды JNDI при запуске, которая содержит список имен JNDI для источников данных и динамически создавать объекты DataSource. Процесс запроса будет просто собирать результаты из каждого источника данных и объединять их вместе.
Спасибо, но это не совсем та ситуация, которая у меня есть здесь, но перечитывая свой пост, я понимаю, что Бесполезный Это ясно. Я обновлю это, чтобы прояснить это. –