在這一篇文章中,我們要用jndi通路我們的應用伺服器配置好的多資料源。在本執行個體中,我們使用本地的tomcat伺服器來模拟遠端伺服器,由于本地隻有mysql資料庫,故通過通路不同的mysql資料庫不同database來模拟同時通路不同資料庫如mysql和oracle等。
下面是我們的配置步驟。
首先在我們的tomcat伺服器下找到conf檔案夾裡的server.xml檔案,打開并找到 <code><globalnamingresources></code>。在該節點下會有一個形如下面所示的全局資源
然後需要在存放server.xml的同一個conf目錄下找到context.xml,在節點下加入如下示例配置資訊
在這裡我配置兩個資料源來模拟連接配接兩個不同的資料庫。
在本執行個體中通過hibernate整合springmvc來進行測試。
在這裡我們定義兩個實體類,對應到兩個不同的庫表中。
<code>create database yc1;</code> <code>create database yc2;</code>
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyQjM3MzMyADM1IzMwYTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
即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>。示例圖檔如下所示:
至此我們的配置和測試都已經完成了。這裡囿于我的本地資源限制,沒有進行遠端伺服器測試。也沒有進行真正的多資料庫測試,但原理都是類似的。
上面示例隻是為了展示jdni連接配接應用伺服器配置多資料源的實際操作流程測試。但在實際應用中,面對多資料源,我們還需要針對我們的具體需求作更深入的dao層設計配置。比如,我們可以結合aop來針對我們的dao層的不同通路資料庫方法來完成我們的讀寫分離。具體實作請移步下篇文章。