我們有一個Web應用程序,它使用Spring(3.0.5)和CXF(當前2.4.2由於各種原因,但升級是一個選項,如果有什麼區別)並且部署在Tomcat上。如何在使用CXF時刷新Spring上下文?
該應用程序使用org.springframework.web.context.ContextLoaderListener進行初始化。
啓動和關閉應用程序下來就像一個魅力的作品,但如果我嘗試刷新Spring應用程序上下文,使用
((ConfigurableApplicationContext)applicationContext).refresh();
我遇到的問題。應用程序上下文首先銷燬它的所有bean(包括CXFBusImpl,或者更確切地說它的子類SpringBus)。然而SpringBus在其應用程序上下文調用close() - 導致一個NullPointerException當應用程序上下文不久後試圖關閉它的bean工廠:
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一切正常。
你爲什麼刷新上下文? – 2012-02-08 16:12:13
我有一個非常複雜的應用程序,有時需要在配置更改後重新配置(不重新啓動Tomcat)。除CXF問題外,它還可以工作。 – 2012-02-08 16:29:10