Package org.apache.struts2.spring
Class ClassReloadingXMLWebApplicationContext
java.lang.Object
org.springframework.core.io.DefaultResourceLoader
org.springframework.context.support.AbstractApplicationContext
org.springframework.context.support.AbstractRefreshableApplicationContext
org.springframework.context.support.AbstractRefreshableConfigApplicationContext
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
org.springframework.web.context.support.XmlWebApplicationContext
org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext
- All Implemented Interfaces:
- Closeable,- AutoCloseable,- org.apache.commons.jci.monitor.FilesystemAlterationListener,- org.springframework.beans.factory.Aware,- org.springframework.beans.factory.BeanFactory,- org.springframework.beans.factory.BeanNameAware,- org.springframework.beans.factory.HierarchicalBeanFactory,- org.springframework.beans.factory.InitializingBean,- org.springframework.beans.factory.ListableBeanFactory,- org.springframework.context.ApplicationContext,- org.springframework.context.ApplicationEventPublisher,- org.springframework.context.ConfigurableApplicationContext,- org.springframework.context.Lifecycle,- org.springframework.context.MessageSource,- org.springframework.core.env.EnvironmentCapable,- org.springframework.core.io.ResourceLoader,- org.springframework.core.io.support.ResourcePatternResolver,- org.springframework.ui.context.ThemeSource,- org.springframework.web.context.ConfigurableWebApplicationContext,- org.springframework.web.context.WebApplicationContext
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:
- Set "struts.devMode" to "true"
- Set "struts.objectFactory.spring.class.reloading.watchList" to a comma separated list of directories, or jar files (absolute paths)
- Add this to web.xml:
  <context-param> <param-name>contextClass</param-name> <param-value>org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext</param-value> </context-param>
- Add Apache Commons JCI FAM to the classpath. If you are using maven, add this to pom.xml:
  <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-jci-fam</artifactId> <version>1.0</version> <optional>true</optional> </dependency>
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoaderorg.springframework.core.io.DefaultResourceLoader.ClassPathContextResource
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected ClassReloadingBeanFactoryprotected ReloadingClassLoaderprotected org.apache.commons.jci.monitor.FilesystemAlterationMonitorFields inherited from class org.springframework.web.context.support.XmlWebApplicationContextDEFAULT_CONFIG_LOCATION, DEFAULT_CONFIG_LOCATION_PREFIX, DEFAULT_CONFIG_LOCATION_SUFFIXFields inherited from class org.springframework.context.support.AbstractApplicationContextAPPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAMEFields inherited from interface org.springframework.beans.factory.BeanFactoryFACTORY_BEAN_PREFIXFields inherited from interface org.springframework.context.ConfigurableApplicationContextAPPLICATION_STARTUP_BEAN_NAME, CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SHUTDOWN_HOOK_THREAD_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAMEFields inherited from interface org.springframework.web.context.ConfigurableWebApplicationContextAPPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAMEFields inherited from interface org.springframework.core.io.ResourceLoaderCLASSPATH_URL_PREFIXFields inherited from interface org.springframework.core.io.support.ResourcePatternResolverCLASSPATH_ALL_URL_PREFIXFields inherited from interface org.springframework.web.context.WebApplicationContextCONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidclose()protected org.springframework.beans.factory.support.DefaultListableBeanFactoryvoidonDirectoryChange(File file) voidonDirectoryCreate(File file) voidonDirectoryDelete(File file) voidonFileChange(File file) voidonFileCreate(File file) voidonFileDelete(File file) voidonStart(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) voidonStop(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) protected voidprepareBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) voidrefresh()voidsetupReloading(String[] watchList, String acceptClasses, jakarta.servlet.ServletContext servletContext, boolean reloadConfig) Methods inherited from class org.springframework.web.context.support.XmlWebApplicationContextgetDefaultConfigLocations, initBeanDefinitionReader, loadBeanDefinitions, loadBeanDefinitionsMethods inherited from class org.springframework.web.context.support.AbstractRefreshableWebApplicationContextcreateEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContextMethods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContextafterPropertiesSet, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setIdMethods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContextassertBeanFactoryActive, cancelRefresh, closeBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferencesMethods inherited from class org.springframework.context.support.AbstractApplicationContextaddApplicationListener, addBeanFactoryPostProcessor, containsBean, containsBeanDefinition, containsLocalBean, destroyBeans, doClose, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationStartup, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResources, getStartupDate, getType, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareRefresh, publishEvent, publishEvent, publishEvent, registerBeanPostProcessors, registerListeners, registerShutdownHook, removeApplicationListener, resetCommonCaches, setApplicationStartup, setDisplayName, setEnvironment, setParent, start, stop, toStringMethods inherited from class org.springframework.core.io.DefaultResourceLoaderaddProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceCache, setClassLoaderMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.context.ApplicationContextgetAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDateMethods inherited from interface org.springframework.context.ApplicationEventPublisherpublishEvent, publishEventMethods inherited from interface org.springframework.beans.factory.BeanFactorycontainsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatchMethods inherited from interface org.springframework.context.ConfigurableApplicationContextaddApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, getApplicationStartup, getBeanFactory, getEnvironment, isActive, registerShutdownHook, removeApplicationListener, setApplicationStartup, setClassLoader, setEnvironment, setId, setParentMethods inherited from interface org.springframework.web.context.ConfigurableWebApplicationContextsetConfigLocation, setConfigLocationsMethods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactorycontainsLocalBean, getParentBeanFactoryMethods inherited from interface org.springframework.context.LifecycleisRunning, start, stopMethods inherited from interface org.springframework.beans.factory.ListableBeanFactorycontainsBeanDefinition, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotationMethods inherited from interface org.springframework.context.MessageSourcegetMessage, getMessage, getMessageMethods inherited from interface org.springframework.core.io.ResourceLoadergetClassLoader, getResourceMethods inherited from interface org.springframework.core.io.support.ResourcePatternResolvergetResources
- 
Field Details- 
classLoader
- 
filesystemAlterationMonitorprotected org.apache.commons.jci.monitor.FilesystemAlterationMonitor filesystemAlterationMonitor
- 
beanFactory
 
- 
- 
Constructor Details- 
ClassReloadingXMLWebApplicationContextpublic ClassReloadingXMLWebApplicationContext()
 
- 
- 
Method Details- 
setupReloading
- 
closepublic void close()- Specified by:
- closein interface- AutoCloseable
- Specified by:
- closein interface- Closeable
- Specified by:
- closein interface- org.springframework.context.ConfigurableApplicationContext
- Overrides:
- closein class- org.springframework.context.support.AbstractApplicationContext
 
- 
refresh- Specified by:
- refreshin interface- org.springframework.context.ConfigurableApplicationContext
- Overrides:
- refreshin class- org.springframework.context.support.AbstractApplicationContext
- Throws:
- org.springframework.beans.BeansException
- IllegalStateException
 
- 
createBeanFactoryprotected org.springframework.beans.factory.support.DefaultListableBeanFactory createBeanFactory()- Overrides:
- createBeanFactoryin class- org.springframework.context.support.AbstractRefreshableApplicationContext
 
- 
prepareBeanFactoryprotected void prepareBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) - Overrides:
- prepareBeanFactoryin class- org.springframework.context.support.AbstractApplicationContext
 
- 
onDirectoryChange- Specified by:
- onDirectoryChangein interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
onDirectoryCreate- Specified by:
- onDirectoryCreatein interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
onDirectoryDelete- Specified by:
- onDirectoryDeletein interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
onFileChange- Specified by:
- onFileChangein interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
onFileCreate- Specified by:
- onFileCreatein interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
onFileDelete- Specified by:
- onFileDeletein interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
onStartpublic void onStart(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) - Specified by:
- onStartin interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
onStoppublic void onStop(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) - Specified by:
- onStopin interface- org.apache.commons.jci.monitor.FilesystemAlterationListener
 
- 
getReloadingClassLoader
 
-