protected void deactivate()

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