Java Spring应用程序运行时上下文刷新
我们的申请有问题。我们必须在运行时刷新应用程序上下文,因为config.properties中的某些属性会在文件更改时重新加载。这些属性必须被注入到bean中。当文件更改时,我们刷新应用程序上下文。但应用程序部署在JBoss下,如果在应用程序上下文刷新时出现请求,则此请求会生成以下错误:Java Spring应用程序运行时上下文刷新,java,spring,jboss,applicationcontext,Java,Spring,Jboss,Applicationcontext,我们的申请有问题。我们必须在运行时刷新应用程序上下文,因为config.properties中的某些属性会在文件更改时重新加载。这些属性必须被注入到bean中。当文件更改时,我们刷新应用程序上下文。但应用程序部署在JBoss下,如果在应用程序上下文刷新时出现请求,则此请求会生成以下错误: java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before ac
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076)
因此,我们需要知道是否有更安全的方法可以将属性重新加载到应用程序上下文中,而不会导致请求丢失。
我们还需要知道重启JBoss是否比重新加载应用程序上下文更好。我们将感谢您的帮助。非常感谢。您是否在web.xml中配置了侦听器问题在于并发性。在运行refreshBeanFactory()时不允许使用getBeanFactory()方法。您必须同步AbstractRefreshableApplicationContext的实现。是否可以添加实现的源代码。如果我们有多个上下文,则需要web.xml中的侦听器,对吗?那么为什么在这种情况下它有用呢?我们使用ClassPathXmlApplicationContext和方法refresh()。我无法添加源代码。