簡體   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