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@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@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@11b3435{aop.loading:loader=scopedextender1} get resource from parent
org/jboss/test/aop/scopedextender/blah.txt
parent=ClassLoaderDomain@1f21056{<DEFAULT>}
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.ClassLoaderDomain]
ClassLoaderDomain@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@1f21056{<DEFAULT>} get resource from parent
org/jboss/test/aop/scopedextender/blah.txt
parent=org.jboss.system.NoAnnotationURLClassLoader@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@56c3cf
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.ClassLoaderDomain]
ClassLoaderDomain@1f21056{<DEFAULT>} resource not found in parent
org/jboss/test/aop/scopedextender/blah.txt
parent=org.jboss.system.NoAnnotationURLClassLoader@56c3cf
| 2007-10-12 11:34:10,921 TRACE [org.jboss.classloader.spi.base.BaseClassLoaderDomain]
ClassLoaderDomain@1f21056{<DEFAULT>} trying to get resource
org/jboss/test/aop/scopedextender/blah.txt from all exports [VFSClassLoaderPolicy@c1a0a6]
| 2007-10-12 11:34:10,921 TRACE
[org.jboss.classloader.spi.filter.FilteredDelegateLoader]
FilteredDelegateLoader@d63b75{delegate=VFSClassLoaderPolicy@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@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@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@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@11b3435{aop.loading:loader=scopedextender1} resource not found in parent
org/jboss/test/aop/scopedextender/blah.txt
parent=ClassLoaderDomain@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#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...