Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Various custom configuration elements support a common content model used to supply JSR-223 scripts inside other object configurations. Where applicable, the specific configuration elements that share this content model will link to this page. These include the following documentation pages:

...

Excerpt

Attributes

An element of type ScriptType has the following XML attributes:

Name

Type

Use

Default

Description

language          
stringoptional"javascript"Defines the JSR-223 language to use. The default is ECMAScript using either the Rhino (Java 7) or Nashorn (Java 8) engines.

customObjectRef 3.2

stringoptional
The ID of a Spring bean defined elsewhere in the configuration.

If the customObjectRef attribute is present, the result of the referenced Spring bean is made available to the script in a variable named custom. This is in addition to the normal script context discussed below.

Child Elements

An element of type ScriptType has the following child elements:

NameCardinalityDescription
<Script>


Exactly One

An inline script
<ScriptFile>
Path to a local file or classpath resource containing the script

The script may be stored in a local file (with <ScriptFile>) or written inline (with <Script>). An inline script should be wrapped with a CDATA section to prevent interpretation of any special XML characters that may be included in the script.

Tip
titleAlways wrap inline scripts with a CDATA section

Always wrap inline scripts with a CDATA section, even if the script contains no special XML characters. This will future-proof your script.

...

The default scripting language is JavaScript (language=”javascript”). Therefore all of the sample scripts are written in JavaScript, which is based on the ECMAScript standard. The following table illustrates the relationship between JRE version and ECMAScript version:

JRE Version

Default Script Engine

ECMAScript Version

Java 7

Rhino

ECMAScript for XML (E4X)

Java 8

Nashorn

ECMAScript 5.1 (June 2011)

Java 9

Nashorn

ECMAScript 5.1 (plus some features of ECMAScript 2015 aka ECMAScript 6)

Since Java 7 reached end-of-life on April 2015, we assume Java 8 or above, and therefore the sample scripts aim to conform to ECMAScript 5.1. , which implements Nashorn. 

Info
titleNashorn documentation from Oracle

An introduction to Nashorn from Oracle:

Part 1: Introducing JavaScript, ECMAScript, and Nashorn
Part 2: The Java in JavaScript
Part 3: Database Scripting

If you’re still using Rhino, the sooner you migrate to Nashorn, the better. That said, many of the sample scripts (which are quite simple) will run under both Rhino and Nashorn.

Info
titleStill using Rhino?
If you’re still using Rhino, the sooner you migrate to Nashorn, the better. Consult the Rhino Migration Guide and this Java 8 Nashorn Tutorial for helpful advice for helpful advice.

Since Nashorn is included with Java 8 (and later), the sample scripts aim to conform to ECMAScript 5.1. In particular, the scripts avoid features introduced in ECMAScript 6 (also known as ECMAScript 2015) for compatibility.

Note
titleECMAScript 2015 is not supported
Language features introduced in ECMAScript 2015 (aka ECMAScript 6) are intentionally not used in the sample scripts for compatibility reasons. This includes let, const, and the so-called fat arrow function notation.

...