Flavia and I are debugging the scoped AOP test failures in AS and have found something odd
going on when deploying an ear with a war with classes. Basically
WarAnnotationMetaDataDeployer loads all the classes in the war [1] before the
AOPDeploymentAopMetaDataDeployer has the chance to add the bindings to the aspect manager
[2]. This means that the classes in the war are loaded before the bindings are added, so
they do not get woven. The deployers are in the same deployer stage POST_CLASSLOADER, what
is the best way to change their orders around?
[1]
Daemon System Thread [RMI TCP Connection(6)-127.0.0.1] (Suspended (breakpoint at line 69
in SuperClassesFirstWeavingStrategy))
SuperClassesFirstWeavingStrategy.translate(AspectManager, String, ClassLoader, byte[])
line: 69
ScopedVFSClassLoaderDomain(AspectManager).translate(String, ClassLoader, byte[]) line:
1071
ScopedVFSClassLoaderDomain(AspectManager).transform(ClassLoader, String, Class,
ProtectionDomain, byte[]) line: 1015
AOPTransformer.aspectTransform(String, ClassLoader, Class<?>, ProtectionDomain,
byte[]) line: 87
AOPTransformer.transform(ClassLoader, String, Class<?>, ProtectionDomain, byte[])
line: 75
TransformerManager.transform(ClassLoader, String, Class, ProtectionDomain, byte[]) line:
169
InstrumentationImpl.transform(ClassLoader, String, Class, ProtectionDomain, byte[],
boolean) line: 365
ClassLoader.defineClass1(String, byte[], int, int, ProtectionDomain, String) line: not
available [native method]
BaseClassLoader(ClassLoader).defineClass(String, byte[], int, int, ProtectionDomain)
line: 698
BaseClassLoader.access$200(BaseClassLoader, String, byte[], int, int, ProtectionDomain)
line: 64
BaseClassLoader$2.run() line: 577
BaseClassLoader$2.run() line: 537
AccessController.doPrivileged(PrivilegedAction<T>, AccessControlContext) line: not
available [native method]
BaseClassLoader.loadClassLocally(String, boolean) line: 535
BaseClassLoader.loadClassLocally(String) line: 512
FilteredDelegateLoader(BaseDelegateLoader).loadClass(String) line: 134
FilteredDelegateLoader.loadClass(String) line: 131
ClassLoadingTask$ThreadTask.run() line: 455
ClassLoaderManager.nextTask(Thread, ClassLoadingTask) line: 267
ClassLoaderManager.process(Thread, ClassLoadingTask) line: 166
ClassLoaderDomain(BaseClassLoaderDomain).loadClass(BaseClassLoader, String, boolean)
line: 265
ClassLoaderDomain(BaseClassLoaderDomain).loadClass(BaseClassLoader, String) line: 1124
BaseClassLoader.loadClassFromDomain(String, boolean) line: 805
BaseClassLoader.loadClass(String, boolean) line: 445
BaseClassLoader(ClassLoader).loadClass(String) line: 250
AnnotatedClassFilter.accepts(VirtualFile) line: 121
AnnotatedClassFilter.visit(VirtualFile) line: 102
WrappingVirtualFileHandlerVisitor.visit(VirtualFileHandler) line: 62
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor, boolean, boolean, boolean, boolean, VirtualFileFilter) line:
362
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor, boolean, boolean, boolean, boolean, VirtualFileFilter) line:
374
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor, boolean, boolean, boolean, boolean, VirtualFileFilter) line:
374
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor, boolean, boolean, boolean, boolean, VirtualFileFilter) line:
374
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor, boolean, boolean, boolean, boolean, VirtualFileFilter) line:
374
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor, boolean, boolean, boolean, boolean, VirtualFileFilter) line:
374
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor, boolean, boolean, boolean, boolean, VirtualFileFilter) line:
374
FileSystemContext(AbstractVFSContext).visit(VirtualFileHandler,
VirtualFileHandlerVisitor) line: 307
VFS.visit(VirtualFile, VirtualFileVisitor) line: 438
VirtualFile.visit(VirtualFileVisitor) line: 448
WarAnnotationMetaDataDeployer.getClasses(VFSDeploymentUnit, VirtualFile) line: 172
WarAnnotationMetaDataDeployer.processMetaData(VFSDeploymentUnit, List<VirtualFile>)
line: 146
WarAnnotationMetaDataDeployer.deploy(VFSDeploymentUnit) line: 125
WarAnnotationMetaDataDeployer.deploy(DeploymentUnit) line: 78
DeployerWrapper.deploy(DeploymentUnit) line: 179
DeployersImpl.doDeploy(Deployer, DeploymentUnit) line: 1660
DeployersImpl.doInstallParentFirst(Deployer, DeploymentContext) line: 1378
DeployersImpl.doInstallParentFirst(Deployer, DeploymentContext) line: 1431
DeployersImpl.install(ControllerContext, ControllerState, ControllerState) line: 1319
DeploymentControllerContext(AbstractControllerContext).install(ControllerState,
ControllerState) line: 378
AbstractKernelController(AbstractController).install(ControllerContext, ControllerState,
ControllerState) line: 1890
AbstractKernelController(AbstractController).incrementState(ControllerContext, boolean)
line: 1019
AbstractKernelController(AbstractController).executeOrIncrementStateDirectly(ControllerContext,
boolean) line: 1251
AbstractKernelController(AbstractController).resolveContexts(ControllerState,
ControllerState, boolean) line: 1175
AbstractKernelController(AbstractController).resolveContexts(boolean) line: 1073
AbstractKernelController(AbstractController).change(ControllerContext, ControllerState,
boolean) line: 887
AbstractKernelController(AbstractController).change(ControllerContext, ControllerState)
line: 602
DeployersImpl.process(List<DeploymentContext>, List<DeploymentContext>) line:
898
MainDeployerImpl.process() line: 677
MainDeployer.deploy(URL) line: 370
MainDeployer.redeploy(URL) line: 277
[2]
Daemon System Thread [RMI TCP Connection(6)-127.0.0.1] (Suspended (breakpoint at line 146
in AspectBinding))
AspectBinding.start() line: 146
GeneratedMethodAccessor192.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
ReflectionUtils.invoke(Method, Object, Object[]) line: 59
ReflectMethodInfoImpl.invoke(Object, Object[]) line: 151
BasicMethodJoinPoint.dispatch() line: 66
KernelControllerContextAction$JoinpointDispatchWrapper.execute() line: 257
KernelControllerContextAction$JoinpointDispatchWrapper(ExecutionWrapper).execute(AccessControlContext)
line: 47
KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContext,
ExecutionWrapper) line: 125
KernelControllerContextAction.dispatchJoinPoint(KernelControllerContext, Joinpoint) line:
72
StartStopLifecycleAction(LifecycleAction).installActionInternal(KernelControllerContext)
line: 202
StartStopLifecycleAction(InstallsAwareAction).installAction(KernelControllerContext)
line: 54
StartStopLifecycleAction(InstallsAwareAction).installAction(ControllerContext) line: 42
StartStopLifecycleAction(SimpleControllerContextAction<T>).simpleInstallAction(T)
line: 62
StartStopLifecycleAction(AccessControllerContextAction<S,T>).install(ControllerContext)
line: 71
KernelControllerContextActions(AbstractControllerContextActions).install(ControllerContext,
ControllerState, ControllerState) line: 51
AbstractKernelControllerContext(AbstractControllerContext).install(ControllerState,
ControllerState) line: 378
ScopedKernelController(AbstractController).install(ControllerContext, ControllerState,
ControllerState) line: 1890
ScopedKernelController(AbstractController).incrementState(ControllerContext, boolean)
line: 1019
ScopedKernelController(AbstractController).executeOrIncrementStateDirectly(ControllerContext,
boolean) line: 1251
ScopedKernelController(AbstractController).resolveContexts(ControllerState,
ControllerState, boolean) line: 1175
ScopedKernelController(AbstractController).resolveContexts(boolean) line: 1073
AbstractKernelController(AbstractController).resolveContexts(boolean) line: 1104
AbstractKernelController(AbstractController).install(ControllerContext, boolean) line:
842
AbstractKernelController(AbstractController).install(ControllerContext) line: 589
AbstractAopMetaDataDeployer$MyBeanMetaDataDeployer.deploy(FakeComponentUnit,
BeanMetaData) line: 363
AbstractAopMetaDataDeployer$MyBeanMetaDataDeployer.access$100(AbstractAopMetaDataDeployer$MyBeanMetaDataDeployer,
FakeComponentUnit, BeanMetaData) line: 329
AOPDeploymentAopMetaDataDeployer(AbstractAopMetaDataDeployer<T>).deployBeans(VFSDeploymentUnit,
AopMetaDataDeployerOutput) line: 269
AOPDeploymentAopMetaDataDeployer(AbstractAopMetaDataDeployer<T>).deploy(VFSDeploymentUnit,
T) line: 133
AOPDeploymentAopMetaDataDeployer.deploy(VFSDeploymentUnit, AOPDeployment) line: 46
AOPDeploymentAopMetaDataDeployer.deploy(VFSDeploymentUnit, Object) line: 36
AOPDeploymentAopMetaDataDeployer(AbstractSimpleVFSRealDeployer<T>).deploy(DeploymentUnit,
T) line: 56
AOPDeploymentAopMetaDataDeployer(AbstractSimpleRealDeployer<T>).internalDeploy(DeploymentUnit)
line: 62
AOPDeploymentAopMetaDataDeployer(AbstractRealDeployer).deploy(DeploymentUnit) line: 55
DeployerWrapper.deploy(DeploymentUnit) line: 179
DeployersImpl.doDeploy(Deployer, DeploymentUnit) line: 1660
DeployersImpl.doInstallParentFirst(Deployer, DeploymentContext) line: 1378
DeployersImpl.doInstallParentFirst(Deployer, DeploymentContext) line: 1431
DeployersImpl.install(ControllerContext, ControllerState, ControllerState) line: 1319
DeploymentControllerContext(AbstractControllerContext).install(ControllerState,
ControllerState) line: 378
AbstractKernelController(AbstractController).install(ControllerContext, ControllerState,
ControllerState) line: 1890
AbstractKernelController(AbstractController).incrementState(ControllerContext, boolean)
line: 1019
AbstractKernelController(AbstractController).executeOrIncrementStateDirectly(ControllerContext,
boolean) line: 1251
AbstractKernelController(AbstractController).resolveContexts(ControllerState,
ControllerState, boolean) line: 1175
AbstractKernelController(AbstractController).resolveContexts(boolean) line: 1073
AbstractKernelController(AbstractController).change(ControllerContext, ControllerState,
boolean) line: 887
AbstractKernelController(AbstractController).change(ControllerContext, ControllerState)
line: 602
DeployersImpl.process(List<DeploymentContext>, List<DeploymentContext>) line:
898
MainDeployerImpl.process() line: 677
MainDeployer.deploy(URL) line: 370
MainDeployer.redeploy(URL) line: 277