У нас есть веб-приложение, которое использует Spring (3.0.5) и CXF (в настоящее время это 2.4.2 по разным причинам, но обновление имеет значение, если это имеет какое-то значение) и развернуто на Tomcat.
Приложение инициализируется с использованием org.springframework.web.context.ContextLoaderListener .
Запуск и закрытие приложения работает как чудо, но если я пытаюсь обновить контекст приложения Spring, используя
((ConfigurableApplicationContext)applicationContext).refresh();
У меня проблемы. Сначала контекст приложения уничтожает все его bean-компоненты (включая CXFBusImpl или, вернее, его подкласс SpringBus ). Однако SpringBus вызывает метод close () для своего контекста приложения, что приводит к исключению NullPointerException, когда контекст приложения вскоре после этого пытается закрыть свою фабрику компонентов:
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)
Есть ли что-нибудь, что я могу сделать, чтобы избежать этого (кроме изменения CXF)? Если я пропущу CXF, все будет работать.