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在两台数据库服务器上都建了对应的数据表,虽然这对使用几乎没有影响。

相关文章
相关标签/搜索