diff --git a/ebean-api/src/main/java/io/ebean/DatabaseFactory.java b/ebean-api/src/main/java/io/ebean/DatabaseFactory.java index 11cdf9068..6ad7b1d89 100644 --- a/ebean-api/src/main/java/io/ebean/DatabaseFactory.java +++ b/ebean-api/src/main/java/io/ebean/DatabaseFactory.java @@ -33,6 +33,7 @@ public class DatabaseFactory { private static final ReentrantLock lock = new ReentrantLock(); private static SpiContainer container; + private static String defaultServerName; static { EbeanVersion.getVersion(); @@ -76,6 +77,12 @@ public class DatabaseFactory { } Database server = createInternal(config); if (config.isRegister()) { + if (config.isDefaultServer()) { + if (defaultServerName != null) { + throw new IllegalStateException("Registering [" + config.getName() + "] as the default server but [" + defaultServerName + "] is already registered as the default"); + } + defaultServerName = config.getName(); + } DbPrimary.setSkip(true); DbContext.getInstance().register(server, config.isDefaultServer()); } diff --git a/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java b/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java index 036a39040..8e65f9bb3 100644 --- a/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java +++ b/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java @@ -2795,6 +2795,7 @@ public class DatabaseConfig { } loadDocStoreSettings(p); + defaultServer = p.getBoolean("defaultServer", defaultServer); loadModuleInfo = p.getBoolean("loadModuleInfo", loadModuleInfo); maxCallStack = p.getInt("maxCallStack", maxCallStack); dumpMetricsOnShutdown = p.getBoolean("dumpMetricsOnShutdown", dumpMetricsOnShutdown); diff --git a/ebean-core/src/test/java/io/ebean/config/ServerConfigTest.java b/ebean-core/src/test/java/io/ebean/config/ServerConfigTest.java index a81082d16..8fda93985 100644 --- a/ebean-core/src/test/java/io/ebean/config/ServerConfigTest.java +++ b/ebean-core/src/test/java/io/ebean/config/ServerConfigTest.java @@ -74,9 +74,11 @@ public class ServerConfigTest { props.setProperty("loadModuleInfo", "true"); props.setProperty("collectQueryPlanThresholdMicros", "10000"); props.setProperty("forUpdateNoKey", "true"); + props.setProperty("defaultServer", "false"); serverConfig.loadFromProperties(props); + assertFalse(serverConfig.isDefaultServer()); assertTrue(serverConfig.isDisableL2Cache()); assertTrue(serverConfig.isNotifyL2CacheInForeground()); assertTrue(serverConfig.isDbOffline()); @@ -134,6 +136,7 @@ public class ServerConfigTest { ServerConfig serverConfig = new ServerConfig(); assertTrue(serverConfig.isIdGeneratorAutomatic()); + assertTrue(serverConfig.isDefaultServer()); serverConfig.setIdGeneratorAutomatic(false); assertFalse(serverConfig.isIdGeneratorAutomatic());