Dear List,
in some applications we use a custom ConfigurationProvider to use our own
stage specific config to enable devMode automatically for development
stages.
In struts 2.3.16 devMode was changed to allow disabling of e.g. config
reloading or resources reloading even when devMode is enabled. That is
done in DefaultBeanSelectionProvider.switchDevMode()
That method looks like this:
private void switchDevMode(LocatableProperties props) {
if ("true".equalsIgnoreCase(props.getProperty(StrutsConstants.
STRUTS_DEVMODE))) {
if (props.getProperty(StrutsConstants.STRUTS_I18N_RELOAD) ==
null) {
props.setProperty(StrutsConstants.STRUTS_I18N_RELOAD,
"true");
}
if (props.getProperty(StrutsConstants.
STRUTS_CONFIGURATION_XML_RELOAD) == null) {
props.setProperty(StrutsConstants.
STRUTS_CONFIGURATION_XML_RELOAD, "true");
}
if (props.getProperty(StrutsConstants.
STRUTS_FREEMARKER_TEMPLATES_CACHE) == null) {
props.setProperty(StrutsConstants.
STRUTS_FREEMARKER_TEMPLATES_CACHE, "false");
}
if (props.getProperty(StrutsConstants.
STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY) == null) {
props.setProperty(StrutsConstants.
STRUTS_FREEMARKER_TEMPLATES_CACHE_UPDATE_DELAY, "0");
}
// Convert struts properties into ones that xwork expects
props.setProperty(XWorkConstants.DEV_MODE, "true");
For our application the following happens:
- in Dispatcher.init() ConfigurationProviders are instantiated
- init_DefaultProperties() is called before
init_CustomConfigurationProviders()
- When our CustomConfigurationProvider is called, it triggers
switchDevMode()
- at that time DefaultPropertiesProvider has already run and reloading
properties are set to false
- hence the above if statements in switchDevMode() all evaluate to false
and reloading is not enabled.
That means we have to explicitly enable config and resources reloading in
our own ConfigProvider.
Is that behavior intended?
Would you mind to add a note about that to the wiki?
What do you think about another init-param in web.xml to optionally move
init_CustomConfigurationProviders() at the top of init calls?
regards,
Christoph
This Email was scanned by Sophos Anti Virus