[jboss-cvs] JBossAS SVN: r110028 - trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun Dec 19 04:55:06 EST 2010
Author: marius.bogoevici
Date: 2010-12-19 04:55:05 -0500 (Sun, 19 Dec 2010)
New Revision: 110028
Modified:
trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/JBossProxyServices.java
Log:
JBAS-8748 - Use TCCL only for classes that start with 'java'
Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/JBossProxyServices.java
===================================================================
--- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/JBossProxyServices.java 2010-12-18 14:28:44 UTC (rev 110027)
+++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/JBossProxyServices.java 2010-12-19 09:55:05 UTC (rev 110028)
@@ -62,7 +62,7 @@
/**
* Return the thread context classloader or its first {@link org.jboss.classloading.spi.RealClassLoader}
- * parent (WARs WebCtxLoader$ENCLoader cannot be used for defining new proxy classes)
+ * parent for classes from the java.* package (WARs WebCtxLoader$ENCLoader cannot be used for defining new proxy classes)
*
* If no {@link org.jboss.classloading.spi.RealClassLoader} is found, we return whatever we found.
*
@@ -71,25 +71,25 @@
*/
private ClassLoader _getClassLoader(Class<?> proxiedBeanType)
{
- ClassLoader threadContextClassLoader = getThreadContextClassLoader();
- ClassLoader actualClassLoader = threadContextClassLoader;
- while (actualClassLoader != null && !(actualClassLoader instanceof RealClassLoader))
+ if (proxiedBeanType.getName().startsWith("java"))
{
- actualClassLoader = actualClassLoader.getParent();
+ ClassLoader threadContextClassLoader = getThreadContextClassLoader();
+ ClassLoader actualClassLoader = threadContextClassLoader;
+ while (actualClassLoader != null && !(actualClassLoader instanceof RealClassLoader))
+ {
+ actualClassLoader = actualClassLoader.getParent();
+ }
+ if (actualClassLoader != null)
+ {
+ return actualClassLoader;
+ }
+ else if (threadContextClassLoader != null)
+ {
+ return threadContextClassLoader;
+ }
}
- if (actualClassLoader != null)
- {
- return actualClassLoader;
- }
- else if (threadContextClassLoader != null)
- {
- return threadContextClassLoader;
- }
- else
- {
- // fall back to the default Weld behaviour
- return super.getClassLoader(proxiedBeanType);
- }
+ // fall back to the default Weld behaviour
+ return super.getClassLoader(proxiedBeanType);
}
private static ClassLoader getThreadContextClassLoader()
@@ -110,4 +110,22 @@
return Thread.currentThread().getContextClassLoader();
}
}
-}
\ No newline at end of file
+
+ public Class<?> loadBeanClass(final String className)
+ {
+ try
+ {
+ return (Class<?>) AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ return Class.forName(className, true, getThreadContextClassLoader());
+ }
+ });
+ }
+ catch (PrivilegedActionException pae)
+ {
+ throw new WeldException(BeanMessage.CANNOT_LOAD_CLASS, className, pae.getException());
+ }
+ }
+}
More information about the jboss-cvs-commits
mailing list