Hi,
I run a script at a regular interval using jruby-complete-1.6.4.jar as
follows:
System.setProperty(“org.jruby.embed.localvariable.behavior”, “global”);
System.setProperty(“org.jruby.embed.localcontext.scope”, “threadsafe”);
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName(“jruby”);
SimpleScriptContext context = new SimpleScriptContext();
context.setAttribute(“variable 1”, “…”, ScriptContext.ENGINE_SCOPE);
context.setAttribute(“variable 2”, “…”, ScriptContext.ENGINE_SCOPE);
context.setAttribute(“org.jruby.embed.termination”, true,
ScriptContext.ENGINE_SCOPE);
Reader script = …;
engine.eval(script, context);
So the “org.jruby.embed.termination” is set true to do the necessary
cleanup after running the script.
This results in the following exception:
…
Caused by: java.lang.NullPointerException
at
org.jruby.embed.internal.ThreadSafeLocalContextProvider.getVarMap(ThreadSafeLocalContextProvider.java:65)
at
org.jruby.embed.ScriptingContainer.getVarMap(ScriptingContainer.java:997)
at org.jruby.embed.jsr223.Utils.postEval(Utils.java:126)
at org.jruby.embed.jsr223.JRubyEngine.eval(JRubyEngine.java:134)
If I don’t set the “org.jruby.embed.termination” option the application
goes out of memory after some time.
Any idea what goes wrong?