final Thread currentThread = Thread.currentThread(); final ClassLoader saveClassLoader = currentThread.getContextClassLoader(); currentThread.setContextClassLoader(new ClassLoaderProxy(saveClassLoader)); EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("test"); em = emFactory.createEntityManager();
protected Class<?> loadClass(String name, boolean resolve, boolean followImports) throws ClassNotFoundException { // First, check if the class has already been loaded Class c = findLoadedClass(name); if (c == null) { try { if (getParent() != null) { c = getParent().loadClass(name); } } catch (ClassNotFoundException e) { } if (c == null) { c = findClass(name, followImports); } if (resolve) { resolveClass(c); } } else { if (c.getClassLoader() == this) { return c; } else throw new ClassNotFoundException(name); } return c; }
return findClassDirect(name); } catch(ClassNotFoundException cfne) { if (followImports) {
public String toString() { StringBuffer s= new StringBuffer(); s.append("ModuleClassLoader(name=").append(module.getName()); s.append(", parent=").append(super.toString()); s.append(",init=").append(initialized); s.append(",URls[]="); for (URL url : getURLs()) { s.append(url).append(","); } s.append(")"); for (ClassLoader surrogate : super.getDelegates()) { s.append("\n ref : ").append(surrogate.toString()); } return s.toString(); }
parent = getParentClassLoader(); ClassLoaderProxy cl = new ClassLoaderProxy(new URL[0], parent); for (ModuleDefinition def : defs) { Module module = this.makeModuleFor(def.getName(), def.getVersion()); cl.addDelegate(module.getClassLoader()); cl.addURL(url);
/** * {@link #findClass(String)} except the classloader punch-in hack. */ /*package*/ synchronized Class findClassDirect(String name) throws ClassNotFoundException { Class c = findLoadedClass(name); if(c!=null) return c; try { return super.findClass(name); } catch (NoClassDefFoundError e) { throw new ClassNotFoundException(e.getMessage()); } }
protected Class<?> findClass(String name) throws ClassNotFoundException { try { return super.findClass(name); } catch (ClassNotFoundException e) { // punch in. find the provider class, no matter where we are. ModuleImpl m = module.getRegistry().getProvidingModule(name); if(m!=null) return m.getPrivateClassLoader().loadClass(name); throw e; } }
protected void finalize() throws Throwable { super.finalize(); LogHelper.getDefaultLogger().info("ModuleClassLoader gc'ed " + module.getModuleDefinition().getName()); }
public URL getResource(String name) { initialize(name); if(name.startsWith(META_INF_SERVICES)) { // punch in. find the service loader from any module String serviceName = name.substring(META_INF_SERVICES.length()); ModulesRegistry reg = module.getRegistry(); for( Module m : reg.getModules() ) { List<URL> list = m.getMetadata().getDescriptors(serviceName); if(!list.isEmpty()) return list.get(0); } // no such resource return super.getResource(name); } else { // normal service look up URL url = super.getResource(name); if(url!=null) return url; // commons-logging looks for a class file resource for providers, // so check for those if(name.endsWith(".class")) { String className = name.replace('/', '.').substring(0, name.length() - 6); ModuleImpl m = module.getRegistry().getProvidingModule(className); if(m!=null) return m.getPrivateClassLoader().getResource(name); } return null; } }
parent = getParentClassLoader(); ClassLoaderProxy cl = new ClassLoaderProxy(new URL[0], parent); for (ModuleDefinition def : defs) { Module module = this.makeModuleFor(def.getName(), def.getVersion()); cl.addDelegate(module.getClassLoader()); cl.addURL(url);
public String toString() { StringBuffer s= new StringBuffer(); s.append("ModuleClassLoader(name=").append(module.getName()); s.append(", parent=").append(super.toString()); s.append(",init=").append(initialized); s.append(",URls[]="); for (URL url : getURLs()) { s.append(url).append(","); } s.append(")"); for (ClassLoader surrogate : super.getDelegates()) { s.append("\n ref : ").append(surrogate.toString()); } return s.toString(); }
/** * {@link #findClass(String)} except the classloader punch-in hack. */ /*package*/ synchronized Class findClassDirect(String name) throws ClassNotFoundException { Class c = findLoadedClass(name); if(c!=null) return c; try { return super.findClass(name); } catch (NoClassDefFoundError e) { throw new ClassNotFoundException(e.getMessage()); } }
protected Class<?> findClass(String name) throws ClassNotFoundException { try { return super.findClass(name); } catch (ClassNotFoundException e) { // punch in. find the provider class, no matter where we are. ModuleImpl m = module.getRegistry().getProvidingModule(name); if(m!=null) return m.getPrivateClassLoader().loadClass(name); throw e; } }
protected void finalize() throws Throwable { super.finalize(); LogHelper.getDefaultLogger().info("ModuleClassLoader gc'ed " + module.getModuleDefinition().getName()); }
public URL getResource(String name) { initialize(name); if(name.startsWith(META_INF_SERVICES)) { // punch in. find the service loader from any module String serviceName = name.substring(META_INF_SERVICES.length()); ModulesRegistry reg = module.getRegistry(); for( Module m : reg.getModules() ) { List<URL> list = m.getMetadata().getDescriptors(serviceName); if(!list.isEmpty()) return list.get(0); } // no such resource return super.getResource(name); } else { // normal service look up URL url = super.getResource(name); if(url!=null) return url; // commons-logging looks for a class file resource for providers, // so check for those if(name.endsWith(".class")) { String className = name.replace('/', '.').substring(0, name.length() - 6); ModuleImpl m = module.getRegistry().getProvidingModule(className); if(m!=null) return m.getPrivateClassLoader().getResource(name); } return null; } }
protected Class<?> loadClass(String name, boolean resolve, boolean followImports) throws ClassNotFoundException { // First, check if the class has already been loaded Class c = findLoadedClass(name); if (c == null) { try { if (getParent() != null) { c = getParent().loadClass(name); } } catch (ClassNotFoundException e) { } if (c == null) { c = findClass(name, followImports); } if (resolve) { resolveClass(c); } } else { if (c.getClassLoader() == this) { return c; } else throw new ClassNotFoundException(name); } return c; }
return findClassDirect(name); } catch(ClassNotFoundException cfne) { if (followImports) {