diff --git a/core/src/main/java/org/apache/struts2/StrutsConstants.java b/core/src/main/java/org/apache/struts2/StrutsConstants.java index d8b9a76ab..6cd01089f 100644 --- a/core/src/main/java/org/apache/struts2/StrutsConstants.java +++ b/core/src/main/java/org/apache/struts2/StrutsConstants.java @@ -127,4 +127,7 @@ public final class StrutsConstants { /** Allows one to disable dynamic method invocation from the URL */ public static final String STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION = "struts.enable.DynamicMethodInvocation"; + + /** A list of configuration files automatically loaded by Struts */ + public static final String STRUTS_CONFIGURATION_FILES = "struts.configuration.files"; } diff --git a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java index 3d7fcc724..46c5d80b3 100644 --- a/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java +++ b/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java @@ -251,12 +251,18 @@ public class Dispatcher { } configurationManager = new ConfigurationManager(); - - // Load old xwork files - configurationManager.addConfigurationProvider(new XmlConfigurationProvider("xwork.xml", false)); - - // Load Struts config files - configurationManager.addConfigurationProvider(new StrutsXmlConfigurationProvider(false)); + String configFiles = Settings.get(StrutsConstants.STRUTS_CONFIGURATION_FILES); + if (configFiles == null) { + configFiles = "struts-default.xml,struts-plugins.xml,struts.xml"; + } + String[] files = configFiles.split("\\s*[,]\\s*"); + for (String file : files) { + if ("xwork.xml".equals(file)) { + configurationManager.addConfigurationProvider(new XmlConfigurationProvider(file, false)); + } else { + configurationManager.addConfigurationProvider(new StrutsXmlConfigurationProvider(file, false)); + } + } synchronized(Dispatcher.class) { if (dispatcherListeners.size() > 0) {