Server-Side Tasks
What You Will Learn
How to upload a JavaScript task to the Infinispan Server using the REST API and then execute it remotely through the Hot Rod client with parameters.
Prerequisites
-
Java 17+
-
An Infinispan Server running on
localhost:11222(or Docker/Podman available for Testcontainers)
Step 1: Create a Server Task Script
Define a JavaScript task in src/main/resources/hello.js:
// mode=local,language=javascript,parameters=[greetee]
"Hello " + greetee
The comment header declares the execution mode, language, and expected parameters.
Step 2: Upload the Task via REST
Use the Infinispan REST client to upload the script to the server:
private static void uploadTask() throws Exception {
// Grab the script content from the resources folder
String script = getResourceAsString("hello.js", InfinispanServerTasks.class.getClassLoader());
// Connect to the locally running Infinispan Server through the REST API
RestURI uri = RestURI
.create(String.format("http://localhost:%d", ConfigurationProperties.DEFAULT_HOTROD_PORT));
RestClientConfigurationBuilder builder = uri.toConfigurationBuilder();
builder.security().authentication().username(TutorialsConnectorHelper.USER).password(TutorialsConnectorHelper.PASSWORD);
RestClient client = RestClient.forConfiguration(builder.build());
RestEntity scriptEntity = RestEntity.create(APPLICATION_JAVASCRIPT, script);
CompletionStage<RestResponse> uploadScript = client.tasks()
.uploadScript("hello", scriptEntity);
uploadScript.toCompletableFuture().get(5, TimeUnit.SECONDS);
}
Step 3: Execute the Task via Hot Rod
Execute the uploaded task on a cache with parameters:
// Get a cache to execute the task
RemoteCache<String, String> execCache = remoteCacheManager.getCache(TutorialsConnectorHelper.TUTORIAL_CACHE_NAME);
// Create task parameters
Map<String, String> parameters = new HashMap<>();
parameters.put("greetee", "developer");
// Execute hello task
String greet = execCache.execute("hello", parameters);
System.out.printf("Greeting = %s\n", greet);
Step 4: Run the Tutorial
mvn package exec:java
You should see output like:
Greeting = Hello developer
What’s Next
-
Getting started with basic cache operations
-
Reactive API for non-blocking operations


