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);
}
}
};
}