diff --git a/sofa-ark-parent/core-impl/container/src/main/java/com/alipay/sofa/ark/container/model/BizModel.java b/sofa-ark-parent/core-impl/container/src/main/java/com/alipay/sofa/ark/container/model/BizModel.java index d157a7b45..b883440bd 100644 --- a/sofa-ark-parent/core-impl/container/src/main/java/com/alipay/sofa/ark/container/model/BizModel.java +++ b/sofa-ark-parent/core-impl/container/src/main/java/com/alipay/sofa/ark/container/model/BizModel.java @@ -323,6 +323,16 @@ public void start(String[] args, Map envs) throws Throwable { private void doStart(String[] args, Map envs) throws Throwable { AssertUtils.isTrue(bizState == BizState.RESOLVED, "BizState must be RESOLVED"); + + // 支持运行时根据环境变量动态设置模块的启动类 + if (envs != null){ + String mainClassFromEnv = envs.get(Constants.BIZ_MAIN_CLASS); + if (mainClassFromEnv != null){ + mainClass = mainClassFromEnv; + ArkLoggerFactory.getDefaultLogger().info("Ark biz {} will start with main class {} from envs", getIdentity(), mainClassFromEnv); + } + } + if (mainClass == null) { throw new ArkRuntimeException(String.format("biz: %s has no main method", getBizName())); } diff --git a/sofa-ark-parent/core/spi/src/main/java/com/alipay/sofa/ark/spi/constant/Constants.java b/sofa-ark-parent/core/spi/src/main/java/com/alipay/sofa/ark/spi/constant/Constants.java index bbacca512..f194faa5b 100644 --- a/sofa-ark-parent/core/spi/src/main/java/com/alipay/sofa/ark/spi/constant/Constants.java +++ b/sofa-ark-parent/core/spi/src/main/java/com/alipay/sofa/ark/spi/constant/Constants.java @@ -203,6 +203,7 @@ public class Constants { public final static String EMBED_STATIC_BIZ_IN_RESOURCE_ENABLE = "sofa.ark.embed.static.biz.in.resource.enable"; public final static String ACTIVATE_NEW_MODULE = "activate.new.module"; + public final static String BIZ_MAIN_CLASS = "sofa.ark.biz.main.class"; /** * uninstall the biz if it starts up failed