package com.finebi.start; import com.fr.log.FineLoggerFactory; import com.fr.stable.ProductConstants; import com.fr.startup.FineWebApplicationInitializer; import com.fr.third.springframework.web.SpringServletContainerInitializer; import org.apache.catalina.Context; import org.apache.catalina.LifecycleState; import org.apache.catalina.loader.WebappLoader; import org.apache.catalina.startup.Tomcat; import java.awt.*; import java.net.URI; import java.util.HashSet; import java.util.Set; /** * @author richie * @version 10.0 * Created by richie on 2019/10/18 * FineBI启动器 */ public class Learner { private static final String APP_NAME = "webroot"; public static void main(String... args) throws Exception { Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); String docBase = System.getProperty("user.dir") + "/" + APP_NAME; ProductConstants.setWebAppName(ProductConstants.getAppFolderName()); String appName = "/" + APP_NAME; tomcat.getServer().addLifecycleListener(lifecycleEvent -> { if (LifecycleState.STARTED.equals(lifecycleEvent.getLifecycle().getState())) { try { Desktop.getDesktop().browse(new URI("http://localhost:8080/webroot/decision")); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } } }); Context context = tomcat.addContext(appName, docBase); Tomcat.initWebappDefaults(context); context.setLoader(new TomcatLoader()); SpringServletContainerInitializer initializer = new SpringServletContainerInitializer(); Set> classes = new HashSet<>(); classes.add(FineWebApplicationInitializer.class); context.addServletContainerInitializer(initializer, classes); tomcat.start(); } private static class TomcatLoader extends WebappLoader { @Override public ClassLoader getClassLoader() { return this.getClass().getClassLoader(); } } }