selectConnectionProvider

selectConnectionProvider

使用AbstractMultitenantConnectionProvider会给我带来一些问题。在我有1000个租户的情况下,我想在不重新启动web服务器的情况下添加更多的租户,如何轻松地使用selectconnectionprovider?

 @Override
protected ConnectionProvider selectConnectionProvider(String tenantIdentifier) {

if( "xml1".equals(tenantIdentifier) )
    return xml1;

if( "xml2".equals(tenantIdentifier) )
    return xml2;

return null;
}

正如您在本例中看到的,租户是静态链接的。我怎么能解决这个问题。谢谢你的任何提示或解决方案!干杯,T。
这是一个后续问题Implement an AbstractMultiTenantConnectionProvider

最佳答案

将其设置为一个注册表(如模式中所示),根据需要注册/注销租户(“根据需要”由应用程序/环境定义)。在结构上,多租户连接提供程序内部是一个映射。您可以使用以下方法从Hibernate SessionFactory访问多租户连接提供程序:

MultiTenantConnectionProvider multiTenantConnectionProvider =
( (SessionFactoryImplementor) sessionFactory )
        .getServiceRegistry()
        .getService( MultiTenantConnectionProvider.class );
YourMultiTenantConnectionProviderImpl yourMultiTenantConnectionProvider = (YourMultiTenantConnectionProviderImpl) multiTenantConnectionProvider;
yourMultiTenantConnectionProvider.registerTenant( ... );
...
yourMultiTenantConnectionProvider.deregisterTenant( ... );

然后您只需要决定如何在开始/停止(写入文件等)之间持久化租户。就我个人而言,在registerTenant/deregisterTenant调用时我会立即坚持。或者,您可以等到关机(让您的multitenantconnectionproviderimpl实现停止),但在jvm崩溃的情况下,您可能会漏掉一些内容。

关于database - AbstractMultiTenantConnectionProvider,selectConnectionProvider,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12674820/

10-09 01:16