for (Iterator<Class<?>> cats = ioRegistry.getCategories(); cats.hasNext(); ) { Class<?> category = cats.next(); for (Iterator it = ioRegistry.getServiceProviders(category, false);
public void contextDestroyed(final ServletContextEvent event) { // De-register any locally registered IIO plugins. Relies on each web app having its own context class loader. final IIORegistry registry = IIORegistry.getDefaultInstance(); final LocalFilter localFilter = new LocalFilter(Thread.currentThread().getContextClassLoader()); // scanForPlugins uses context class loader Iterator<Class<?>> categories = registry.getCategories(); while (categories.hasNext()) { Class<?> category = categories.next(); Iterator<?> providers = registry.getServiceProviders(category, localFilter, false); // Copy the providers, as de-registering while iterating over providers will lead to ConcurrentModificationExceptions. List<Object> providersCopy = new ArrayList<Object>(); while (providers.hasNext()) { providersCopy.add(providers.next()); } for (Object provider : providersCopy) { registry.deregisterServiceProvider(provider); event.getServletContext().log(String.format("Unregistered locally installed provider class: %s", provider.getClass())); } } }
Iterator<Class<?>> categories = registry.getCategories(); ServiceRegistry.Filter classLoaderFilter = new ServiceRegistry.Filter() { @Override
@Override public void cleanUp(final ClassLoaderLeakPreventor preventor) { final IIORegistry registry = IIORegistry.getDefaultInstance(); Iterator<Class<?>> categories = registry.getCategories(); ServiceRegistry.Filter classLoaderFilter = new ServiceRegistry.Filter() { @Override
Iterator<Class<?>> i = IIORegistry.getDefaultInstance().getCategories(); while ( i.hasNext() ) { Class<?> c = i.next();