A sandbox to execute JavaScript code with Rhino in Java.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.settings
src
.classpath
.gitignore
.project
.travis.yml
Jenkinsfile
LICENSE.TXT
README.md
pom.xml

README.md

Build Status Maven Central

Rhino Sandbox

A sandbox to execute JavaScript code with Rhino in Java.

Also see Nashorn Sandbox.

Usage

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

Maven

Just add the following dependency to your projects.

<dependency>
    <groupId>org.javadelight</groupId>
    <artifactId>delight-rhino-sandbox</artifactId>
    <version>0.0.10</version>
</dependency>

This artifact is available on Maven Central and BinTray.

Maven Central