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 do 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 required.

  • Self-service operation – You can start, stop, and restart your environment whenever you need to – without submitting a support ticket and without any waiting time.

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

  • Central configuration – JVM parameters and memory settings are managed in a single file (platform.json).

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

What's changed

Before

Starting with version 26.2

Startup scripts (execute.sh, execute.bat) with customization

Central configuration in platform.json

Platform-specific service registration

One command: --install-service

Frequent restarts via Lobster Support

Manual restart initiated by the customer via command

Different procedures depending on the operating system

Identical commands across all platforms

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

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

Architecture

The wrapper consists of the following components:

File

Role

Customizable

application-wrapper.jar

Main wrapper – executes all commands

No

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 to logs/wrapper.log – both when running as a system service 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 can be accessed via java on the command line.

  • Lobster Data Platform version 26.2 or later 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 legacy Windows wrapper (Tanuki Software) continues to work on Java 11.

Existing installation, upgrading to Java 21

Java 21

IMPORTANT Migration to the new wrapper is mandatory. The legacy Windows wrapper (Tanuki) is incompatible with Java 21. The service will not start without migration.

Upgrading an existing Windows installation to Java 21 requires migration to the new wrapper beforehand. Follow the steps in How-to: Migration from an existing installation.

Further information:

Set up an application wrapper

These instructions will guide you step by step through the initial setup of the Lobster Application Wrapper. By the end, your Lobster Data Platform will be running as a system service that starts automatically when the system boots.

1. Check the installation files

Open a command prompt 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
# Windows
dir .\bin\application-wrapper.jar .\bin\platform.json

You should see all four files: application-wrapper.jar, platform.json, wrapper.json und 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 your server's available resources. 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're 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 existing startup mechanisms are not disabled, the platform will still start, but the wrapper's restart functionality (--restart-service, --stop-service) will not work. 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 service is registered and automatically configured to start at system boot on both Windows and Linux.

5. Start the service

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

6. Check the status

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

You should see a message 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 ./logs/wrapper.log for errors.

All done. Your Lobster Data Platform is now running as a system service and will start automatically the next time the system boots. You can find the complete command guide in the Reference.

How to manage the wrapper

Migration from an existing installation

These instructions describe how to migrate to the wrapper if your Lobster Data Platform has previously been operated using custom startup scripts or manually registered services.

Requirements

  • Lobster Data Platform ≥ 26.2 is installed.

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

Steps

  1. Save your current JVM parameters.

    Make a note of 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 existing startup mechanisms are not disabled, the platform will still start, but the wrapper's restart functionality (--restart-service, --stop-service) will not work. 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. Perform a functional test.

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

TIP Make a backup copy of platform.json before making any changes.

Restart the service

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

Alternatively, you can stop the service and restart it 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.

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 controlled via the Service Control Manager and is automatically enabled during installation. The commands --enable-service and --disable-service are therefore only available on Linux.

Launch the application 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

The log output is written to logs/wrapper.log – the same location used in service mode. Terminate the process by pressing Ctrl+C.

NOTE Not suitable for production use. 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 additional entries in the jvmArgs array of the platform.json file:

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

To apply the changes, restart the service.

Customize shutdown timeout

When stopping or restarting, the wrapper allows the application a configurable amount of time to shut down gracefully. The shipped wrapper.json sets this value to 120 seconds (if no entry is present, an internal default of 60 seconds applies). If this time limit is exceeded, 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 In wrapper.json, change only the parameters documented in the Reference. All other entries are internal configuration and must not be modified. Make a backup copy before making any changes.

Uninstall the service completely

# 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

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

Windows, Linux

Configuration file: platform.json

Path: ./bin/platform.json

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

Parameters

Parameter

Type

Description

Customizable

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 launching the application.

Usually not necessary

programArgs

String[]

Command-line arguments for the main class.

No

Memory settings

Parameter

Description

Recommendation

-Xms

Minimum heap size (initial value)

Set this to the same value as -Xmx to avoid dynamic memory adjustments at runtime.

-Xmx

Maximum heap size

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

Variables

Variable

Description

Note

%APP_DIR%

Replaced at runtime with the path to the application directory.

System variable – do not change or remove.

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

Configuration file: wrapper.json

Path: ./bin/wrapper.json

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

IMPORTANT In wrapper.json, modify only the parameters documented below. Create a backup copy before making any changes. Changes take effect after the service is restarted.

Parameters

Parameter

Type

Description

Customizable

name

String

Display name of the wrapper service in the operating system. Can only be changed before the first service installation (--install-service). Once the service is installed, the name can no longer be changed.

Before --install-service only

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). Once this time has elapsed, the process is forcibly terminated. Default without entry: 60 seconds. Shipped value: 120 seconds.

Yes

Recommendation

For 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

Customizable

./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