Overview

ScaleOut StateServer® provides a software-based, distributed, in-memory data grid, often referred to as distributed cache, for mission-critical workload data. Intended for use within a data center, the software is installed as a Windows service or Linux daemon on all servers within your Web or application server farm.

The Java ScaleOut client API connects a user application to a ScaleOut in-memory data grid for high performance, scalable access to objects. The client is available for Java Runtime Environment (JRE) 8+, and the JAR can be downloaded from ScaleOut’s public maven repository.

Java applications leveraging the ScaleOut client API can create, read, update, and delete POJOs (Plain Old Java Objects) from the distributed cache. Stored objects can be uniformly accessed by any app.

The client API provides the ability to:
  • Connect to multiple ScaleOut in-memory data grids

  • Perform asynchronous caching operations

  • Lock objects for guaranteed sequential access

  • Query entire caches using filters

  • Register for expiration and backing store events

  • Perform server-side parallel ForEach, and Map/Reduce operations

  • Post events to server side event handlers.

  • Manage InvocationGrids for hosting server-side event listeners.

Connecting to the ScaleOut Repository

The ScaleOut repository hosts the ScaleOut API JARs. The ScaleOut repository is hosted in a Sonatype Nexus Repository at:

https://packages.scaleoutsoftware.com/repository/scaleout-release/

Configure your build system using one of the following examples. For complete documentation on connecting to the ScaleOut repository, see the JavaProjectConfigurationGuide.

sync:

maven

Add the ScaleOut release repository to the project’s pom.xml:

<repositories>
    <repository>
        <id>scaleout-release</id>
        <name>ScaleOut Release Repository</name>
        <url>https://packages.scaleoutsoftware.com/repository/scaleout-release/</url>

        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>

Dependencies stored in the repository can then be referenced normally.

For example:

<dependency>
    <groupId>com.scaleoutsoftware</groupId>
    <artifactId>scaleout-client</artifactId>
    <version>3.2.4</version>
</dependency>

Maven will retrieve the artifact from the configured ScaleOut repository when the project is built.

Configuring Maven Globally

The repository can also be configured in the user’s Maven settings.xml file.

On Linux and macOS, the file is normally located at:

~/.m2/settings.xml

On Windows, it is normally located at:

%USERPROFILE%\.m2\settings.xml

Add a profile containing the ScaleOut repository:

<settings>
    <profiles>
        <profile>
            <id>scaleout</id>

            <repositories>
                <repository>
                    <id>scaleout-release</id>
                    <name>ScaleOut Release Repository</name>
                    <url>https://packages.scaleoutsoftware.com/repository/scaleout-release/</url>

                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>
            </repositories>
        </profile>
    </profiles>

    <activeProfiles>
        <activeProfile>scaleout</activeProfile>
    </activeProfiles>
</settings>

This configuration makes the ScaleOut release repository available to all Maven projects run by the user.

Comparison to Java Named Cache

The Java ScaleOut Client API has notable performance enhancements and additional features when compared to the Java NamedCache. The ScaleOut client API for Java includes the following features not available in the Java NamedCache:

  • Built for JRE 8+

  • Support for connections to multiple ScaleOut stores in a single application.

  • Per-connection configuration.

  • Asynchronous operations.

  • Enhanced dependency support.