Font Size:

Apache Ignite integration

Introduction

Joget DX 9 now integrates Apache Ignite, an open-source in-memory data grid (IMDG) and distributed database designed for high-performance computing with in-memory speed. IMDG is a high-speed, distributed key-value cache designed for high availability and scalability. This integration improves performance when retrieving large-scale data from the database.

How does it work?

Apache Ignite is integrated as a Hibernate second-level L2 cache and Hibernate query cache using the ignite-hibernate module in the Apache Ignite Extensions project. The Hibernate queries will read from the Ignite cache and avoid hitting the database where possible.

To enable Apache Ignite cache, you can set the -Dwflow.ignite=true flag in JAVA_OPTS. If you want to add more JAVA_OPTS flags to your Joget setup, you can append them to the existing JAVA_OPTS line in the Joget DX startup script:

  1. Navigate to the Joget DX installation directory and open the joget-start.bat file in a text editor.
  2. Find the line that starts with:
    set JAVA_OPTS=
  3. Add your new flags at the end, separated by spaces. For example, when adding the -Dwflow.ignite=true flag:
    set JAVA_OPTS=-Xmx768M -Dwflow.home=./wflow/ -Dwflow.ignite=true

Here are some best practices when adding additional lines in JAVA_OPTS:

  • Keep flags readable: Use line breaks with \ on Linux/macOS if it gets long.
  • Avoid duplicates: Don’t repeat the same flag (e.g., two -Xmx values).
  • Test changes: Restart Joget and check logs to confirm the flags are applied.

Configuration

Run Embedded Server Node

  • By default, the Ignite cache is disabled. To enable the Ignite cache, set the -Dwflow.ignite=true flag in JAVA_OPTS.

Run Client Node Connecting to External Ignite Cluster

  • To run Ignite as a client node connecting to an external Ignite cluster using static IPs, set the -Dwflow.igniteStaticIP=IP:port..port,IP:port..port flag.

Run Client Node Connecting to Kubernetes Ignite Cluster

  • To run Ignite as a client node connecting to an Ignite cluster running on Kubernetes, set the -Dwflow.igniteK8sNamespace=ignite and -Dwflow.igniteK8sService=ignite-service flags.

Enable JDBC Query Cache

  • To enable the experimental JDBC query caching, set the -Dwflow.igniteJdbc=true flag in JAVA_OPTS.
  • This JDBC query cache implementation uses AOP to intercept and cache JDBC queries.

Additional Configuration Options

The following are additional JAVA_OPTS flags to tune the cache configuration:

  • -Dwflow.igniteExpiry=1800000 (cache expiry duration in milliseconds, default 300,000 milliseconds or 5 minutes)
  • -Dwflow.igniteReplicated=true (to use REPLICATED data partitioning instead of the default PARTITIONED)
  • -Dwflow.igniteAsyncTimeout=10 (timeout in milliseconds, default zero, which means cache operations are synchronous. If set to more than zero, then asynchronous operations are enabled) 
  • -Dwflow.igniteMaxAsync=5000 (maximum number of concurrent asynchronous operations, default 500)
  • -Dwflow.ignitePartitions=1024 (number of partitions, default 1024)
  • -Dwflow.ignitePartitionBackups=1 (number of partition backups, default 1)
  • -Dwflow.ignitePairedConnections=true (use paired connections, default false)
  • -Dwflow.igniteNodeConnections=10 (maximum number of connections per node, default 1)
  • -Dwflow.igniteNearCache=100000 (max entries for near cache, default 0)
Created by Debanraj Last modified by Debanraj on Jul 01, 2025