A sandbox to execute JavaScript code with Rhino in Java.
Also see Nashorn Sandbox.
By default, access to all Java classes is blocked.
RhinoSandbox sandbox = RhinoSandboxes.create();
sandbox.eval("java.lang.System.out.println('hello');");
// --> Exception
Java objects must be made explicitly available.
RhinoSandbox sandbox = RhinoSandboxes.create();
sandbox.inject("fromJava", new Object());
sandbox.eval("fromJava.getClass();");
To protect against CPU abusive scripts, limits on the number of instructions allowed for the script can be set.
RhinoSandbox sandbox = RhinoSandboxes.create();
sandbox.setInstructionLimit(1000000);
sandbox.eval("while (true) { }");
// --> results in ScriptCPUAbuseException
- 0.1.14: Fixing dependency to Guava 21 (PR 20 by candrews)
- 0.1.13: Improving concurrency (PR 18 PR 19 by Tamil Selva Kaushik G)
- 0.0.11: Fixing concurrency issue (PR 9 by kamac)
Just add the following dependency to your projects.
<dependency>
<groupId>org.javadelight</groupId>
<artifactId>delight-rhino-sandbox</artifactId>
<version>0.0.14</version>
</dependency>
This artifact is available on Maven Central and BinTray.