private void destroyServlet()

in src/main/java/org/apache/sling/servlets/resolver/internal/resource/ServletMounter.java [308:335]


    private void destroyServlet(final ServiceReference<Servlet> reference) {
        ServletReg registration;
        synchronized (this.servletsByReference) {
            registration = servletsByReference.remove(reference);
        }
        if (registration != null) {

            for(final ServiceRegistration<ResourceProvider<Object>> reg : registration.registrations) {
                try {
                    reg.unregister();
                } catch ( final IllegalStateException ise) {
                    // this might happen on shutdown
                }
            }
            if (registration.provider != null && provider != null &&
                    provider.remove(registration.provider)) {
                resolutionCaches.values().forEach(ResolutionCache::flushCache);
            }
            final String name = RequestUtil.getServletName(registration.servlet);
            logger.debug("unbindServlet: Servlet {} removed", name);

            try {
                registration.servlet.destroy();
            } catch (Throwable t) { // NOSONAR
                logger.error("unbindServlet: Unexpected problem destroying servlet " + name, t);
            }
        }
    }