我们正在开发一个Grails web应用程序,不同的用户(客户)需要指向只包含其组织数据的不同数据库。不幸的是,分离的数据库是一种要求,我们被要求每个人只能有一个web应用程序。
然而,Grails期望只有一个数据源池连接到一个数据库。
我们希望能够根据登录的用户在每个会话中切换数据库连接,其中不同的连接是在BootStrap init()期间从属性文件中读取的。
到目前为止,我们还无法找到一个似乎没有种族条件的解决方案,也没有插件,而且这似乎不是一个流行的问题。
我们最有希望的是创建一个自定义的动态数据源,在Bootstrap中设置以定义组织->dataSource的映射,并利用Bootstrap定义的闭包在GORM行为之前找到合适的dataSource,但这似乎会在存在延迟时导致竞争。
有人知道如何合法地进行这种切换吗?
感谢
考虑到Grails是基于Spring构建的,您最好的选择是开发自己的可解析数据源。
- 动态数据源路由
- 数据源路由示例
您的问题中不清楚您是部署了一次应用程序,并试图配置用户使用的DataSource
,还是只想通过部署进行配置。
如果只是每个部署,Grails允许您将配置外部化。您可以将其设置为使用类路径中或静态位置中的文件。