in src/main/java/org/apache/sling/launchpad/webapp/SlingServlet.java [336:395]
private void startSling(URL launcherJar) {
synchronized (this) {
if (sling != null) {
log("Apache Sling already started, nothing to do");
return;
} else if (startingSling != null) {
log("Apache Sling being started by Thread " + startingSling);
return;
}
startingSling = Thread.currentThread();
}
if (launcherJar != null) {
try {
log("Checking launcher JAR in " + slingHome);
loader.installLauncherJar(launcherJar);
} catch (IOException ioe) {
startupFailure("Failed installing " + launcherJar, ioe);
return;
}
} else {
log("No Launcher JAR to install");
}
Object object = null;
try {
object = loader.loadLauncher(SharedConstants.DEFAULT_SLING_SERVLET);
} catch (IllegalArgumentException iae) {
startupFailure("Cannot load Launcher Servlet "
+ SharedConstants.DEFAULT_SLING_SERVLET, iae);
return;
}
if (object instanceof Servlet) {
Servlet sling = (Servlet) object;
if (sling instanceof Launcher) {
Launcher slingLauncher = (Launcher) sling;
slingLauncher.setNotifiable(this);
slingLauncher.setCommandLine(properties);
slingLauncher.setSlingHome(slingHome);
}
try {
log("Starting launcher ...");
sling.init(getServletConfig());
this.sling = sling;
this.startFailureCounter = 0;
log("Startup completed");
} catch (ServletException se) {
startupFailure(null, se);
}
}
// reset the starting flag
synchronized (this) {
startingSling = null;
}
}