[jboss-dev-forums] [Design of POJO Server] - New VFSClassLoader is nearly ready for JBoss Head
adrian@jboss.org
do-not-reply at jboss.com
Thu Jul 12 14:38:59 EDT 2007
Before you get excited, this is not committed yet and its only using the old
rules with a hacky deployer that converts
LoaderRepositoryConfig to ClassLoaderMetaData
It actually works pretty well once I got over two stupid problems:
RESOURCE FILTERING
I've got some tidying up to do here
I realised once I'd integrated it that the way the class filtering was working
doesn't work for resources.
e.g.
org.jboss.xxx.notpublic.PrivateClass
won't be exposed if only org.jboss.xxx is exported as a package
BUT
org.jboss.xxx.some-resource.xml
should be exported.
The dot in some-resource.xml confused it because it thought some-resource
is a package and xml the file :-)
VFS BUG
I also rewrote the exportAll package determination.
There's a horrible bug in the VFS where if you do
| URI uri = file.toURI();
| VirtualFile root = VFS.getRoot(uri);
|
it gives you back a virtual file that's has a "pathName" for jar uris.
The path name is the name of the jar.
Actually, the new code is a lot cleaner. :-)
MORE TESTING
I also broke at least one test. In a good way:-)
This test I wrote earlier this week is failing because the new VFSClassLoader
throws the correct SecurityException (unlike the UCL)
| 20:32:22,616 INFO [ServerImpl] JBoss (Microcontainer) [5.0.0.Beta3 (build: SVNTag=JBoss_5_0_0_Beta3 date=200707101429)] Started in 40s:829ms
| 20:32:58,247 INFO [MainDeployer] deploy, url=file:/home/ejort/jboss-head/testsuite/output/lib/test-java-class-isolation.sar
| 20:32:58,283 WARN [ClassLoaderManager] Unexpected error during load of:java.org.jboss.test.Test
| java.lang.SecurityException: Prohibited package name: java.org.jboss.test
| at java.lang.ClassLoader.preDefineClass(ClassLoader.java:479)
| at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
| at org.jboss.classloader.spi.base.BaseClassLoader.access$2(BaseClassLoader.java:1)
| at org.jboss.classloader.spi.base.BaseClassLoader$1.run(BaseClassLoader.java:271)
| at org.jboss.classloader.spi.base.BaseClassLoader$1.run(BaseClassLoader.java:1)
| at java.security.AccessController.doPrivileged(Native Method)
| at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:245)
| at org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:218)
| at org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:75)
| at org.jboss.classloader.spi.base.ClassLoadingTask$ThreadTask.run(ClassLoadingTask.java:449)
| at org.jboss.classloader.spi.base.ClassLoaderManager.nextTask(ClassLoaderManager.java:251)
| at org.jboss.classloader.spi.base.ClassLoaderManager.process(ClassLoaderManager.java:145)
| at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:191)
| at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:766)
| at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:479)
| at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:159)
| at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
| at org.jboss.test.isolation.mbean.JavaClassIsolation.test(JavaClassIsolation.java:51)
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4063670#4063670
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4063670
More information about the jboss-dev-forums
mailing list