繁体   English   中英

使用Spring与多个数据源JNDI条目动态关联

[英]Dynamic association with multiple datasource JNDI entries with Spring

我有一个现有的简单Spring应用程序,带有DAO类,该类扩展了NamedParameterJdbcDaoSupport

在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名称。

在春季做这样的事情有哪些有效的策略?

更新

我在原始帖子中没有明确说明的一件事是,我将使用哪种算法来“选择”要使用的数据源。

关键是,我没有选择单个数据源,而是使用了所有数据源。 该应用程序要求查询要在所有数据源上运行,并且结果集是所有数据源的并集。

第一个答案描述了一种策略,该策略实际上将“外观”数据源连接到一组其他数据源中的一个。 这是一个有趣的问题,但不是我在这里寻找的问题。

无论如何,我相信我知道如何做到这一点,但是我还没有实现它。 我的意图是动态创建一组数据源,并将它们与DAO关联(不确定我是否要使用具有一组数据源的单个DAO或DAO与数据源之间的1-1关系)。 包含服务将在启动时读取JNDI环境字符串,其中包含数据源的JNDI名称列表,并动态创建DataSource对象。 查询过程将简单地从每个数据源收集结果并将它们合并在一起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM