Limit the number of ScriptEngine instances to the number of threads

This commit makes ThreadLocal<ScriptEngine> engineHolder ScriptTemplateView
field static in order to limit the maximum number of ScriptEngine instances
to the number of threads, regardless of the number of view instances.

Issue: SPR-13487
This commit is contained in:
Sebastien Deleuze
2015-09-23 13:17:37 +02:00
parent 54703bf3f8
commit cffad9d4b1

View File

@@ -69,8 +69,9 @@ public class ScriptTemplateView extends AbstractUrlBasedView {
private static final String DEFAULT_RESOURCE_LOADER_PATH = "classpath:";
private static final ThreadLocal<ScriptEngine> engineHolder =
new NamedThreadLocal<ScriptEngine>("ScriptTemplateView engine");
private final ThreadLocal<ScriptEngine> engineHolder = new NamedThreadLocal<ScriptEngine>("ScriptTemplateView engine");
private ScriptEngine engine;
@@ -235,10 +236,10 @@ public class ScriptTemplateView extends AbstractUrlBasedView {
protected ScriptEngine getEngine() {
if (Boolean.FALSE.equals(this.sharedEngine)) {
ScriptEngine engine = this.engineHolder.get();
ScriptEngine engine = engineHolder.get();
if (engine == null) {
engine = createEngineFromName();
this.engineHolder.set(engine);
engineHolder.set(engine);
}
return engine;
}