play framework 如何支持多數據源

有段時間沒有寫博客了,但今天又寫一篇了,主要是由於這事有一絲本身的思考和動手實踐,因此就記錄下來了。數據庫

現有的問題: play 1.2.4  兩臺數據庫服務器,可是play1.2.4 並不支持同時鏈接兩臺數據庫服務器,如何解決這個問題?服務器

問題的解決步驟:工具

1: 研究play是如何鏈接上一臺數據庫服務器的。測試

        play 是經過db這個module來完成數據庫相關的操做的。ui

     主要流程插件

配置文件 ----> 構建DataSource ---->Ejb3Configuration  -----> EntityManagerFactory   ----->  EntityManager  --------> JPA3d

2:  解決問題的辦法xml

         2.1 修改現有module來實現支持多數據源,網上搜到關於此類的解決方法比較多,而後經過 JPA.em("datasourse") 來切換數據源。 固然這存在至關大的問題,一是不支持JPA的操做,二是即便實現了,現有代碼須要修改的地方太多太多,三是根本沒有能力來修改這個module。blog

         2.2  將現有module的功能複製一份用來實現鏈接第二臺服務器的功能。固然我選擇了後者博客

3: 實現的步驟 

        3.1: db 文件夾複製一份 

 

       3.2: 修改了db1文件中相關文件的包名。

       3.3  修改了獲取的配置項

        

        3.4 :  修改了enhance部分的功能

            3.5  反覆測試幾回(10來次),直到與db相關的全部地方修改成db1,至此完成了db模塊功能的複製。

            3.6  從新打包。 有build.xml 固然是使用ant來進行構建。但具體使用哪一個版本的ant也小有學問,畢竟不是任意版本的ant都行的。也不會有人會告訴你jar包中的MANIFEST.MF 文件中包含了構建工具相關的信息。

            3.7   往play中添加插件 

    

 

         3.8  替換掉原來的jar,進行測試。

 

            遺留的問題,DEV模式下全部的model在兩臺數據庫服務器上都建了對應的數據表,雖然這對使用幾乎沒有影響。

相關文章
相關標籤/搜索