Infinispan – Remote Client-Server no protocolo Hot Rod

Vamos criar um ambiente onde a aplicação não está na mesma JVM que o Infinispan. Esta abordagem pode ser utilizada quando temos um cliente desenvolvido em outra linguagem de programação, como por exemplo .NET ou C++, assim estas linguagens podem fazer uso do Infinispan como um servidor remoto.

Ambiente

Neste exemplo utilizei duas máquinas virtuais com os respectivos IPs:

Cliente: Aplicação Java na JVM do host 192.168.122.0

Servidor:  Infinispan na JVM do host 102.168.122.1

Obs: utilizei o KVM como hypervisor, que por padrão configura a comunicação entre todos as máquinas virtuais.

Dica: Se estiver utilizando o VirtualBox, segue >>> aqui <<< um tutorial que ensina como configurar a comunicação entre as máquinas envolvidas.

Arquitetura

remote-client-server-final

Desabilitando o Firewall

O próximo passo é desabilitar o firewall. Como root, execute o seguinte comando em ambas as máquinas:

# service iptables stop 

O comando acima desabilita o firewall.

# chkconfig iptables off 

O comando acima garante que o firewall não será ativado nos próximos boots.

Desabilitando o SELinux

Como root, altere nas duas máquinas o parâmetro SELINUX=enforcing para SELINUX=disabled 

# vim /etc/sysconfig/selinux

Dica: Faça um teste utilizando ping para garantir que as duas máquinas estão se comunicando.

Download do Infinispan

Download: Infinispan 6.0.0.Alpha2 servers (HotRod, REST, Memcached)

Configurando o Servidor 

Depois de baixar o Infinispan, descompacte-o em um diretório de sua preferência. No meu caso utilizei o /opt.

Start do servidor

Para iniciar o Infinispan digite o seguinte comando substituindo o IP corretamente.

[user1@host1 bin]$ ./standalone.sh -b 102.168.122.1

=========================================================================

JBoss Bootstrap Environment

JBOSS_HOME: /opt/infinispan-server-6.0.0.Alpha2

JAVA: /usr/java/jdk1.6.0_39/bin/java

JAVA_OPTS: -server -XX:+UseCompressedOops -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

17:17:41,647 INFO [org.jboss.modules] (main) JBoss Modules version 1.2.0.CR1
17:17:42,490 INFO [org.jboss.msc] (main) JBoss MSC version 1.0.4.GA
17:17:42,962 INFO [org.jboss.as] (MSC service thread 1-1) JBAS015899: JBoss Infinispan Server 6.0.0.Alpha2 (AS 7.2.0.Final) starting
17:17:48,509 INFO [org.xnio] (MSC service thread 1-1) XNIO Version 3.0.7.GA
17:17:48,537 INFO [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http)
17:17:48,561 INFO [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.0.7.GA
17:17:48,621 INFO [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 3.2.14.GA
17:17:48,899 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool — 17) JBAS010280: Activating Infinispan subsystem.
17:17:48,935 INFO [org.jboss.as.naming] (ServerService Thread Pool — 21) JBAS011800: Activating Naming Subsystem
17:17:48,980 INFO [org.jboss.as.security] (ServerService Thread Pool — 23) JBAS013171: Activating Security Subsystem
17:17:49,214 INFO [org.jboss.as.jsf] (ServerService Thread Pool — 27) JBAS012605: Activated the following JSF Implementations: [main, 1.2]
17:17:49,239 INFO [org.jboss.as.security] (MSC service thread 1-2) JBAS013170: Current PicketBox version=4.0.15.Final
17:17:50,131 INFO [org.jboss.as.naming] (MSC service thread 1-1) JBAS011802: Starting Naming Service
17:17:50,167 INFO [org.jboss.as.connector.logging] (MSC service thread 1-2) JBAS010408: Starting JCA Subsystem (JBoss IronJacamar 1.0.15.Final)
17:17:51,852 INFO [org.apache.coyote.ajp] (MSC service thread 1-1) JBWEB003046: Starting Coyote AJP/1.3 on ajp-host1/192.168.122.1:8009
17:17:51,854 INFO [org.apache.coyote.http11] (MSC service thread 1-2) JBWEB003001: Coyote HTTP/1.1 initializing on : http-host1/192.168.122.1:8080
17:17:52,222 INFO [org.apache.coyote.http11] (MSC service thread 1-2) JBWEB003000: Coyote HTTP/1.1 starting on: http-host1/192.168.122.1:8080
17:17:55,284 INFO [org.infinispan.server.endpoint] (MSC service thread 1-2) JDGS010000: HotRodServer starting
17:17:55,317 INFO [org.infinispan.server.endpoint] (MSC service thread 1-2) JDGS010001: HotRodServer listening on 192.168.122.1:11222
17:17:55,961 INFO [org.infinispan.server.endpoint] (MSC service thread 1-1) JDGS010000: WebSocketServer starting
17:17:55,970 INFO [org.infinispan.server.endpoint] (MSC service thread 1-1) JDGS010001: WebSocketServer listening on 192.168.122.1:8181
17:17:57,931 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-2) ISPN000128: Infinispan version: Infinispan ‘Infinium’ 6.0.0.Alpha2
17:17:59,385 INFO [org.infinispan.jmx.CacheJmxRegistration] (MSC service thread 1-2) ISPN000031: MBeans were successfully registered to the platform MBean server.
17:17:59,394 INFO [org.jboss.as.clustering.infinispan] (MSC service thread 1-2) JBAS010281: Started default cache from local container
17:18:00,381 INFO [org.infinispan.jmx.CacheJmxRegistration] (MSC service thread 1-2) ISPN000031: MBeans were successfully registered to the platform MBean server.
17:18:00,388 INFO [org.jboss.as.clustering.infinispan] (MSC service thread 1-2) JBAS010281: Started jboss-web-policy cache from security container
17:18:00,387 INFO [org.infinispan.jmx.CacheJmxRegistration] (MSC service thread 1-1) ISPN000031: MBeans were successfully registered to the platform MBean server.
17:18:00,396 INFO [org.jboss.as.clustering.infinispan] (MSC service thread 1-1) JBAS010281: Started other cache from security container
17:18:00,474 INFO [org.infinispan.jmx.CacheJmxRegistration] (MSC service thread 1-2) ISPN000031: MBeans were successfully registered to the platform MBean server.
17:18:00,479 INFO [org.jboss.as.clustering.infinispan] (MSC service thread 1-2) JBAS010281: Started memcachedCache cache from local container
17:18:00,488 INFO [org.infinispan.server.endpoint] (MSC service thread 1-2) JDGS010000: REST starting
17:18:00,495 INFO [org.infinispan.jmx.CacheJmxRegistration] (MSC service thread 1-1) ISPN000031: MBeans were successfully registered to the platform MBean server.
17:18:00,499 INFO [org.jboss.as.clustering.infinispan] (MSC service thread 1-1) JBAS010281: Started namedCache cache from local container
17:18:00,506 INFO [org.infinispan.server.endpoint] (MSC service thread 1-1) JDGS010000: MemcachedServer starting
17:18:00,511 INFO [org.infinispan.server.endpoint] (MSC service thread 1-1) JDGS010001: MemcachedServer listening on 192.168.122.1:11211
17:18:01,501 INFO [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on 127.0.0.1:9999
17:18:01,513 INFO [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on 192.168.122.1:4447
17:18:02,783 INFO [org.infinispan.server.endpoint] (MSC service thread 1-2) JDGS010002: REST mapped to /rest
17:18:03,018 INFO [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
17:18:03,024 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
17:18:03,029 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss Infinispan Server 6.0.0.Alpha2 (AS 7.2.0.Final) started in 23314ms – Started 92 of 130 services (38 services are passive or on-demand)

Configurando o Cliente

Crie um novo projeto Java no Eclipse: File –> New –> Java Project:

project

InfinispanHotRodClient.java

package com.infinispan;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.client.hotrod.RemoteCacheManager;

public class InfinispanHotRodClient {

    public static void main(String[] args) { 
        RemoteCacheManager rcm = new RemoteCacheManager("192.168.122.1");
        RemoteCache rc = rcm.getCache();

        String key = "myKey";

        // Storing data
        rc.put(key, "myValue");

        // Retrieving data
        System.out.printf("Value of key %s is %s", key, rc.get(key));
    }
}

Adicionando as bibliotecas do Infinipan no Cliente

Clique com o direito em cima do projeto –> Build Path –> Configure Build Path: 

Na próxima janela clique no botão Add Library –> User Library –> Next –> User Libraries –> New:

Screenshot from 2013-08-06 21:17:53

Clique no botão Add External JARs… 

Screenshot from 2013-08-06 21:23:15

Selecione todos os jars do diretório /opt/infinispan-server-6.0.0.Alpha2/client/hotrod/java: 

  • commons-pool-1.6.jar
  • infinispan-client-hotrod-6.0.0.Alpha2.jar
  • infinispan-commons-6.0.0.Alpha2.jar
  • jboss-logging-3.1.1.GA.jar
  • jboss-marshalling-1.3.15.GA.jar
  • jboss-marshalling-river-1.3.15.GA.jar

Executando o cliente

Execute a classe Java com o seguinte comando:

Ctrl + F11

Saída no console

Aug 6, 2013 9:29:09 PM org.infinispan.client.hotrod.RemoteCacheManager start
INFO: ISPN004021: Infinispan version: 6.0.0.Alpha2
Value of key myKey is myValue


2 Comentários on “Infinispan – Remote Client-Server no protocolo Hot Rod”

  1. Raul disse:

    Para desabilitar o SELinux em shell corrente, primeiro você deveria executar :
    # setenforce 0

    E para deixar isto de maneira persistente :

    # vi /etc/selinux/config
    selinux=permissive # SELinux (Modo Passivo / Só log e o serviço não foi desabilitado) *Recomendado para este exemplo.

    selinux=disabled # SELinux (Desabilitado do Kernel)
    ou

    Se o modo ‘disabled’ foi o selecionado :
    Desabilite os serviços com :
    # for svcs in setroubleshoot mcstrans restorecond ; do chkconfig $svcs off ; done


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s