2015-04-09 4 views
6

Ho una cache Infinispan incorporata in un server WildFly 8.2.Come visualizzare e modificare i dati della cache Infinispan da remoto

ho aggiunto al standalone.xml all'interno <subsystem xmlns="urn:jboss:domain:infinispan:2.0">:

<cache-container name="mycache" default-cache="cachedb"> 
    <transport lock-timeout="600000" /> 
    <replicated-cache name="cachedb" batching="true" mode="SYNC" /> 
</cache-container> 

... e iniettato il contenitore della cache in questo modo:

@Singleton 
@Startup 
public class CacheManager { 

    @Resource(lookup = "java:jboss/infinispan/container/mycache") 
    private CacheContainer container; 
    . . . . 

} 

posso usare la cache nelle mie applicazioni.

Tuttavia, il requisito è visualizzare/modificare/eliminare i dati memorizzati nella cache in remoto utilizzando una delle API di monitoraggio della cache.

Tramite jconsole è possibile visualizzare le informazioni sulla cache, ma non i dati memorizzati nella cache.

jconsole screen

Come posso accedere alla cache da remoto?

+0

Hai pensato di utilizzare [Server Infinispan] (http://infinispan.org/docs/7.1.x/infinispan_server_guide/infinispan_server_guide.html)? –

+0

NO. Il requisito è incorporare infinispan nel server wildfly. –

+3

Quindi temo che sia tutto ciò che puoi fare. Accesso alla cache Infinispan in remoto disponibile solo con Infinispan Server. –

risposta

4

Prima di tutto, le mie condoglianze per dover scegliere la strada meno battuta.

È possibile accedere a una cache Infinispan integrata in remoto. È necessario impostare un org.infinispan.server.hotrod.HotRodServer nel processo del server, essenzialmente invertire la progettazione della distribuzione Infinispan Server preconfezionata. Questo approccio non è documentato, quindi procedi a tuo rischio e pericolo.

avete bisogno di queste dipendenze:

<dependency> 
    <groupId>org.infinispan</groupId> 
    <artifactId>infinispan-server-hotrod</artifactId> 
    <version>7.1.0.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.infinispan</groupId> 
    <artifactId>infinispan-client-hotrod</artifactId> 
    <version>7.1.0.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.infinispan</groupId> 
    <artifactId>infinispan-remote-query-server</artifactId> 
    <version>7.1.0.Final</version> 
</dependency> 

Configurare una cache esempio (infinispan.xml):

<infinispan> 
    <cache-container default-cache="default"> 
     <local-cache name="dumpster"> 
      <compatibility /> 
     </local-cache> 
    </cache-container> 
</infinispan> 

Il processo server:

// Start a cache manager as usual 
EmbeddedCacheManager cacheManager; 
try (InputStream in = ClassLoader.getSystemResourceAsStream("infinispan.xml")) { 
    cacheManager = new DefaultCacheManager(in); 
} 

// Start a server to allow remote access to the cache manager 
HotRodServerConfiguration serverConfig = new HotRodServerConfigurationBuilder() 
     .host("127.0.0.1").port(9999).build(); 
HotRodServer server = new HotRodServer(); 
server.start(serverConfig, cacheManager); 

// Start the example cache 
Cache<String, String> cache = cacheManager.getCache("dumpster", true); 
cache.put("K", "V"); 
System.out.println(cache.get("K")); // V 

Il processo client:

Configuration config = new ConfigurationBuilder().addServer() 
     .host("127.0.0.1").port(9999).build(); 
RemoteCacheManager cacheManager = new RemoteCacheManager(config); 
RemoteCache<String, String> cache = cacheManager.getCache("dumpster"); 
System.out.println(cache.get("K")); // V 
Problemi correlati