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);
}
}
}
}
MCRClassLoaderLeakPreventor.java 文件源码
java
阅读 19
收藏 0
点赞 0
评论 0
项目:mycore
作者:
评论列表
文章目录