2

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

但是,Grails 只需要一个数据源池连接到一个数据库。

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

到目前为止,我们一直无法找到似乎没有竞态条件的解决方案,没有我们可以找到的插件,而且它似乎也不是一个流行的问题。

我们最有希望的是创建一个自定义动态数据源,在 Bootstrap 中设置以定义一个组织->数据源的映射,并利用 Bootstrap 中定义的闭包在 GORM 行为之前找到合适的数据源,但这似乎会导致出现竞争条件是延迟。

有谁知道如何合法地执行这种切换?

谢谢

4

2 回答 2

1

考虑到 Grails 是基于 Spring 构建的,您最好的选择是开发自己的可解析数据源。

  1. 动态数据源路由
  2. 数据源路由示例
于 2013-11-25T22:34:37.220 回答
0

您的问题不清楚您是部署一次应用程序并尝试配置DataSource用户使用的,还是只想通过部署进行配置。

如果只是每次部署,Grails 允许您将配置外部化。您可以将其设置为使用类路径或静态位置中的文件。

于 2013-11-25T22:03:31.647 回答