Description
I have a web application that uses Spring and CXF (currently 2.4.2 but I have reproduced this on 2.4.6 and 2.5.2 as well) and is deployed on Tomcat.
The application is initialized using the org.springframework.web.context.ContextLoaderListener.
Starting and shutting the application down works like a charm but if I try to refresh the Spring application context, using ((ConfigurableApplicationContext)applicationContext).refresh(); I run into problems.
The application context first destroys all its beans (including CXFBusImpl, or rather its subclass SpringBus). SpringBus however calls ctx.close() on its application context - leading to a NullPointerException when the application context shortly after tries to close its bean factory:
java.lang.NullPointerException at org.springframework.context.support.AbstractRefreshableApplicationContext.closeBeanFactory(AbstractRefreshableApplicationContext.java:152) at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:124) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)}}
I think that SpringBus shouldn't call ctx.close() in destroyBeans(). I tried removing this row and rebuilding CXF myself which fixed the problem (and I couldn't detect any other problems starting or shutting down).
Attachments
Issue Links
- relates to
-
CXF-4127 CXFServlet should be reinitialized on ContextRefreshedEvent
- Closed