diff --git a/designer-base/src/main/java/com/fr/start/server/FineEmbedServer.java b/designer-base/src/main/java/com/fr/start/server/FineEmbedServer.java index e977884427..e70804c4dc 100644 --- a/designer-base/src/main/java/com/fr/start/server/FineEmbedServer.java +++ b/designer-base/src/main/java/com/fr/start/server/FineEmbedServer.java @@ -7,11 +7,17 @@ import com.fr.module.ModuleContext; * Created by juhaoyu on 2018/6/6. */ public abstract class FineEmbedServer { + + /** + * 是否正在启动中 + */ + private static volatile boolean onStarting = false; public synchronized static void start() { - + onStarting = true; EventDispatcher.fire(EmbedServerEvent.BeforeStart); ModuleContext.getModule(FineEmbedServerActivator.class).start(); + onStarting = false; EventDispatcher.fire(EmbedServerEvent.AfterStart); } @@ -26,4 +32,8 @@ public abstract class FineEmbedServer { return ModuleContext.getModule(FineEmbedServerActivator.class).isRunning(); } + + public static boolean isOnStarting() { + return onStarting; + } } diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java index 4149753f72..fd8bd93079 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java @@ -125,7 +125,7 @@ public class DesignerStartup extends Activator { @Override public void on(Event event, Null param) { // 有可能被插件之类的 强制启动了 判断下 - if (FineEmbedServer.isRunning()) { + if (FineEmbedServer.isRunning() || FineEmbedServer.isOnStarting()) { return; } startEmbeddedServer(); diff --git a/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java b/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java index ad2485d690..9321a56a97 100644 --- a/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java +++ b/designer-realize/src/main/java/com/fr/start/module/optimized/TenantDBAdapter4Designer.java @@ -4,6 +4,7 @@ import com.fr.config.dao.DaoSelectorFactory; import com.fr.config.dao.swicter.DaoSwitcher; import com.fr.design.DesignerEnvManager; import com.fr.event.Event; +import com.fr.event.EventDispatcher; import com.fr.event.Listener; import com.fr.event.Null; import com.fr.exit.ConfigToPropMigrator; @@ -25,6 +26,7 @@ public class TenantDBAdapter4Designer extends TenantDBAdapter { @Override public void on(Event event, Null param) { TenantDBAdapter4Designer.super.start(); + afterStart(); } }); @@ -32,7 +34,7 @@ public class TenantDBAdapter4Designer extends TenantDBAdapter { @Override public void on(Event event, Null param) { if (DaoSelectorFactory.getDaoSelector().useCacheDao()) { - beforeEmbedServerStart(); + EventDispatcher.fire(LazyStartupEvent.INSTANCE); } } }); @@ -42,7 +44,7 @@ public class TenantDBAdapter4Designer extends TenantDBAdapter { } } - private void beforeEmbedServerStart() { + private void afterStart() { DesignerEnvManager.getEnvManager().setPropertiesUsable(false); DaoSwitcher.executeSwitch(); ConfigToPropMigrator.getInstance().deletePropertiesCache();