[jboss-dev-forums] [Design of POJO Server] - Re: Scoped domain with java2ParentDelegation=false loads cla
kabir.khan@jboss.com
do-not-reply at jboss.com
Fri Oct 12 08:28:04 EDT 2007
ClassLoaderDomain.getResource() called on the scoped domain always seems to return null for any resource, and also blacklists it:
| ClassLoaderDomain myDomain = getClassLoaderDomain();
| URL blah = myDomain.getResource("org/jboss/test/aop/scopedextender/blah.txt"); //This file definitely exists
| System.out.println("---- FOUND blah.txt " + blah);
|
yields
| 2007-10-12 11:33:46,015 TRACE [org.jboss.classloader.spi.base.BaseClassLoaderDomain] ClassLoaderDomain at 11b3435{aop.loading:loader=scopedextender1} trying to get resource org/jboss/test/aop/scopedextender/blah.txt from all exports null
| 2007-10-12 11:34:10,906 TRACE [org.jboss.classloader.spi.ClassLoaderDomain] ClassLoaderDomain at 11b3435{aop.loading:loader=scopedextender1} org/jboss/test/aop/scopedextender/blah.txt matches parent afterFilter=<EVERYTHING>
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.ClassLoaderDomain] ClassLoaderDomain at 11b3435{aop.loading:loader=scopedextender1} get resource from parent org/jboss/test/aop/scopedextender/blah.txt parent=ClassLoaderDomain at 1f21056{<DEFAULT>}
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.ClassLoaderDomain] ClassLoaderDomain at 1f21056{<DEFAULT>} org/jboss/test/aop/scopedextender/blah.txt matches parent beforeFilter=<EVERYTHING>
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.ClassLoaderDomain] ClassLoaderDomain at 1f21056{<DEFAULT>} get resource from parent org/jboss/test/aop/scopedextender/blah.txt parent=org.jboss.system.NoAnnotationURLClassLoader at 56c3cf
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter] Resource org/jboss/test/aop/scopedextender/blah.txt NOT found in org.jboss.system.NoAnnotationURLClassLoader at 56c3cf
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.ClassLoaderDomain] ClassLoaderDomain at 1f21056{<DEFAULT>} resource not found in parent org/jboss/test/aop/scopedextender/blah.txt parent=org.jboss.system.NoAnnotationURLClassLoader at 56c3cf
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.base.BaseClassLoaderDomain] ClassLoaderDomain at 1f21056{<DEFAULT>} trying to get resource org/jboss/test/aop/scopedextender/blah.txt from all exports [VFSClassLoaderPolicy at c1a0a6]
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.filter.FilteredDelegateLoader] FilteredDelegateLoader at d63b75{delegate=VFSClassLoaderPolicy at c1a0a6} org/jboss/test/aop/scopedextender/blah.txt matches resource filter=[org.jboss.test.aop.scopedextender, aop-scopedextender-base.jar.META-INF, META-INF, aop-scopedextender-base.aop.META-INF, aop-scopedextender-base.jar.org.jboss.test.aop.scopedextender]
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.base.BaseClassLoader] BaseClassLoader at 1b28af8 get resource locally org/jboss/test/aop/scopedextender/blah.txt
| 2007-10-12 11:34:10,937 TRACE [org.jboss.classloader.spi.base.BaseClassLoader] org.jboss.classloader.spi.base.BaseClassLoader$2 at d9be5a resource not found locally org/jboss/test/aop/scopedextender/blah.txt
| 2007-10-12 11:34:11,156 TRACE [org.jboss.classloader.spi.ClassLoaderDomain] ClassLoaderDomain at 1f21056{<DEFAULT>} org/jboss/test/aop/scopedextender/blah.txt does NOT match parent afterFilter=<NOTHING>
| 2007-10-12 11:34:11,156 TRACE [org.jboss.classloader.spi.ClassLoaderDomain] ClassLoaderDomain at 11b3435{aop.loading:loader=scopedextender1} resource not found in parent org/jboss/test/aop/scopedextender/blah.txt parent=ClassLoaderDomain at 1f21056{<DEFAULT>}
| 2007-10-12 11:34:18,453 INFO [STDOUT] ---- FOUND blah.txt null
|
The problem seems to be that no loaders are able to load up the org.jboss.test.aop.scopedextender package:
| private URL getResourceFromExports(BaseClassLoader classLoader, String name, boolean trace)
| {
| ...
| String packageName = ClassLoaderUtils.getResourcePackageName(name);
| List<ClassLoaderInformation> list = classLoadersByPackageName.get(packageName); //This returns null
| if (trace)
| log.trace(this + " trying to get resource " + name + " from all exports " + list);
| if (list != null && list.isEmpty() == false)
| {
| ...
| }
| // Here is not found in the exports so can we blacklist it?
| if (canBlackList)
| globalResourceBlackList.add(name);
| return null;
| }
|
Digging into this a bit, when registering the BaseClassLoader with the scoped domain there are no packages being registered since these are null in the BaseClassLoader's underlying VFSClassLoaderPolicy.packageNames.
| void registerClassLoader(BaseClassLoader classLoader)
| {
| ...
| ClassLoaderInformation info = new ClassLoaderInformation(classLoader, policy, order++);
| classLoaders.add(info);
| infos.put(classLoader, info);
|
| // Index the packages
| String[] packageNames = policy.getPackageNames();
| if (packageNames != null && info.getExported() != null) //both of these are null
| {
| ...
| }
|
My AS trunk is pretty out of date, so I will try refreshing that
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4094524#4094524
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4094524
More information about the jboss-dev-forums
mailing list