]
Kabir Khan closed JBAOP-126.
----------------------------
Resolution: Out of Date
Scott did this ages ago
Retain ProtectionDomain for instrumented classes
------------------------------------------------
Key: JBAOP-126
URL:
http://jira.jboss.com/jira/browse/JBAOP-126
Project: JBoss AOP
Issue Type: Bug
Reporter: Scott M Stark
Sorry I wasn't clearer in my original post. It's been a while since I looked at
this issue.
My particular problem is that the generated field wrapper inner classes don't get
assigned the correct protection domain. Here's a stack trace that shows the problem
occuring.
| getDefaultDomain():1583, ClassLoader.java
| preDefineClass():483, ClassLoader.java
| defineClass():614, ClassLoader.java
| defineClass():465, ClassLoader.java
| invoke0():-1, NativeMethodAccessorImpl.java
| invoke():39, NativeMethodAccessorImpl.java
| invoke():25, DelegatingMethodAccessorImpl.java
| invoke():585, Method.java
| toClass():52, StandaloneClassPool.java
| toClass():962, CtClass.java
| compileOrLoadClass():119, TransformerCommon.java
| createOptimizedInvocationClass():572, FieldAccessTransformer.java
| buildOptimizedReadWrapper():358, FieldAccessTransformer.java
| buildOptimizedWrappers():342, FieldAccessTransformer.java
| buildFieldWrappers():232, FieldAccessTransformer.java
| buildFieldWrappers():65, FieldAccessTransformer.java
| transform():592, Instrumentor.java
| translate():572, AspectManager.java
| transform():490, AspectManager.java
| aspectTransform():100, AopAgent.java
| transform():141, AopAgent.java
| transform():122, TransformerManager.java
| transform():155, InstrumentationImpl.java
| defineClass1():-1, ClassLoader.java
| defineClass():620, ClassLoader.java
| defineClass():320, BaseURLClassLoader.java
| access$000():38, BaseURLClassLoader.java
| run():108, BaseURLClassLoader.java
| run():98, BaseURLClassLoader.java
| doPrivileged():-1, AccessController.java
| findClass():96, BaseURLClassLoader.java
| findClassInternal():168, BaseClassLoader.java
| findClassInternal():146, BaseClassLoader.java
| findClassInternal():49, FrameworkClassLoader.java
| loadClass():280, BaseClassLoader.java
| loadClass():251, ClassLoader.java
| loadClassInternal():319, ClassLoader.java
| initialiseDomains():117, DomainManagerImpl.java
| <init>():78, DomainManagerImpl.java
| start():153, FrameworkController.java
| invoke0():-1, NativeMethodAccessorImpl.java
| invoke():39, NativeMethodAccessorImpl.java
| invoke():25, DelegatingMethodAccessorImpl.java
| invoke():585, Method.java
| initialiseFramework():366, FrameworkLoader.java
| main():463, FrameworkLoader.java
|
The toClass method of StandaloneClassPool does the following:
| Class cl = Class.forName("java.lang.ClassLoader");
| java.lang.reflect.Method method
| = cl.getDeclaredMethod("defineClass",
| new Class[]{String.class, byte[].class,
| int.class, int.class});
|
My classloader doesn't get a chance to define the class, causing the field wrappers
to be assigned a default protection domain.
So, what's actually needed is for the class pool to use the correct classloader when
calling defineClass.
Hope that helps.
Tim.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: