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 Summary
Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader
org.springframework.core.io.DefaultResourceLoader.ClassPathContextResource -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ClassReloadingBeanFactoryprotected ReloadingClassLoaderprotected org.apache.commons.jci.monitor.FilesystemAlterationMonitorFields inherited from class org.springframework.web.context.support.XmlWebApplicationContext
DEFAULT_CONFIG_LOCATION, DEFAULT_CONFIG_LOCATION_PREFIX, DEFAULT_CONFIG_LOCATION_SUFFIXFields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAMEFields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIXFields inherited from interface org.springframework.context.ConfigurableApplicationContext
APPLICATION_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.ConfigurableWebApplicationContext
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAMEFields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIXFields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIXFields inherited from interface org.springframework.web.context.WebApplicationContext
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME -
Constructor Summary
Constructors -
Method Summary
Modifier 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.XmlWebApplicationContext
getDefaultConfigLocations, initBeanDefinitionReader, loadBeanDefinitions, loadBeanDefinitionsMethods inherited from class org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContextMethods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContext
afterPropertiesSet, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setIdMethods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContext
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferencesMethods inherited from class org.springframework.context.support.AbstractApplicationContext
addApplicationListener, 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.DefaultResourceLoader
addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceCache, setClassLoaderMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.context.ApplicationContext
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDateMethods inherited from interface org.springframework.context.ApplicationEventPublisher
publishEvent, publishEventMethods inherited from interface org.springframework.beans.factory.BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatchMethods inherited from interface org.springframework.context.ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, getApplicationStartup, getBeanFactory, getEnvironment, isActive, registerShutdownHook, removeApplicationListener, setApplicationStartup, setClassLoader, setEnvironment, setId, setParentMethods inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
setConfigLocation, setConfigLocationsMethods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory
containsLocalBean, getParentBeanFactoryMethods inherited from interface org.springframework.context.Lifecycle
isRunning, start, stopMethods inherited from interface org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotationMethods inherited from interface org.springframework.context.MessageSource
getMessage, getMessage, getMessageMethods inherited from interface org.springframework.core.io.ResourceLoader
getClassLoader, getResourceMethods inherited from interface org.springframework.core.io.support.ResourcePatternResolver
getResources
-
Field Details
-
classLoader
-
filesystemAlterationMonitor
protected org.apache.commons.jci.monitor.FilesystemAlterationMonitor filesystemAlterationMonitor -
beanFactory
-
-
Constructor Details
-
ClassReloadingXMLWebApplicationContext
public ClassReloadingXMLWebApplicationContext()
-
-
Method Details
-
setupReloading
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceorg.springframework.context.ConfigurableApplicationContext- Overrides:
closein classorg.springframework.context.support.AbstractApplicationContext
-
refresh
- Specified by:
refreshin interfaceorg.springframework.context.ConfigurableApplicationContext- Overrides:
refreshin classorg.springframework.context.support.AbstractApplicationContext- Throws:
org.springframework.beans.BeansExceptionIllegalStateException
-
createBeanFactory
protected org.springframework.beans.factory.support.DefaultListableBeanFactory createBeanFactory()- Overrides:
createBeanFactoryin classorg.springframework.context.support.AbstractRefreshableApplicationContext
-
prepareBeanFactory
protected void prepareBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) - Overrides:
prepareBeanFactoryin classorg.springframework.context.support.AbstractApplicationContext
-
onDirectoryChange
- Specified by:
onDirectoryChangein interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onDirectoryCreate
- Specified by:
onDirectoryCreatein interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onDirectoryDelete
- Specified by:
onDirectoryDeletein interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onFileChange
- Specified by:
onFileChangein interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onFileCreate
- Specified by:
onFileCreatein interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onFileDelete
- Specified by:
onFileDeletein interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onStart
public void onStart(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) - Specified by:
onStartin interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onStop
public void onStop(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) - Specified by:
onStopin interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
getReloadingClassLoader
-