---
title: "JSR223 Listener"
description: "Configure the JMeter JSR223 Listener listeners: properties, defaults, and practical usage notes for building reliable load tests."
url: https://docs.jmeter.ai/components/jsr223-listener/
lastUpdated: 2026-10-01
source: docs.jmeter.ai
---

# JSR223 Listener

*Part of the **Listeners** category. Also documented in context in the [full Component Reference](/user-manual/component-reference/#jsr223-listener).*

The JSR223 Listener allows JSR223 script code to be applied to sample results.

| Name | Required | Description |
| --- | --- | --- |
| Name | No | Descriptive name for this element that is shown in the tree. |
| Language | Yes | The JSR223 language to be used |
| Parameters | No | Parameters to pass to the script.     The parameters are stored in the following variables:      **`Parameters`** : string containing the parameters as a single variable **`args`** : String array containing parameters, split on white-space |
| Script file | No | A file containing the script to run, if a relative file path is used, then it will be relative to directory referenced by “`user.dir`” System property |
| Script compilation caching | No | Unique String across Test Plan that JMeter will use to cache result of Script compilation if language used supports `[Compilable](https://docs.oracle.com/javase/8/docs/api/javax/script/Compilable.html)` interface (Groovy is one of these, java, beanshell and javascript are not).      :::note See note in JSR223 Sampler Java System property if you’re using Groovy without checking this option ::: |
| Script | Yes (unless script file is provided) | The script to run. |

Before invoking the script, some variables are set up.
Note that these are JSR223 variables - i.e. they can be used directly in the script.

**`log`**
: ([Logger](https://www.slf4j.org/api/org/slf4j/Logger.html)) - can be used to write to the log file

**`Label`**
: the String Label

**`FileName`**
: the script file name (if any)

**`Parameters`**
: the parameters (as a String)

**`args`**
: the parameters as a String array (split on whitespace)

**`ctx`**
: ([JMeterContext](https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html)) - gives access to the context

**`vars`**
: ([JMeterVariables](https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html)) - gives read/write access to variables:

```plaintext
vars.get(key);
vars.put(key,val);
vars.putObject("OBJ1",new Object());
vars.getObject("OBJ2");
```

**`props`**
: (JMeterProperties - class [`java.util.Properties`](https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html)) - e.g. `props.get("START.HMS");` `props.put("PROP1","1234");`

**`sampleResult`, `prev`**
: ([SampleResult](https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html)) - gives access to the SampleResult

**`sampleEvent`**
: ([SampleEvent](https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleEvent.html)) - gives access to the SampleEvent

**`sampler`**
: ([Sampler](https://jmeter.apache.org/api/org/apache/jmeter/samplers/Sampler.html))- gives access to the last sampler

**`OUT`**
: `System.out` - e.g. `OUT.println("message")`

For details of all the methods available on each of the above variables, please check the Javadoc

## Related

- [Grafana / InfluxDB / Backend Listener](/topics/grafana-influx-backend-listener/)
- [Coordinated Omission Calculator](/tools/coordinated-omission/)
- [Full Component Reference](/user-manual/component-reference/)
- [Functions and Variables](/user-manual/functions/)
