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');");
// --> ExceptionJava 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.2.0: Requiring Java 1.8, allowing to provide scritable parameter for #27
- 0.1.18: Migrating Maven Namespace to Central Portal
- 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.18</version>
</dependency>This artifact is available on Maven Central and BinTray.