Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database AbstractMultiTenantConnectionProvider,选择ConnectionProvider_Database_Hibernate_Connection_Database Schema_Multi Tenant - Fatal编程技术网

Database AbstractMultiTenantConnectionProvider,选择ConnectionProvider

Database AbstractMultiTenantConnectionProvider,选择ConnectionProvider,database,hibernate,connection,database-schema,multi-tenant,Database,Hibernate,Connection,Database Schema,Multi Tenant,使用AbstractMultiTenantConnectionProvider会给我带来一些问题。在我有1000个租户的情况下,我想在不重新启动Web服务器的情况下添加更多租户,如何轻松使用selectConnectionProvider @Override protected ConnectionProvider selectConnectionProvider(String tenantIdentifier) { if( "xml1".equals(tenantIdentifier) )

使用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

这是一个后续问题

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

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

然后,您只需要决定如何在开始/停止之间持久化租户(写入文件等)。就我个人而言,我会在注册/注销租户呼叫时立即坚持。或者,您可以等到关机(让MultitenantConnectionProviderImpl实现可停止),但在JVM崩溃的情况下,您可能无法写出一些内容。

非常好!非常感谢。干杯,t。