1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| private void doStart(String[] args, Map<String, String> envs) throws Throwable { AssertUtils.isTrue(this.bizState == BizState.RESOLVED, "BizState must be RESOLVED", new Object[0]); if (envs != null) { String mainClassFromEnv = (String)envs.get("sofa.ark.biz.main.class"); if (mainClassFromEnv != null) { this.mainClass = mainClassFromEnv; ArkLoggerFactory.getDefaultLogger().info("Ark biz {} will start with main class {} from envs", this.getIdentity(), mainClassFromEnv); } }
if (this.mainClass == null) { throw new ArkRuntimeException(String.format("biz: %s has no main method", this.getBizName())); } else { ClassLoader oldClassLoader = ClassLoaderUtils.pushContextClassLoader(this.classLoader); EventAdminService eventAdminService = (EventAdminService)ArkServiceContainerHolder.getContainer().getService(EventAdminService.class);
try { eventAdminService.sendEvent(new BeforeBizStartupEvent(this)); this.resetProperties(); if (!this.isMasterBizAndEmbedEnable()) { long start = System.currentTimeMillis(); ArkLoggerFactory.getDefaultLogger().info("Ark biz {} start.", this.getIdentity()); MainMethodRunner mainMethodRunner = new MainMethodRunner(this.mainClass, args, envs); mainMethodRunner.run(); eventAdminService.sendEvent(new AfterBizStartupEvent(this)); ArkLoggerFactory.getDefaultLogger().info("Ark biz {} started in {} ms", this.getIdentity(), System.currentTimeMillis() - start); } } catch (Throwable var11) { this.setBizState(BizState.BROKEN, StateChangeReason.INSTALL_FAILED, getStackTraceAsString(var11)); eventAdminService.sendEvent(new AfterBizStartupFailedEvent(this, var11)); throw var11; } finally { ClassLoaderUtils.popContextClassLoader(oldClassLoader); }
BizManagerService bizManagerService = (BizManagerService)ArkServiceContainerHolder.getContainer().getService(BizManagerService.class); if (bizManagerService.getActiveBiz(this.bizName) == null) { this.setBizState(BizState.ACTIVATED, StateChangeReason.STARTED); } else { boolean activateMultiBizVersion = Boolean.parseBoolean(ArkConfigs.getStringValue("sofa.ark.activate.multi.biz.version.enable", "false")); if (activateMultiBizVersion) { this.setBizState(BizState.ACTIVATED, StateChangeReason.STARTED); } else { if (Boolean.getBoolean("activate.new.module")) { Biz currentActiveBiz = bizManagerService.getActiveBiz(this.bizName); ((BizModel)currentActiveBiz).setBizState(BizState.DEACTIVATED, StateChangeReason.SWITCHED, String.format("switch to new biz %s", this.getIdentity())); this.setBizState(BizState.ACTIVATED, StateChangeReason.STARTED, String.format("switch from old biz: %s", currentActiveBiz.getIdentity())); } else { this.setBizState(BizState.DEACTIVATED, StateChangeReason.STARTED, "start but is deactivated"); }
} } } }
|