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 ClassReloadingBeanFactory
protected ReloadingClassLoader
protected org.apache.commons.jci.monitor.FilesystemAlterationMonitor
Fields inherited from class org.springframework.web.context.support.XmlWebApplicationContext
DEFAULT_CONFIG_LOCATION, DEFAULT_CONFIG_LOCATION_PREFIX, DEFAULT_CONFIG_LOCATION_SUFFIX
Fields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAME
Fields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
Fields 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_NAME
Fields inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
Fields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX
Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIX
Fields 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 TypeMethodDescriptionvoid
close()
protected org.springframework.beans.factory.support.DefaultListableBeanFactory
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, jakarta.servlet.ServletContext servletContext, boolean reloadConfig) Methods inherited from class org.springframework.web.context.support.XmlWebApplicationContext
getDefaultConfigLocations, initBeanDefinitionReader, loadBeanDefinitions, loadBeanDefinitions
Methods inherited from class org.springframework.web.context.support.AbstractRefreshableWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, postProcessBeanFactory, setNamespace, setServletConfig, setServletContext
Methods inherited from class org.springframework.context.support.AbstractRefreshableConfigApplicationContext
afterPropertiesSet, resolvePath, setBeanName, setConfigLocation, setConfigLocations, setId
Methods inherited from class org.springframework.context.support.AbstractRefreshableApplicationContext
assertBeanFactoryActive, cancelRefresh, closeBeanFactory, customizeBeanFactory, getBeanFactory, hasBeanFactory, refreshBeanFactory, setAllowBeanDefinitionOverriding, setAllowCircularReferences
Methods 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, toString
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
addProtocolResolver, clearResourceCaches, getClassLoader, getProtocolResolvers, getResource, getResourceCache, setClassLoader
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.context.ApplicationContext
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
Methods inherited from interface org.springframework.context.ApplicationEventPublisher
publishEvent, publishEvent
Methods inherited from interface org.springframework.beans.factory.BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
Methods inherited from interface org.springframework.context.ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, getApplicationStartup, getBeanFactory, getEnvironment, isActive, registerShutdownHook, removeApplicationListener, setApplicationStartup, setClassLoader, setEnvironment, setId, setParent
Methods inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
setConfigLocation, setConfigLocations
Methods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory
containsLocalBean, getParentBeanFactory
Methods inherited from interface org.springframework.context.Lifecycle
isRunning, start, stop
Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation
Methods inherited from interface org.springframework.context.MessageSource
getMessage, getMessage, getMessage
Methods inherited from interface org.springframework.core.io.ResourceLoader
getClassLoader, getResource
Methods 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:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceorg.springframework.context.ConfigurableApplicationContext
- Overrides:
close
in classorg.springframework.context.support.AbstractApplicationContext
-
refresh
- Specified by:
refresh
in interfaceorg.springframework.context.ConfigurableApplicationContext
- Overrides:
refresh
in classorg.springframework.context.support.AbstractApplicationContext
- Throws:
org.springframework.beans.BeansException
IllegalStateException
-
createBeanFactory
protected org.springframework.beans.factory.support.DefaultListableBeanFactory createBeanFactory()- Overrides:
createBeanFactory
in classorg.springframework.context.support.AbstractRefreshableApplicationContext
-
prepareBeanFactory
protected void prepareBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) - Overrides:
prepareBeanFactory
in classorg.springframework.context.support.AbstractApplicationContext
-
onDirectoryChange
- Specified by:
onDirectoryChange
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onDirectoryCreate
- Specified by:
onDirectoryCreate
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onDirectoryDelete
- Specified by:
onDirectoryDelete
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onFileChange
- Specified by:
onFileChange
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onFileCreate
- Specified by:
onFileCreate
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onFileDelete
- Specified by:
onFileDelete
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onStart
public void onStart(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) - Specified by:
onStart
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
onStop
public void onStop(org.apache.commons.jci.monitor.FilesystemAlterationObserver filesystemAlterationObserver) - Specified by:
onStop
in interfaceorg.apache.commons.jci.monitor.FilesystemAlterationListener
-
getReloadingClassLoader
-