JBossAOP - j2ee application - frozen class?
anders.hedstrom Nov 23, 2005 8:44 AMHi,
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