gpt4 book ai didi

Grails 从 session 更改数据库 URL 连接

转载 作者:行者123 更新时间:2023-12-02 14:26:10 25 4
gpt4 key购买 nike

我需要使用 session 更改数据源的 url 或将当前连接更改为新连接或在运行时构建新数据源(在我的 Controller 或服务中)

如果有人可以告诉我另一种方式排除多数据源告诉我

谢谢

最佳答案

我有一种不是最干净的方法,但应该可以。如果您可以访问 dataSource Spring bean 你可以改变它的属性。您需要让它关闭所有池连接,然后新连接将使用新设置。

您可以像任何 bean 一样使用依赖注入(inject)来访问数据源,即 def dataSourceUnproxied .您必须使用“dataSourceUnproxied”而不是“dataSource”才能获得真正的 DataSource ,而不是 Grails 包装真实代理的事务感知代理。

完成后,您可以像这样更改 url、用户名等:

dataSourceUnproxied.url = 'some other url'
dataSourceUnproxied.username = 'some other username'

然后关闭它以强制关闭所有连接,但重置 closed标记以欺骗它下次重新连接 getConnection()叫做:
dataSourceUnproxied.close()
dataSourceUnproxied.closed = false

这是非常特定于池实现的,因为 DataSource接口(interface)只有几个方法。这适用于 org.apache.commons.dbcp.BasicDataSource Grails 默认使用的,但如果您使用不同的池实现,则需要查看其源以获得等效方法。

关于Grails 从 session 更改数据库 URL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12577736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com