Details
-
Task
-
Status: Closed
-
Minor
-
Resolution: Won't Fix
-
2.2.2
-
None
-
Java6, Java7, Tomcat6
-
Patch
Description
TeamplateAttributeRender.write(..) boils down to using JspRuntimeLibrary.include(..)
In Tomcat-6 this involves wrapping the request and response (a number of times?) and going through security checks (again and again and again...).
At FINN.no we're getting scores of requests per second per jvm and seeing this method becoming a bottleneck, mainly due to thread contention in the security checks.
The method can be sped up by calling, if possible, requestDispatcher.include(..)
For example we have overridden TemplateAttributeRender like
public void write(
final Object template,
final Attribute attribute,
final TilesRequestContext request) throws IOException {
if(request instanceof JspTilesRequestContext && template instanceof String){
try
catch (ServletException ex)
{ throw new TilesIOException(ex); }}else
{ super.write(template, attribute, request); }}
I doubt that this is an appropriate patch to apply, it hides superclass functionality, but maybe there is a better place to apply it?