天天看點

spring學習筆記(18)使用JNDI模拟通路應用伺服器多資料源執行個體

在這一篇文章中,我們要用jndi通路我們的應用伺服器配置好的多資料源。在本執行個體中,我們使用本地的tomcat伺服器來模拟遠端伺服器,由于本地隻有mysql資料庫,故通過通路不同的mysql資料庫不同database來模拟同時通路不同資料庫如mysql和oracle等。

下面是我們的配置步驟。

首先在我們的tomcat伺服器下找到conf檔案夾裡的server.xml檔案,打開并找到 <code>&lt;globalnamingresources&gt;</code>。在該節點下會有一個形如下面所示的全局資源

然後需要在存放server.xml的同一個conf目錄下找到context.xml,在節點下加入如下示例配置資訊

在這裡我配置兩個資料源來模拟連接配接兩個不同的資料庫。

在本執行個體中通過hibernate整合springmvc來進行測試。

在這裡我們定義兩個實體類,對應到兩個不同的庫表中。

<code>create database yc1;</code> <code>create database yc2;</code>
spring學習筆記(18)使用JNDI模拟通路應用伺服器多資料源執行個體

即hibernate幫我們自動對應實體建立表格了。到這裡位置,我們的jndi多資料源配置測試基本完成,但為了使我們的測試更加充分,不妨通過web配置具體測試一遍。

依次執行如下指令:

<code>use yc1;insert into</code>user<code>(</code>name<code>) values ('jnditest1');</code>

<code>use yc2;insert into</code>user<code>(</code>name<code>) values ('jnditest2');</code>

示例如下:

在遊覽器中輸入如下url:<code>http://localhost:8090/yc/testjndi</code>,會得到遊覽器響應:<code>name1 = jnditest1————name2 = jnditest2</code>。示例圖檔如下所示:

spring學習筆記(18)使用JNDI模拟通路應用伺服器多資料源執行個體

至此我們的配置和測試都已經完成了。這裡囿于我的本地資源限制,沒有進行遠端伺服器測試。也沒有進行真正的多資料庫測試,但原理都是類似的。

上面示例隻是為了展示jdni連接配接應用伺服器配置多資料源的實際操作流程測試。但在實際應用中,面對多資料源,我們還需要針對我們的具體需求作更深入的dao層設計配置。比如,我們可以結合aop來針對我們的dao層的不同通路資料庫方法來完成我們的讀寫分離。具體實作請移步下篇文章。