【问题标题】:Datasource for multitenant application多租户应用程序的数据源
【发布时间】:2012-04-26 23:28:32
【问题描述】:

我正在开发一个基于 Hibernat 4 的多租户应用程序。 我使用单独的数据库解决方案。 我使用 Mysql 作为数据库提供程序。 对于每个新租户,我向 mysql 添加一个新数据库。 我想在不重新启动应用服务器的情况下向我的应用程序添加一个新租户。 我使用 DriverManagerDataSource 为每个租户创建一个新的数据源,但是这个类不打算在生产中使用?我应该使用哪个类? 我正在考虑将数据源添加到 appserver 并使用 JNDIdatasource,但问题是我需要为每个新租户重新启动 appserver。有什么方法可以在不重启应用服务器的情况下添加数据源?

【问题讨论】:

标签: java spring hibernate datasource multi-tenant


【解决方案1】:

要直接回答您的问题,您可以通过 JMX 公开您的应用程序上下文并以编程方式对其进行修改。这样做的问题是更改将是暂时的,即如果您重新启动服务器,它们将不会持续存在。

另一种选择是以编程方式修改底层 xml 文件(假设您正在使用 xml)并在应用程序上下文中调用 refresh()。例如,您可以为数据源创建一个带有占位符的速度模板:

<beans>
...
#foreach ( $datasource in $datasources )
  $datasource
#end
...
</beans>

然后您将所有所需数据源的列表传递给velocity,然后生成更新的datasource-context.xml

但正如其他用户指出的那样,这确实不是一个好主意,最好使用分区或其他方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多