From 36845ba1b4e6e001714db6b8faadfe7a719ba45c Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Fri, 14 May 2010 05:13:39 +0000 Subject: [PATCH] Make script engine thread local. --- .../luaj/vm2/script/LuaScriptEngineFactory.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/jse/org/luaj/vm2/script/LuaScriptEngineFactory.java b/src/jse/org/luaj/vm2/script/LuaScriptEngineFactory.java index 8f48d63e..55785161 100644 --- a/src/jse/org/luaj/vm2/script/LuaScriptEngineFactory.java +++ b/src/jse/org/luaj/vm2/script/LuaScriptEngineFactory.java @@ -29,12 +29,11 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; /** - * - * @author jim_roseborough + * Jsr 223 scripting engine factory */ public class LuaScriptEngineFactory implements ScriptEngineFactory { - private static final String FILEEXT = ".lua"; + private static final String FILEEXT = ".lua"; private static final String [] MIMETYPES = { "text/plain", @@ -47,13 +46,14 @@ public class LuaScriptEngineFactory implements ScriptEngineFactory { "luaj", }; - private ScriptEngine myScriptEngine; + private static final ThreadLocal engines + = new ThreadLocal(); private List extensions; private List mimeTypes; private List names; + public LuaScriptEngineFactory() { - myScriptEngine = new LuaScriptEngine(); extensions = Collections.nCopies(1, FILEEXT); mimeTypes = Arrays.asList(MIMETYPES); names = Arrays.asList(NAMES); @@ -122,6 +122,11 @@ public class LuaScriptEngineFactory implements ScriptEngineFactory { } public ScriptEngine getScriptEngine() { - return myScriptEngine; + ScriptEngine eng = engines.get(); + if ( eng == null ) { + eng = new LuaScriptEngine(); + engines.set(eng); + } + return eng; } }