diff --git a/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java b/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java index 03999d874..58354163c 100644 --- a/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java +++ b/plugins/spring/src/main/java/org/apache/struts2/spring/ClassReloadingXMLWebApplicationContext.java @@ -209,4 +209,8 @@ public class ClassReloadingXMLWebApplicationContext extends XmlWebApplicationCon public void onStop(FilesystemAlterationObserver filesystemAlterationObserver) { } + + public ReloadingClassLoader getReloadingClassLoader() { + return classLoader; + } } diff --git a/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java b/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java index 33eb237b7..81b5727bf 100644 --- a/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java +++ b/plugins/spring/src/main/java/org/apache/struts2/spring/StrutsSpringObjectFactory.java @@ -92,10 +92,15 @@ public class StrutsSpringObjectFactory extends SpringObjectFactory { if ("true".equals(devMode) && StringUtils.isNotBlank(watchList) && appContext instanceof ClassReloadingXMLWebApplicationContext) { + //prevent class caching + useClassCache = false; + ClassReloadingXMLWebApplicationContext reloadingContext = (ClassReloadingXMLWebApplicationContext) appContext; reloadingContext.setupReloading(watchList.split(","), acceptClasses, servletContext); LOG.info("Class reloading is enabled. Make sure this is not used on a production environment!", watchList); + setClassLoader(reloadingContext.getReloadingClassLoader()); + //we need to reload the context, so our isntance of the factory is picked up reloadingContext.refresh(); }