in src/main/java/org/apache/sling/engine/impl/helper/SlingServletContext.java [226:259]
public void contextInitialized(final ServletContextEvent sce) {
final ServletContext delegatee;
final long counter;
synchronized ( this ) {
this.servletContext = sce.getServletContext();
this.setServerInfo();
delegatee = this.servletContext;
this.initCounter++;
counter = this.initCounter;
}
if ( delegatee != null ) {
// async registration
this.runAsync(() -> {
final boolean register;
synchronized ( SlingServletContext.this ) {
register = SlingServletContext.this.servletContext == delegatee;
}
if ( register ) {
final ServiceRegistration<ServletContext> reg = registerServletContext();
boolean immediatelyUnregister = false;
synchronized ( SlingServletContext.this ) {
if ( SlingServletContext.this.initCounter == counter ) {
SlingServletContext.this.registration = reg;
} else {
immediatelyUnregister = true;
}
}
if ( immediatelyUnregister ) {
unregisterServletContext(reg);
}
}
}, "registration");
}
}