Documentation Index

Fetch the complete documentation index at: https://docs.lobster-world.com/llms.txt

Use this file to discover all available pages before exploring further.

Lobster Application Wrapper

Prev Next

Overview

Starting with version 26.2 of the Lobster Data Platform, the Lobster Application Wrapper replaces the previous platform-specific startup mechanisms (e.g., execute.sh, manually registered Windows services, or custom init scripts) with a unified, cross-platform solution. To achieve this, you need to follow a few steps for setup.

What the wrapper does

The Lobster Application Wrapper is a Java-based application that registers and manages your Lobster applications as system services – on Windows via the Service Control Manager, and on Linux via systemd. It can start and monitor one or more Java applications in parallel and coordinate the restart of your entire cluster, including all Lobster Data Platform instances (node controllers and worker nodes) as well as DMZ servers (primary and secondary).

Why a wrapper?

Previously, the way the Lobster Data Platform was started and stopped depended heavily on the operating system and custom configurations. These inconsistent operational procedures increased reliance on Lobster Support, particularly when restarting in cluster setups.

The wrapper solves these problems:

  • Consistent commands: The same commands on Windows and Linux. No platform-specific knowledge is required.

  • Self-service operation: You can start, stop, and restart your environment whenever you need to. No support ticket required, no waiting time.

  • Cluster-wide restart: The wrapper coordinates the restart of all nodes (node controllers, and worker nodes) and DMZ servers (primary and secondary).

  • Central configuration: You manage JVM parameters and memory settings in a single file (platform.json).

  • Multi-application management: Multiple Java applications can be managed using the same wrapper.

What's changing

Before

From version 26.2

Startup scripts (execute.sh, execute.bat) with custom configurations

Central configuration in platform.json

Platform-specific service registration

One command: --install-service

Restart often required Lobster Support

Customers can restart independently using a command

Different procedures depending on the operating system

Identical commands on all platforms

Log output to different files depending on the operating system (e.g., console.txt on Windows)

Unified log output to logs/wrapper.log on all platforms

Architecture

The wrapper consists of the following components:

File

Role

Configurable

application-wrapper.jar

Main wrapper – executes all commands

platform.json

Your service configuration (JVM parameters, memory, classpath)

Yes

wrapper.json

Internal service configuration

Limited (see Reference)

updater.json

Updater configuration

No

Log output

The wrapper writes its log output consistently to logs/wrapper.log—both in service mode and in console mode (--run). This applies equally to Windows and Linux. The previous console.txt file is no longer generated.

System requirements

  • JDK 11 or later is installed and accessible via java on the command line.

  • Lobster Data Platform ≥ 26.2 is installed.

  • Administrator rights (Windows) or root privileges (Linux).

  • Windows: Service Control Manager.

  • Linux: systemd.

Windows wrapper: Java version compatibility

On Windows, wrapper compatibility depends on the installed wrapper generation and the Java version in use. Check your scenario in the table below.

Scenario

Java version

Action required

New installation (new wrapper)

Java 11 or Java 21

None. The new wrapper works correctly with both Java versions.

Existing installation, staying on Java 11

Java 11

None. The existing Windows wrapper (Tanuki Software) continues to work with Java 11.

Existing installation, upgrading to Java 21

Java 21

IMPORTANT Migration to the new wrapper is mandatory. The existing Windows wrapper (Tanuki) is incompatible with Java 21. Without migration, the service cannot start.

Upgrading an existing Windows installation to Java 21 requires migrating to the new wrapper first. Follow the steps under How-to: Migrate from an existing installation.

Further information:

Set up an application wrapper

This guide walks you through the initial setup of the Lobster Application Wrapper step by step. When you are done, your Lobster Data Platform will run as a system service that starts automatically at system boot.

1. Verify installation files

Open a command line and navigate to the installation directory of your Lobster Data Platform. Check whether the wrapper files are present:

# Linux
ls -la ./bin/application-wrapper.jar ./bin/platform.json ./bin/wrapper.json ./bin/updater.json

# Windows
dir .\bin\application-wrapper.jar .\bin\platform.json .\bin\wrapper.json .\bin\updater.json

You should see all four files: application-wrapper.jar, platform.json, wrapper.json, and updater.json. If not, your installation may not have been updated to version 26.2 or later.

2. Check memory settings

Open the file ./bin/platform.json in a text editor and check the heap memory settings:

"-Xms4096M",
"-Xmx4096M"

Adjust the values to match the available resources on your server. Set -Xms and -Xmx to the same value to avoid dynamic memory adjustments at runtime. Typical values range from 2048M to 8192M.

TIP If you are unsure about the optimal memory configuration, contact Lobster Support.

3. Disable existing startup mechanisms

If your Lobster Data Platform has previously been started using other means (e.g., init scripts, manually registered services, cron jobs), disable them before installing the wrapper to avoid conflicts.

IMPORTANT

If you do not disable existing startup mechanisms, the platform will still start. The wrapper's restart functionality (--restart-service, --stop-service) will not work, however. The wrapper can only fully control the application if it is the sole control mechanism.

4. Install the service

java -jar ./bin/application-wrapper.jar --install-service

The wrapper registers the service and activates autostart on both Windows and Linux.

5. Start the service

java -jar ./bin/application-wrapper.jar --start-service

6. Check status

java -jar ./bin/application-wrapper.jar --service-status

You should see output confirming that the service is running.

7. Functional test

Log in to the Lobster Data Platform and verify that the application is working as expected. Also check the file ./logs/wrapper.log for errors.

Done. Your Lobster Data Platform is running as a system service and starts automatically at the next system boot. You can find the complete command reference in the Reference.

How-to: Manage the wrapper

Migrate from an existing installation

This guide describes migrating to the wrapper when your Lobster Data Platform was previously operated using custom startup scripts or manually registered services.

Prerequisites

  • Lobster Data Platform ≥ 26.2 is installed.

  • You know your current JVM parameters (e.g., from execute.sh or execute.bat).

Steps

  1. Back up current JVM parameters.

    Note all custom Java parameters from your existing execute.sh or execute.bat.

  2. Transfer parameters to platform.json.

    Open ./bin/platform.json and add your parameters as additional entries in the jvmArgs array:

    "jvmArgs": [
        ... (keep existing entries) ...
        "-Dmy.custom.parameter=value",
        "-Danother.parameter=true"
    ]
  3. Disable existing startup mechanisms.

    Disable or remove all existing services, init scripts, and other startup mechanisms.

    IMPORTANT

    This step is critical for the wrapper to function properly. If you do not disable existing startup mechanisms, the platform will still start. The wrapper's restart functionality (--restart-service, --stop-service) will not work, however. The wrapper can only fully control the application if it is the sole control mechanism.

  4. Install and start the service.

    java -jar ./bin/application-wrapper.jar --install-service
    java -jar ./bin/application-wrapper.jar --start-service
  5. Run a functional test.

    Check the application and the file ./logs/wrapper.log for errors.

TIP Always create a backup before making changes to platform.json.

Restart the service

java -jar ./bin/application-wrapper.jar --restart-service

Alternatively, you can stop the service and start it again separately:

java -jar ./bin/application-wrapper.jar --stop-service
java -jar ./bin/application-wrapper.jar --start-service

NOTE When stopping, the wrapper allows the application a configurable amount of time to shut down gracefully (default: 120 seconds). If this time is exceeded, the process is forcibly terminated. On platforms with many concurrent or long-running processes, it may be advisable to adjust this timeout – see Customize shutdown timeout.

NOTE For a cluster-wide restart, run --restart-service on any host in the cluster. The request is automatically routed to the node controller, which is the central control point of the cluster. It coordinates the restart of all instances via REST or the message service. The cluster must be correctly configured and reachable.

Disable or enable autostart (Linux only)

By default, the service starts automatically when the system boots. To change this behavior:

# Disable autostart
java -jar ./bin/application-wrapper.jar --disable-service

# Re-enable autostart
java -jar ./bin/application-wrapper.jar --enable-service

NOTE On Windows, autostart is managed through the Service Control Manager and is automatically enabled during installation. The --enable-service and --disable-service commands are therefore only available on Linux.

Run in console mode

For testing or troubleshooting, you can start the application directly in the console without registering it as a service:

java -jar ./bin/application-wrapper.jar --run

Log output is written to logs/wrapper.log—just as in service mode. Press Ctrl+C to terminate the process.

NOTE Not suitable for production. Use console mode exclusively for testing and troubleshooting.

Change memory settings

  1. Stop the service:

    java -jar ./bin/application-wrapper.jar --stop-service
  2. Open ./bin/platform.json and adjust the values for -Xms and -Xmx:

    "-Xms8192M",
    "-Xmx8192M"
  3. Start the service:

    java -jar ./bin/application-wrapper.jar --start-service

Add custom JVM parameters

If you need additional system properties or JVM options, add them as further entries in the jvmArgs array in platform.json:

"jvmArgs": [
    "-Xms4096M",
    "-Xmx4096M",
    "-server",
    ... (existing entries) ...
    "-Dmy.custom.parameter=value",
    "-Danother.parameter=true"
]

Restart the service afterwards for the changes to take effect.

Customize shutdown timeout

When stopping or restarting, the wrapper allows the application a configurable amount of time to shut down gracefully. The default value is 120 seconds. If the application exceeds the timeout, the wrapper forces the process to terminate. On platforms with many concurrent or long-running processes, increasing this timeout may be advisable to ensure that open transactions can be completed properly.

  1. Stop the service:

    java -jar ./bin/application-wrapper.jar --stop-service
  2. Open ./bin/wrapper.json and adjust the value of process.shutdown.timeout (specified in seconds).

  3. Start the service:

    java -jar ./bin/application-wrapper.jar --start-service

IMPORTANT Only modify the parameters documented in the Reference in wrapper.json. All other entries are internal configuration and must not be changed. Always create a backup before making any changes.

Fully uninstall the service

# Stop the service
java -jar ./bin/application-wrapper.jar --stop-service

# Uninstall the service
java -jar ./bin/application-wrapper.jar --uninstall-service

Reference: Commands and configuration

All commands are executed via the wrapper JAR file:

java -jar ./bin/application-wrapper.jar <command>

Command

Description

Platform

--install-service

Installs the service and enables autostart.

Windows, Linux

--uninstall-service

Uninstalls the service.

Windows, Linux

--start-service

Starts the service.

Windows, Linux

--stop-service

Stops the service.

Windows, Linux

--restart-service

Restarts the service.

Windows, Linux

--service-status

Displays the current service status.

Windows, Linux

--enable-service

Enables autostart at system boot.

Linux only

--disable-service

Disables autostart at system boot.

Linux only

--run

Starts the application in console mode (testing, troubleshooting).

Windows, Linux

Configuration file: platform.json

Path: ./bin/platform.json

The file platform.json is the central configuration file for your application service. It contains JVM parameters, memory settings, and the classpath. Always create a backup before making any changes.

Parameters

Parameter

Type

Description

Configurable

name

String

Display name of the service.

Yes

mainClass

String

Fully qualified name of the Java main class.

No

jvmArgs

String[]

JVM arguments: memory, system properties, debug options.

Yes

classpath

String[]

Classpath entries for starting the application.

Not usually required

programArgs

String[]

Command-line arguments for the main class.

No

Memory settings

Parameter

Description

Recommendation

-Xms

Minimum heap memory (initial value)

Set equal to -Xmx to avoid dynamic memory adjustments at runtime.

-Xmx

Maximum heap memory

Depends on data volume and number of concurrent processes. Typical values: 2048M to 8192M.

Variables

Variable

Description

Note

%APP_DIR%

Replaced at runtime by the path to the application directory.

System variable – do not modify or remove.

IMPORTANT The %APP_DIR% variable is managed automatically by the wrapper. Do not modify or remove this placeholder.

Configuration file: wrapper.json

Path: ./bin/wrapper.json

The file wrapper.json contains the wrapper's internal service configuration. Only the parameters listed below are intended for customization. All other entries—especially references to loaded applications and their configuration files such as updater.json and platform.json—are internal configuration and must not be modified.

IMPORTANT Only modify the parameters documented below in wrapper.json if you have a valid reason to do so. These parameters typically do not require adjustment. Always create a backup before making any changes. Changes take effect after restarting the service.

Parameters

Parameter

Type

Description

Configurable

name

String

Display name of the wrapper service in the operating system. It can only be changed before the first service installation (--install-service). After installation, changes are no longer possible.

Only before --install-service

process.shutdown.timeout

Integer (seconds)

The amount of time the wrapper allows for a graceful shutdown (e.g., when using --stop-service or --restart-service). If the application exceeds the timeout, the wrapper forces the process to terminate. Default: 120 seconds.

Yes

Recommendation

On platforms with many concurrent or long-running processes, a higher value for process.shutdown.timeout may be advisable to ensure that open transactions can be completed properly before the process is forcefully terminated.

File overview

File

Description

Configurable

./bin/application-wrapper.jar

Main wrapper application

No

./bin/platform.json

Application service configuration

Yes

./bin/wrapper.json

Internal service configuration

name (before installation) and process.shutdown.timeout only

./bin/updater.json

Updater service configuration.

No – do not modify

./logs/wrapper.log

Wrapper log output (service and console mode)

No