第壹步、測試能否配置多個DataSource
第二步、測試能否配置多個SessionFactory
第三步、測試能否配置多個TransactionManager
第四步、測試能否使用多個TransactionManager,也就是看能否配置多個
基本上到第四步就應該走不通了,因為Spring中似乎不能配置多個,而且@transactional註解也無法讓用戶選擇具體使用哪個TransactionManager。也就是說,在SpringSide的應用中,不能讓不同的數據源分別屬於不同的事務管理器,多數據源只能使用分布式事務管理器,那麽測試思路繼續如下進行:
第五步、測試能否配置JTATransactionManager
如果到這壹步,項目還能順利在Tomcat中運行的話,我們就算大功告成了。但我總認為事情不會那麽順利,我總覺得JTATransactionManager需要應用服務器的支持,而且需要和JNDI配合使用,具體是不是這樣,那只有等測試後才知道。如果被我不幸言中,那麽進行下壹步:
第六步、更換Tomcat為GlassFish,更換JDBC的DataSource為JNDI查找的DataSource,然後配置JTATransactionManager
下面測試開始,先假設場景,還是繼續用上壹篇中提到的簡單的文章發布系統,假設該系統運行壹段時間後非常火爆,單靠壹臺服務器已經無法支持巨大的用戶數, 這時候,站長想到了把數據進行水平劃分,於是,需要建立壹個索引數據庫,該索引數據庫需保存每壹篇文章的Subject及其內容所在的Web服務器,而每 壹個Web服務器上運行的項目,需要同時訪問索引數據庫和內容數據庫。所以,需要創建索引數據庫,如下:
[java] view plain copy
create database puretext_index;
use puretext_index;
create table articles(
id int primary key auto_increment,
subject varchar(256),
webserver varchar(30)
);
第壹步測試,配置多個DataSource,配置文件如下:
application.properties:
[java] view plain copy
jdbc.urlContent=jdbc:mysql://localhost:3306/PureText useUnicode=true&characterEncoding=utf8
jdbc.urlIndex=jdbc:mysql://localhost:3306/PureText_Index useUnicode=true&characterEncoding=utf8