Improve performance of FreeMarker Template caching
--------------------------------------------------
Key: WW-3765
URL: https://issues.apache.org/jira/browse/WW-3765
Project: Struts 2
Issue Type: Improvement
Components: Integration
Affects Versions: 2.3.1
Environment: Tomcat v7.0
Reporter: Vijayakannan
Priority: Critical
Fix For: 2.3.2
Struts2 having option to enable the freemarker template caching with reloading
the template with time delay which helps us to improve the performance.
In our application we are using the strut2 in-built UI freemarker template. We
need the caching option without reloading the templates after the specific time
delay.
Caching option is more powerful if we have an option for enabling\disabling the
reload
Proposed Solution
Struts.xml
<constant name="struts.freemarker.templatesCache.required" value="true"/>
FreeMarkerManager.java
protected boolean templateUpdateRequired;
@Inject(STRUTS_FREEMARKER_TEMPLATES_RELOAD_REQUIRED)
public void setTemplateUpdateRequired(String templateUpdateRequired) {
this.templateUpdateRequired
="true".equals(templateUpdateRequired);
}
Update createConfiguration(ServletContext servletContext) Method
configuration.setSetting(Configuration. TEMPLATE_RELOAD_ REQUIRED _KEY,
templateUpdateRequired);
Configuration.java
String TEMPLATE_RELOAD_ REQUIRED _KEY= "template_reload_required";
TemplateCache.Java
protected boolean templateUpdateRequired;
Update getTemplate(TemplateLoader loader, String name, Locale locale, String
encoding, boolean parse) Method
...
if (templateUpdateRequired !=false && now - cachedTemplate.lastChecked < delay)
{
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira