Application event listeners don't seem ever to be removed
org.springframework.context.event.ApplicationEvent Multicaster interface declares 3 methods for removing application event listeners but they don't seem ever to be called. I think this is root cause of following exception I'm getting when application context gets closed and event multicaster tries to notify all listeners which are being destroyed:
Code:
Nov 8, 2010 3:54:30 PM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Nov 8, 2010 3:54:30 PM org.apache.catalina.core.ApplicationContext log
INFO: Destroying Spring FrameworkServlet 'sample'
Nov 8, 2010 3:54:30 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
913888 [main] WARN org.springframework.context.support.AbstractApplicationContext - Exception thrown from ApplicationListener handling ContextClosedEvent
org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'sampleAuthenticationSuccessEventListener': Singleton bean creation not allowed while the singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:209) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) ~[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:148) ~[spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:86) ~[spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:303) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:305) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1007) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:970) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.webflow.engine.Flow.destroy(Flow.java:597) [spring-webflow-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.webflow.engine.builder.DefaultFlowHolder.destroy(DefaultFlowHolder.java:100) [spring-webflow-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl.destroy(FlowDefinitionRegistryImpl.java:114) [spring-webflow-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.webflow.config.FlowRegistryFactoryBean.destroy(FlowRegistryFactoryBean.java:161) [spring-webflow-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:184) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:487) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:463) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:431) [spring-beans-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1048) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1022) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:970) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:378) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:78) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4011) [catalina.jar:6.0.26]
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4615) [catalina.jar:6.0.26]
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:924) [catalina.jar:6.0.26]
at org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1319) [catalina.jar:6.0.26]
at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1290) [catalina.jar:6.0.26]
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:323) [catalina.jar:6.0.26]
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) [catalina.jar:6.0.26]
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1086) [catalina.jar:6.0.26]
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1098) [catalina.jar:6.0.26]
at org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:448) [catalina.jar:6.0.26]
at org.apache.catalina.core.StandardService.stop(StandardService.java:587) [catalina.jar:6.0.26]
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744) [catalina.jar:6.0.26]
at org.apache.catalina.startup.Catalina.stop(Catalina.java:648) [catalina.jar:6.0.26]
at org.apache.catalina.startup.Catalina.start(Catalina.java:615) [catalina.jar:6.0.26]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_22]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.6.0_22]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.6.0_22]
at java.lang.reflect.Method.invoke(Method.java:597) ~[na:1.6.0_22]
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) [bootstrap.jar:6.0.26]
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) [bootstrap.jar:6.0.26]