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-as-embedded-modules</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.

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.