in src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletMounter.java [136:165]
protected void deactivate() {
this.active = false;
// Copy the list of servlets first, to minimize the need for
// synchronization
final Collection<ServiceReference<Servlet>> refs;
synchronized (this.servletsByReference) {
refs = new ArrayList<>(servletsByReference.keySet());
}
if (provider != null) {
provider.clear();
}
// destroy all servlets
destroyAllServlets(refs);
if (providerRegs != null) {
for (ServiceRegistration<?> reg : providerRegs) {
try {
reg.unregister();
} catch (IllegalStateException ex) {
// Can happen during shutdown
}
}
providerRegs.clear();
}
// sanity check: clear array (it should be empty now anyway)
synchronized ( this.servletsByReference ) {
this.servletsByReference.clear();
}
}