public ServletWebServerFactory servletContainer()

in src/main/java/org/apache/pulsar/manager/EmbeddedTomcatCustomizer.java [60:102]


    public ServletWebServerFactory servletContainer() {
        log.info("Starting servletContainer");
        return new TomcatServletWebServerFactory() {
            @Override
            protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
                try {
                    log.info("Catalina base is " + tomcat.getServer().getCatalinaBase().getAbsolutePath());
                    File lib = new File("lib").getAbsoluteFile();
                    if (lib.isDirectory()) {
                        File bkvmWar = searchWar(lib, "bkvm", ".war");
                        if (bkvmWar != null) {
                            File configFile = new File("bkvm.conf");
                            log.info("looking for BKVM configuration file at " + configFile.getAbsolutePath());
                            if (configFile.isFile()) {
                                Properties props = new Properties();
                                try (FileReader reader = new FileReader(configFile)) {
                                    props.load(reader);
                                }
                                boolean bkvmEnabled = Boolean.parseBoolean(props.getProperty("bkvm.enabled", "false"));
                                log.info("Read bkvm.enabled = {}", bkvmEnabled);
                                if (bkvmEnabled) {
                                    System.setProperty("bookkeeper.visual.manager.config.path", configFile.getAbsolutePath());
                                    File file = new File(tomcat.getServer().getCatalinaBase(), "/webapps");
                                    log.info("Tomcat Webapps directory is " + file.getAbsolutePath());
                                    file.mkdirs();
                                    File bkvmDirectory = new File(file, "bkvm");
                                    log.info("Deploying BKVM to " + bkvmDirectory.getAbsolutePath());
                                    unZip(bkvmWar, bkvmDirectory);
                                    Context context = tomcat.addWebapp("/bkvm", bkvmDirectory.getAbsolutePath());
                                    WebappLoader loader = new WebappLoader(Thread.currentThread().getContextClassLoader());
                                    context.setLoader(loader);
                                }
                            }
                        }
                    }
                    return super.getTomcatWebServer(tomcat);
                } catch (IOException | ServletException ex) {
                    throw new RuntimeException(ex);
                }
            }

        };
    }