2017-01-03 3 views
0

У меня есть существующее приложение 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. Процесс запроса будет просто собирать результаты из каждого источника данных и объединять их вместе.

ответ

0

TomEE обладает такими же возможностями маршрутизации, что и Spring.

проверить эти ссылки из:

+0

Спасибо, но это не совсем та ситуация, которая у меня есть здесь, но перечитывая свой пост, я понимаю, что Бесполезный Это ясно. Я обновлю это, чтобы прояснить это. –