6 Replies Latest reply on Mar 23, 2006 11:21 AM by kabirkhan

    JBossAOP - j2ee application - frozen class?

    anders.hedstrom

      Hi,

      I've started to playaround a bit with JBossAOP and I encounter a problem when using it together with my J2EE application.

      I've a ear containing a webapp and a couple of ejb's and a .aop. I use the .aop to trace different method calls. Everything works fine. But, if I make a change to my ear and redeploy it I get the following exception when the ear is undeployed:

      14:16:31,741 INFO [WebappClassLoader] Illegal access: this web application instance has been stopped already. Could not load javax/servlet/ServletConfig.class. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.


      There is no exceptions when the app is deployed again, but when I call it from my client the following exception is thrown:



      14:16:58,580 INFO [STDOUT] [warn] AOP Instrumentor failed to transform test.TestServlet
      14:16:58,590 INFO [STDOUT] java.lang.RuntimeException: test.TestServlet$handleRequest_N1420058664521534342: frozen class (cannot edit)
      14:16:58,590 INFO [STDOUT] at javassist.ClassPool.checkNotFrozen(ClassPool.java:476)
      14:16:58,590 INFO [STDOUT] at javassist.ClassPool.makeNestedClass(ClassPool.java:592)
      14:16:58,590 INFO [STDOUT] at javassist.CtClassType.makeNestedClass(CtClassType.java:516)
      14:16:58,590 INFO [STDOUT] at org.jboss.aop.instrument.TransformerCommon.makeInvocationClass(TransformerCommon.java:73)
      14:16:58,590 INFO [STDOUT] at org.jboss.aop.instrument.MethodExecutionTransformer.createOptimizedInvocationClass(MethodE
      xecutionTransformer.java:117)
      14:16:58,590 INFO [STDOUT] at org.jboss.aop.instrument.MethodExecutionTransformer.optimized(MethodExecutionTransformer.j
      ava:389)
      14:16:58,590 INFO [STDOUT] at org.jboss.aop.instrument.MethodExecutionTransformer.instrument(MethodExecutionTransformer.
      java:196)
      14:16:58,600 INFO [STDOUT] at org.jboss.aop.instrument.Instrumentor.transform(Instrumentor.java:630)
      14:16:58,630 INFO [STDOUT] at org.jboss.aop.AspectManager.translate(AspectManager.java:792)
      14:16:58,630 INFO [STDOUT] at org.jboss.aop.AspectManager.transform(AspectManager.java:704)
      14:16:58,630 INFO [STDOUT] at org.jboss.aop.standalone.AOPTransformer.aspectTransform(AOPTransformer.java:62)
      14:16:58,630 INFO [STDOUT] at org.jboss.aop.standalone.AOPTransformer.transform(AOPTransformer.java:54)
      14:16:58,630 INFO [STDOUT] at sun.instrument.TransformerManager.transform(TransformerManager.java:122)
      14:16:58,630 INFO [STDOUT] at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:155)
      14:16:58,630 INFO [STDOUT] at java.lang.ClassLoader.defineClass1(Native Method)
      14:16:58,640 INFO [STDOUT] at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
      14:16:58,640 INFO [STDOUT] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1629
      )
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:850)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1299)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1181)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1027)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:750)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      14:16:58,640 INFO [STDOUT] at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
      14:16:58,640 INFO [STDOUT] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.jav
      a:159)
      14:16:58,640 INFO [STDOUT] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      14:16:58,640 INFO [STDOUT] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      14:16:58,640 INFO [STDOUT] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
      14:16:58,640 INFO [STDOUT] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Pr
      otocol.java:744)
      14:16:58,640 INFO [STDOUT] at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      14:16:58,640 INFO [STDOUT] at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
      14:16:58,640 INFO [STDOUT] at java.lang.Thread.run(Thread.java:595)


      My only workaround so for is to restart JBoss. This is not an optimal solution in a development environment.

      My environment is the following:
      WinXP
      Version: 4.0.3SP1(build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)
      JVM Version: 1.5.0_04-b05 (Sun Microsystems Inc.)
      JBossAOP 1.3.4

      Any ideas to get rid of this problem is greatly appreciated!

      Cheers
      //Anders