1 Reply Latest reply on Mar 8, 2010 10:54 AM by mwx.dennis

    Cannot get AOP to run in webapp

      Hi!

       

      After working with JBoss AOP successfully (I'm using standalone mode with loadtime instrumentation) I tried to instrument a web application running inside a Tomcat container.

      This worked well for a very simple webapp but now, with a big and complex app, I'm in trouble.

       

      Whatever class I'm trying to instrument, no matter if it exists or not, I get the following log output when Tomcat starts:

       

      [ERROR] Error converting class .. Do verbose mode if you want full stack trace.   @org.jboss.aop.util.logging.AOPLogger.error

       

      How do I "do verbose mode"? I'm using log4j.

       

      Problems get more concrete when I try to instrument a class which actually exists in the project:

       

      javassist.CannotCompileException: [source error] getDomainName(java.lang.Class,boolean) not found in org.jboss.aop.Domain
              at javassist.CtBehavior.setBody(CtBehavior.java:368)
              at javassist.CtBehavior.setBody(CtBehavior.java:334)
              at javassist.CtNewMethod.make(CtNewMethod.java:137)
              at org.jboss.aop.instrument.GeneratedAdvisorInstrumentor.createAdvisorCtors(GeneratedAdvisorInstrumentor.java:427)
              at org.jboss.aop.instrument.GeneratedAdvisorInstrumentor.createAdvisorClass(GeneratedAdvisorInstrumentor.java:313)
              at org.jboss.aop.instrument.GeneratedAdvisorInstrumentor.doSetupBasics(GeneratedAdvisorInstrumentor.java:561)
              at org.jboss.aop.instrument.Instrumentor.setupBasics(Instrumentor.java:949)
              at org.jboss.aop.instrument.MethodExecutionTransformer.instrument(MethodExecutionTransformer.java:143)
              at org.jboss.aop.instrument.Instrumentor.transform(Instrumentor.java:744)
              at org.jboss.aop.instrument.GeneratedAdvisorInstrumentor.transform(GeneratedAdvisorInstrumentor.java:117)
              at org.jboss.aop.SuperClassesFirstWeavingStrategy.instrumentClass(SuperClassesFirstWeavingStrategy.java:202)
              at org.jboss.aop.SuperClassesFirstWeavingStrategy.translate(SuperClassesFirstWeavingStrategy.java:69)
              at org.jboss.aop.AspectManager.translate(AspectManager.java:1071)
              at org.jboss.aop.Aspect
      Manager.transform(AspectManager.java:1015)
              at org.jboss.aop.standalone.AOPTransformer.aspectTransform(AOPTransformer.java:87)
              at org.jboss.aop.standalone.AOPTransformer.transform(AOPTransformer.java:75)
              at sun.instrument.TransformerManager.transform(TransformerManager.java:169)
              at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365)
              at java.lang.ClassLoader.defineClass1(Native Method)
              at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
              at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
              at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847)
              at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
              at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
              at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
              at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
              at my.package.MyClass.<clinit>(MyClass.java:39)

      ...

      Caused by: compile error: getDomainName(java.lang.Class,boolean) not found in org.jboss.aop.Domain
              at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:716)
              at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
              at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
              at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
              at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
              at javassist.compiler.CodeGen.atDeclarator(CodeGen.java:725)
              at javassist.compiler.ast.Declarator.accept(Declarator.java:99)
              at javassist.compiler.CodeGen.atStmnt(CodeGen.java:350)
              at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
              at javassist.compiler.CodeGen.atStmnt(CodeGen.java:350)
              at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
              at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
              at javassist.compiler.Javac.compileBody(Javac.java:222)
              at javassist.CtBehavior.setBody(CtBehavior.java:360)

       

      I don't have a clue what to do with this and would be really happy to get some hints.