public class ClassReloadingXMLWebApplicationContext
extends org.springframework.web.context.support.XmlWebApplicationContext
implements org.apache.commons.jci.monitor.FilesystemAlterationListener
This class can be used instead of XmlWebApplicationContext, and it will watch jar files and directories for changes and reload then changed classes.
To use this class:
<context-param> <param-name>contextClass</param-name> <param-value>org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext</param-value> </context-param>
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-jci-fam</artifactId> <version>1.0</version> <optional>true</optional> </dependency>
Modifier and Type | Field and Description |
---|---|
protected ClassReloadingBeanFactory |
beanFactory |
protected ReloadingClassLoader |
classLoader |
protected org.apache.commons.jci.monitor.FilesystemAlterationMonitor |
filesystemAlterationMonitor |
DEFAULT_CONFIG_LOCATION, DEFAULT_CONFIG_LOCATION_PREFIX, DEFAULT_CONFIG_LOCATION_SUFFIX
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAME
Constructor and Description |
---|
ClassReloadingXMLWebApplicationContext() |
Modifier and Type | Method and Description |
---|---|
void |
close() |
protected org.springframework.beans.factory.support.DefaultListableBeanFactory |
createBeanFactory() |
ReloadingClassLoader |
getReloadingClassLoader() |
void |
onDirectoryChange(File file) |
void |
onDirectoryCreate(File file) |
void |
onDirectoryDelete(File file) |
void |
onFileChange(File file) |
void |
onFileCreate(File file) |
void |
onFileDelete(File file) |
void |
onStart(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) |
void |
onStop(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) |
protected void |
prepareBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) |
void |
refresh() |
void |
setupReloading(String[] watchList,
String acceptClasses,
javax.servlet.ServletContext servletContext,
boolean reloadConfig) |
getDefaultConfigLocations, initBeanDefinitionReader, loadBeanDefinitions, loadBeanDefinitions
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContext
afterPropertiesSet, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
addApplicationListener, addBeanFactoryPostProcessor, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareRefresh, publishEvent, publishEvent, publishEvent, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setEnvironment, setParent, start, stop, toString
addProtocolResolver, getClassLoader, getProtocolResolvers, getResource, setClassLoader
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
setConfigLocation, setConfigLocations
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, getBeanFactory, getEnvironment, isActive, registerShutdownHook, setEnvironment, setId, setParent
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
containsLocalBean, getParentBeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
getMessage, getMessage, getMessage
publishEvent, publishEvent
getResources
protected ReloadingClassLoader classLoader
protected org.apache.commons.jci.monitor.FilesystemAlterationMonitor filesystemAlterationMonitor
protected ClassReloadingBeanFactory beanFactory
public ClassReloadingXMLWebApplicationContext()
public void setupReloading(String[] watchList, String acceptClasses, javax.servlet.ServletContext servletContext, boolean reloadConfig)
public void close()
close
in interface Closeable
close
in interface AutoCloseable
close
in interface org.springframework.context.ConfigurableApplicationContext
close
in class org.springframework.context.support.AbstractApplicationContext
public void refresh() throws org.springframework.beans.BeansException, IllegalStateException
refresh
in interface org.springframework.context.ConfigurableApplicationContext
refresh
in class org.springframework.context.support.AbstractApplicationContext
org.springframework.beans.BeansException
IllegalStateException
protected org.springframework.beans.factory.support.DefaultListableBeanFactory createBeanFactory()
createBeanFactory
in class org.springframework.context.support.AbstractRefreshableApplicationContext
protected void prepareBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
prepareBeanFactory
in class org.springframework.context.support.AbstractApplicationContext
public void onDirectoryChange(File file)
onDirectoryChange
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public void onDirectoryCreate(File file)
onDirectoryCreate
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public void onDirectoryDelete(File file)
onDirectoryDelete
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public void onFileChange(File file)
onFileChange
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public void onFileCreate(File file)
onFileCreate
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public void onFileDelete(File file)
onFileDelete
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public void onStart(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver)
onStart
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public void onStop(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver)
onStop
in interface org.apache.commons.jci.monitor.FilesystemAlterationListener
public ReloadingClassLoader getReloadingClassLoader()
Copyright © 2000–2020 Apache Software Foundation. All rights reserved.