JDG in Library Mode Usage Example

From NovaOrdis Knowledge Base
Jump to navigation Jump to search

Internal

Overview

The example is deployed in a wrapper servlet, to facilitate interaction with the EAP JEE container.

GitHub

https://github.com/NovaOrdis/playground/tree/master/jboss/infinispan/library-mode-access-from-eap

Maven

<dependency>
    <groupId>org.infinispan</groupId>
    <artifactId>infinispan-core</artifactId>
    <version>8.3.0.Final-redhat-1</version>
    <scope>provided</scope>
</dependency>

If support for JDG in library mode is deployed within the target EAP (preferred), declare the dependency <scope>provided</scope> and configure the jboss-deployment-structure.xml as shown:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.infinispan" slot="jdg-7.0" services="export"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

services="export" is required because we want JDG module to export its java services to the application.

Otherwise, all required dependencies it with your deployment, by not declaring them "provided".

HotRod Client Configuration

import org.infinispan.client.hotrod.configuration.Configuration;
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;

...

ConfigurationBuilder cb = new ConfigurationBuilder();

cb.tcpNoDelay(true)
    .connectionPool()
    .numTestsPerEvictionRun(3)
    .testOnBorrow(false)
    .testOnReturn(false)
    .testWhileIdle(true)
    .addServer()
    .host(JDG_SERVER_IP_ADDRESS)
    .port(JDG_SERVER_IP_PORT);

Configuration c = cb.build();

Create a RemoteCacheManager and a Cache

import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.commons.api.BasicCache;
...
RemoteCacheManager remoteCacheManager = new RemoteCacheManager(c);
BasicCache cache = remoteCacheManager.getCache();
...

Features

Basic API

cache.put("some-key", "some value");
String s = cache.get("some-key");

Transactions

Not available in remote client/server mode.