I have a very simple (HelloWorld) servlet with an aspect that I am trying to use with load-time weaving under Tomcat.
My aop.xml:
<aspectj>
<aspects>
<aspect name="HttpServletMonitor"/>
</aspects>
<weaver options="-verbose -XlazyTjp">
<include within="com.company.HWServlet"/>
</weaver>
</aspectj>
public aspect HttpServletMonitor {
public pointcut monitoredOperation(Object operation) :
execution(void HttpServlet.doGet(HttpServletRequest , HttpServletResponse )) && this(operation);
void around(Object operation) : monitoredOperation(operation) {
proceed(operation);
// write a tag to file.
}
public HttpServletMonitor(){
}
}
I have the hwmonitor.jar, aop.xml, aspectj.jar and aspectjweaver.jar in my classpath, and defined javaagent
When I run this, I can see the loader trying to weave, but its trying to weave everything it comes across instead of just HWServlet!
I end up with lots of exceptions of the following. Any thoughts on what Ive done to cause these?
warning Register definition failed -- (BCException) malformed org.aspectj.weaver.EffectiveSignature attribute java.io.EOFException
malformed org.aspectj.weaver.EffectiveSignature attribute java.io.EOFException
org.aspectj.weaver.BCException: malformed org.aspectj.weaver.EffectiveSignature attribute java.io.EOFException
at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:121)
at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(BcelAttributes.java:59)
at org.aspectj.weaver.bcel.BcelMethod.unpackAjAttributes(BcelMethod.java:106)
at org.aspectj.weaver.bcel.BcelMethod.<init>(BcelMethod.java:71)
at org.aspectj.weaver.bcel.BcelObjectType.getDeclaredMethods(BcelObjectType.java:188)
at org.aspectj.weaver.ReferenceType.getDeclaredMethods(ReferenceType.java:367)
at org.aspectj.weaver.ResolvedType.getDeclaredAdvice(ResolvedType.java:617)
at org.aspectj.weaver.ResolvedType.getDeclaredShadowMungers(ResolvedType.java:633)
at org.aspectj.weaver.ResolvedType.collectShadowMungers(ResolvedType.java:518)
at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:448)
at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:58)
at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:166)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:233)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:132)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init>(ClassLoaderWeavingAdaptor.java:93)
at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:81)
at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:54)
at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:52)
at sun.instrument.TransformerManager.transform(TransformerManager.java:122)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:155)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:198)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:386)
If I change the execution line to look for HWServlet.doGet() I get lots of a different exception:
warning Register definition failed -- (BCException) unknown TypePattern kind: 100
unknown TypePattern kind: 100
org.aspectj.weaver.BCException: unknown TypePattern kind: 100
at org.aspectj.weaver.patterns.TypePattern.read(TypePattern.java:348)
at org.aspectj.weaver.patterns.WildTypePattern.readTypePattern150(WildTypePattern.java:1151)
at org.aspectj.weaver.patterns.WildTypePattern.read(WildTypePattern.java:1123)
at org.aspectj.weaver.patterns.TypePattern.read(TypePattern.java:336)
at org.aspectj.weaver.patterns.SignaturePattern.read(SignaturePattern.java:622)
at org.aspectj.weaver.patterns.KindedPointcut.read(KindedPointcut.java:272)
at org.aspectj.weaver.patterns.Pointcut.read(Pointcut.java:336)
at org.aspectj.weaver.patterns.AndPointcut.read(AndPointcut.java:129)
at org.aspectj.weaver.patterns.Pointcut.read(Pointcut.java:340)
at org.aspectj.weaver.ResolvedPointcutDefinition.read(ResolvedPointcutDefinition.java:76)
at org.aspectj.weaver.AjAttribute.read(AjAttribute.java:101)
at org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(BcelAttributes.java:59)
at org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes(BcelObjectType.java:249)
at org.aspectj.weaver.bcel.BcelObjectType.<init>(BcelObjectType.java:119)
at org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(BcelWorld.java:244)
at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:239)
at org.aspectj.weaver.World.resolveToReferenceType(World.java:277)
at org.aspectj.weaver.World.resolve(World.java:205)
at org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:144)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:233)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:132)
at org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init>(ClassLoaderWeavingAdaptor.java:93)
at org.aspectj.weaver.loadtime.Aj$WeaverContainer.getWeaver(Aj.java:81)
at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:54)
at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:52)
at sun.instrument.TransformerManager.transform(TransformerManager.java:122)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:155)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:198)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:386)