/** * Get the library cache folder for the given module. Each module has a different cache folder * to ease cleanup when unloading a module while openmrs is running * * @param module Module which the cache will be used for * @return File directory where the files will be placed */ public static File getLibCacheFolderForModule(Module module) { File tmpModuleDir = new File(OpenmrsClassLoader.getLibCacheFolder(), module.getModuleId()); // each module gets its own folder named /moduleId/ if (!tmpModuleDir.exists()) { tmpModuleDir.mkdir(); tmpModuleDir.deleteOnExit(); } return tmpModuleDir; }
/** * @see java.net.URLClassLoader#findResource(java.lang.String) */ @Override public URL findResource(final String name) { log.trace("finding resource: {}", name); URL result; for (ModuleClassLoader classLoader : ModuleFactory.getModuleClassLoaders()) { result = classLoader.findResource(name); if (result != null) { return result; } } // look for the resource in the parent result = super.findResource(name); // expand the jar url if necessary if (result != null && "jar".equals(result.getProtocol()) && name.contains("openmrs")) { result = expandURL(result, getLibCacheFolder()); } return result; }
File cacheFolder = OpenmrsClassLoader.getLibCacheFolder();
cl.dispose(); File folder = OpenmrsClassLoader.getLibCacheFolder(); File tmpModuleDir = new File(folder, moduleId); try {