MCRClassLoaderLeakPreventor.java 文件源码

java
阅读 19 收藏 0 点赞 0 评论 0

项目:mycore 作者:
protected void clearImageIORegistry() {
    IIORegistry registry = IIORegistry.getDefaultInstance();
    Iterator<Class<?>> categories = registry.getCategories();
    final ClassLoader webClassLoader = getWebApplicationClassLoader();
    ServiceRegistry.Filter classLoaderFilter = provider -> {
        //remove all service provider loaded by the current ClassLoader
        return webClassLoader.equals(provider.getClass().getClassLoader());
    };
    while (categories.hasNext()) {
        @SuppressWarnings("unchecked")
        Class<IIOServiceProvider> category = (Class<IIOServiceProvider>) categories.next();
        Iterator<IIOServiceProvider> serviceProviders = registry.getServiceProviders(category,
            classLoaderFilter, true);
        if (serviceProviders.hasNext()) {
            info("removing service provider of category: " + category.getSimpleName());
            //copy to list
            LinkedList<IIOServiceProvider> serviceProviderList = new LinkedList<>();
            while (serviceProviders.hasNext()) {
                serviceProviderList.add(serviceProviders.next());
            }
            for (IIOServiceProvider serviceProvider : serviceProviderList) {
                info(" - removing: " + serviceProvider.getDescription(Locale.ROOT));
                registry.deregisterServiceProvider(serviceProvider);
            }
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号