Close ProcessEngine upon BPM console undeployment
aguizar Jun 23, 2010 2:53 PMRegarding JBPM-2881, it seems the process engine is not closed when the BPM console is undeployed. ProcessEngineImpl stops the job executor on close. However, the job dispatcher thread is still running after the web application stops, as evidenced by the following stack trace.
22/06/2010 08:43:28 PM org.apache.catalina.loader.WebappClassLoader loadClass INFO: Illegal access: this web application instance has been stopped already. Could not load org.jbpm.pvm.internal.tx.StandardTransaction. 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. java.lang.IllegalStateException at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1402) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at org.jbpm.pvm.internal.util.ReflectUtil.classForName(ReflectUtil.java:453) at org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor.construct(ObjectDescriptor.java:141) at org.jbpm.pvm.internal.wire.WireContext.construct(WireContext.java:487) at org.jbpm.pvm.internal.wire.WireContext.create(WireContext.java:466) at org.jbpm.pvm.internal.wire.WireContext.create(WireContext.java:455) at org.jbpm.pvm.internal.wire.WireContext.get(WireContext.java:429) at org.jbpm.pvm.internal.wire.WireContext.get(WireContext.java:339) at org.jbpm.pvm.internal.wire.WireContext.get(WireContext.java:706) at org.jbpm.pvm.internal.env.BasicEnvironment.get(BasicEnvironment.java:132) at org.jbpm.pvm.internal.env.BasicEnvironment.get(BasicEnvironment.java:123) at org.jbpm.pvm.internal.tx.StandardTransactionInterceptor.execute(StandardTransactionInterceptor.java:46) at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.executeInNewEnvironment(EnvironmentInterceptor.java:53) at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:40) at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:56) at org.jbpm.pvm.internal.svc.SkipInterceptor.execute(SkipInterceptor.java:43) at org.jbpm.pvm.internal.jobexecutor.DispatcherThread.acquireJobs(DispatcherThread.java:126) at org.jbpm.pvm.internal.jobexecutor.DispatcherThread.run(DispatcherThread.java:67)
I did not develop the console integration and lack the knowledge required to place the ProcessEngine.close() call properly. Any pointers in this direction would be very helpful.