/** * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent) */ public void ctDestroyed() { LOG.logInfo("Stopping context: "); WMSConfigurationDocument.resetCapabilitiesCache(); WMSConfigurationDocument_1_3_0.resetCapabilitiesCache(); WMPSConfigurationDocument.resetCapabilitiesCache(); ServiceLookup lookup = ServiceLookup.getInstance(); for (Iterator<?> iter = lookup.getIterator(); iter.hasNext(); ) { String serviceName = (String) iter.next(); LOG.logInfo("Stopping service " + serviceName); try { String s = SERVICE_FACTORIES_MAPPINGS.get(lookup.getService(serviceName)); Class<?> clzz = Class.forName(s); // TODO stop and reset all service instances Method[] methods = clzz.getMethods(); for (int j = 0; j < methods.length; j++) { if (methods[j].getName().equals("reset")) { Object[] args = new Object[0]; methods[j].invoke(clzz.newInstance(), args); } } } catch (Exception e) { LOG.logError(e.getMessage(), e); } } }