diff --git a/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringMasterSlaveDataSource.java b/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringMasterSlaveDataSource.java index c51b0b333c512227e08b29d9bb30a163320063eb..0e26aa69bdb4197900272a020117045d010f279b 100644 --- a/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringMasterSlaveDataSource.java +++ b/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringMasterSlaveDataSource.java @@ -44,24 +44,24 @@ public class OrchestrationSpringMasterSlaveDataSource extends MasterSlaveDataSou private final InstanceStateService instanceStateService; - private final OrchestrationMasterSlaveConfiguration orchestrationMasterSlaveConfig; + private final OrchestrationMasterSlaveConfiguration config; @Setter private ApplicationContext applicationContext; - public OrchestrationSpringMasterSlaveDataSource(final String name, final boolean overwrite, final CoordinatorRegistryCenter registryCenter, final Map dataSourceMap, - final MasterSlaveRuleConfiguration masterSlaveRuleConfig) throws SQLException { - super(masterSlaveRuleConfig.build(dataSourceMap)); - orchestrationMasterSlaveConfig = new OrchestrationMasterSlaveConfiguration(name, overwrite, registryCenter, dataSourceMap, masterSlaveRuleConfig); - configurationService = new ConfigurationService(registryCenter, name); - instanceStateService = new InstanceStateService(registryCenter, name); + public OrchestrationSpringMasterSlaveDataSource(final String name, final boolean overwrite, final CoordinatorRegistryCenter registryCenter, + final Map dataSourceMap, final MasterSlaveRuleConfiguration config) throws SQLException { + super(config.build(dataSourceMap)); + this.config = new OrchestrationMasterSlaveConfiguration(name, overwrite, registryCenter, dataSourceMap, config); + configurationService = new ConfigurationService(name, registryCenter); + instanceStateService = new InstanceStateService(name, registryCenter); } /** * initial orchestration spring master-slave data source. */ public void init() { - configurationService.addMasterSlaveConfiguration(orchestrationMasterSlaveConfig, this); + configurationService.addMasterSlaveConfiguration(config, this); instanceStateService.addMasterSlaveState(this); } diff --git a/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringShardingDataSource.java b/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringShardingDataSource.java index 5bb56c7cf713940fa3ea49a5453bb2a357d339f0..dca3865fff1883e323a9debc22834d2fb6a74f8a 100644 --- a/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringShardingDataSource.java +++ b/sharding-jdbc-orchestration-spring/sharding-jdbc-orchestration-spring-namespace/src/main/java/io/shardingjdbc/orchestration/spring/datasource/OrchestrationSpringShardingDataSource.java @@ -48,7 +48,7 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im private final InstanceStateService instanceStateService; - private final OrchestrationShardingConfiguration orchestrationShardingConfig; + private final OrchestrationShardingConfiguration config; private final Properties props; @@ -58,9 +58,9 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im public OrchestrationSpringShardingDataSource(final String name, final boolean overwrite, final CoordinatorRegistryCenter registryCenter, final Map dataSourceMap, final ShardingRuleConfiguration shardingRuleConfig, final Properties props) throws SQLException { super(shardingRuleConfig.build(dataSourceMap), props); - configurationService = new ConfigurationService(registryCenter, name); - instanceStateService = new InstanceStateService(registryCenter, name); - orchestrationShardingConfig = new OrchestrationShardingConfiguration( + configurationService = new ConfigurationService(name, registryCenter); + instanceStateService = new InstanceStateService(name, registryCenter); + config = new OrchestrationShardingConfiguration( name, overwrite, registryCenter, getActualDataSourceMapAndReviseShardingRuleConfiguration(dataSourceMap, shardingRuleConfig), shardingRuleConfig); this.props = props; } @@ -69,8 +69,8 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im * initial orchestration spring sharding data source. */ public void init() { - configurationService.persistShardingConfiguration(orchestrationShardingConfig, props); - configurationService.addShardingConfigurationChangeListener(orchestrationShardingConfig.getName(), orchestrationShardingConfig.getRegistryCenter(), this); + configurationService.persistShardingConfiguration(config, props); + configurationService.addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), this); instanceStateService.addShardingState(this); } diff --git a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationMasterSlaveDataSourceFactory.java b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationMasterSlaveDataSourceFactory.java index 8ecda59bdcae4927aa871212a744d0f02c0fd177..92a9ff42f4c9a86bb729703c1f1b3ca4751eaed6 100644 --- a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationMasterSlaveDataSourceFactory.java +++ b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationMasterSlaveDataSourceFactory.java @@ -42,6 +42,8 @@ public final class OrchestrationMasterSlaveDataSourceFactory { * @throws SQLException SQL exception */ public static DataSource createDataSource(final OrchestrationMasterSlaveConfiguration config) throws SQLException { - return new OrchestrationMasterSlaveDataSource(config).getDataSource(); + OrchestrationMasterSlaveDataSource orchestrationMasterSlaveDataSource = new OrchestrationMasterSlaveDataSource(config); + orchestrationMasterSlaveDataSource.init(); + return orchestrationMasterSlaveDataSource.getDataSource(); } } diff --git a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationShardingDataSourceFactory.java b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationShardingDataSourceFactory.java index 66d43290220d6893ae16059f05d2aadfd14466ab..c96580d44fcaa9d34017064f1972d0ddd261ddc4 100644 --- a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationShardingDataSourceFactory.java +++ b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/OrchestrationShardingDataSourceFactory.java @@ -43,7 +43,7 @@ public final class OrchestrationShardingDataSourceFactory { * @throws SQLException SQL exception */ public static DataSource createDataSource(final OrchestrationShardingConfiguration config) throws SQLException { - return new OrchestrationShardingDataSource(config).getDataSource(); + return createDataSource(config, new Properties()); } /** @@ -55,6 +55,8 @@ public final class OrchestrationShardingDataSourceFactory { * @throws SQLException SQL exception */ public static DataSource createDataSource(final OrchestrationShardingConfiguration config, final Properties props) throws SQLException { - return new OrchestrationShardingDataSource(config, props).getDataSource(); + OrchestrationShardingDataSource orchestrationShardingDataSource = new OrchestrationShardingDataSource(config, props); + orchestrationShardingDataSource.init(); + return orchestrationShardingDataSource.getDataSource(); } } diff --git a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationMasterSlaveDataSource.java b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationMasterSlaveDataSource.java index 74cde3cfcbae3699b7c174607d53ac714f0b3eee..1d7ba81da91907fc4b75f108a838844cff71ba1b 100644 --- a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationMasterSlaveDataSource.java +++ b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationMasterSlaveDataSource.java @@ -34,12 +34,27 @@ import java.sql.SQLException; @Getter public class OrchestrationMasterSlaveDataSource { - private MasterSlaveDataSource dataSource; + private final OrchestrationMasterSlaveConfiguration config; + + private final MasterSlaveDataSource dataSource; + + private final ConfigurationService configurationService; + + private final InstanceStateService instanceStateService; public OrchestrationMasterSlaveDataSource(final OrchestrationMasterSlaveConfiguration config) throws SQLException { config.getRegistryCenter().init(); + this.config = config; dataSource = (MasterSlaveDataSource) MasterSlaveDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getMasterSlaveRuleConfiguration()); - new ConfigurationService(config.getRegistryCenter(), config.getName()).addMasterSlaveConfiguration(config, dataSource); - new InstanceStateService(config.getRegistryCenter(), config.getName()).addMasterSlaveState(dataSource); + configurationService = new ConfigurationService(config.getName(), config.getRegistryCenter()); + instanceStateService = new InstanceStateService(config.getName(), config.getRegistryCenter()); + } + + /** + * Initial orchestration master-slave data source. + */ + public void init() { + configurationService.addMasterSlaveConfiguration(config, dataSource); + instanceStateService.addMasterSlaveState(dataSource); } } diff --git a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationShardingDataSource.java b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationShardingDataSource.java index aa1f27636962c25858a6f274c200d805015b9663..d8310875823460402ea8f330b20a41a283c08f60 100644 --- a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationShardingDataSource.java +++ b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/api/datasource/OrchestrationShardingDataSource.java @@ -35,21 +35,35 @@ import java.util.Properties; @Getter public class OrchestrationShardingDataSource { - private ShardingDataSource dataSource; + private final OrchestrationShardingConfiguration config; + + private final Properties props; + + private final ShardingDataSource dataSource; + + private final ConfigurationService configurationService; + + private final InstanceStateService instanceStateService; public OrchestrationShardingDataSource(final OrchestrationShardingConfiguration config) throws SQLException { - config.getRegistryCenter().init(); - new ConfigurationService(config.getRegistryCenter(), config.getName()).persistShardingConfiguration(config, new Properties()); - dataSource = (ShardingDataSource) ShardingDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getShardingRuleConfig()); - new ConfigurationService(config.getRegistryCenter(), config.getName()).addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), dataSource); - new InstanceStateService(config.getRegistryCenter(), config.getName()).addShardingState(dataSource); + this(config, new Properties()); } public OrchestrationShardingDataSource(final OrchestrationShardingConfiguration config, final Properties props) throws SQLException { config.getRegistryCenter().init(); - new ConfigurationService(config.getRegistryCenter(), config.getName()).persistShardingConfiguration(config, props); - dataSource = (ShardingDataSource) ShardingDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getShardingRuleConfig(), props); - new ConfigurationService(config.getRegistryCenter(), config.getName()).addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), dataSource); - new InstanceStateService(config.getRegistryCenter(), config.getName()).addShardingState(dataSource); + this.config = config; + this.props = props; + dataSource = (ShardingDataSource) ShardingDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getShardingRuleConfig()); + configurationService = new ConfigurationService(config.getName(), config.getRegistryCenter()); + instanceStateService = new InstanceStateService(config.getName(), config.getRegistryCenter()); + } + + /** + * Initial orchestration master-slave data source. + */ + public void init() { + configurationService.persistShardingConfiguration(config, new Properties()); + configurationService.addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), dataSource); + instanceStateService.addShardingState(dataSource); } } diff --git a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/config/ConfigurationService.java b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/config/ConfigurationService.java index 21bb8ad6f2abc840b173005c581644f23ecf7cd9..e6b77d3335f93b90bc06f21a14f64ea8559e8975 100644 --- a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/config/ConfigurationService.java +++ b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/config/ConfigurationService.java @@ -40,7 +40,7 @@ import java.util.Map; import java.util.Properties; /** - * Data configuration service. + * configuration service. * * @author caohao */ @@ -48,8 +48,8 @@ public final class ConfigurationService { private final DataNodeStorage dataNodeStorage; - public ConfigurationService(final CoordinatorRegistryCenter regCenter, final String name) { - dataNodeStorage = new DataNodeStorage(regCenter, name); + public ConfigurationService(final String name, final CoordinatorRegistryCenter regCenter) { + dataNodeStorage = new DataNodeStorage(name, regCenter); } /** diff --git a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/state/InstanceStateService.java b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/state/InstanceStateService.java index c2e4c1d24d051edbbf54c9181e0bc301d2cba614..75fcf54acad18c878bf4a041e3aaf833d62be18b 100644 --- a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/state/InstanceStateService.java +++ b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/state/InstanceStateService.java @@ -29,6 +29,7 @@ import io.shardingjdbc.orchestration.internal.json.GsonFactory; import io.shardingjdbc.orchestration.internal.json.ShardingRuleConfigurationConverter; import io.shardingjdbc.orchestration.reg.base.CoordinatorRegistryCenter; import lombok.Getter; +import lombok.RequiredArgsConstructor; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.recipes.cache.ChildData; import org.apache.curator.framework.recipes.cache.TreeCache; @@ -44,6 +45,7 @@ import java.util.Properties; * * @author caohao */ +@RequiredArgsConstructor @Getter public final class InstanceStateService { @@ -51,11 +53,6 @@ public final class InstanceStateService { private final CoordinatorRegistryCenter registryCenter; - public InstanceStateService(final CoordinatorRegistryCenter regCenter, final String name) { - this.registryCenter = regCenter; - this.name = name; - } - /** * Add sharding state. * diff --git a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/storage/DataNodeStorage.java b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/storage/DataNodeStorage.java index 263f52ba662d3c03c76adcdcad265a1196b4c842..fe2ea9cbf919ae83a6e000e2134c9989826ce4a0 100644 --- a/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/storage/DataNodeStorage.java +++ b/sharding-jdbc-orchestration/src/main/java/io/shardingjdbc/orchestration/internal/storage/DataNodeStorage.java @@ -28,15 +28,15 @@ import org.apache.curator.framework.recipes.cache.TreeCacheListener; */ public final class DataNodeStorage { - private final CoordinatorRegistryCenter regCenter; - private final String name; + private final CoordinatorRegistryCenter regCenter; + private final DataNodePath nodePath; - public DataNodeStorage(final CoordinatorRegistryCenter regCenter, final String name) { - this.regCenter = regCenter; + public DataNodeStorage(final String name, final CoordinatorRegistryCenter regCenter) { this.name = name; + this.regCenter = regCenter; nodePath = new DataNodePath(name); }