Grails - 基于用户切换数据源

时间:2013-11-25 21:56:37

标签: database grails pool context-switching

我们正在开发一个Grails Web应用程序,其中不同的用户(客户)需要指向仅包含其组织数据的不同数据库。不幸的是,分离的数据库是一项要求,我们被要求每个人只能拥有一个Web应用程序。

但是,Grails希望只有一个数据源池连接到一个数据库。

我们希望能够根据登录的用户切换每个会话的数据库连接,在BootStrap init()期间从属性文件中读取不同的连接。

到目前为止,我们一直无法找到一个似乎没有竞争条件的解决方案,我们找不到任何插件,而且它似乎不是一个受欢迎的问题。

我们最有希望的是创建一个自定义动态数据源,在Bootstrap中设置以定义组织地图> dataSource,并利用Bootstrap中定义的闭包在GORM行为之前找到适当的dataSource,但这似乎导致有潜伏期的竞争条件。

有没有人知道如何合理地执行这种转换?

由于

2 个答案:

答案 0 :(得分:1)

考虑到Grails是建立在Spring之上的,最好的办法是开发自己的可解析数据源。

  1. Dynamic datasource routing
  2. Example of datasource routing

答案 1 :(得分:0)

在您的问题中,您是否部署了一次应用程序并尝试配置用户使用的DataSource,或者您只是想通过部署进行配置,这一点并不清楚。

如果只是部署,Grails allow you to externalize the configuration。您可以将其设置为在类路径中或静态位置使用文件。