2015-04-09 7 views
6

Mam pamięć podręczną Infinispan osadzoną w serwerze WildFly 8.2.Jak zdalnie przeglądać i edytować dane buforowane Infinispan?

dodałem do standalone.xml wewnątrz <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> 

... i wstrzykuje pojemnik cache tak:

@Singleton 
@Startup 
public class CacheManager { 

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

} 

mogę korzystać z pamięci podręcznej w moich zastosowaniach.

Wymaganiem jest jednak zdalne przeglądanie/edycja/kasowanie danych w pamięci podręcznej za pomocą dowolnego z interfejsów API do monitorowania pamięci podręcznej.

Przez jconsole Widzę informacje o pamięci podręcznej, ale nie dane z pamięci podręcznej.

jconsole screen

Jak mogę uzyskać dostęp do pamięci podręcznej zdalnie?

+0

Czy rozważałeś użycie [Serwera Infinispan] (http://infinispan.org/docs/7.1.x/infinispan_server_guide/infinispan_server_guide.html)? –

+0

NIE. Wymagane jest osadzenie infinispan na serwerze Wildfly. –

+3

Wtedy obawiam się, że to wszystko, co możesz zrobić. Zdalny dostęp do pamięci podręcznej Infinispan jest możliwy tylko z serwerem Infinispan. –

Odpowiedz

4

Po pierwsze, moje kondolencje, że musieli wybrać mniej podróżowaną drogę.

Dostęp do wbudowanej pamięci podręcznej Infinispan można uzyskać zdalnie. Musisz skonfigurować org.infinispan.server.hotrod.HotRodServer w swoim procesie serwera, zasadniczo odwracając inżynierię dystrybucji paczkomatowej Infinispan Server. To podejście nie jest udokumentowane, więc kontynuuj na własne ryzyko.

Trzeba te zależności:

<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> 

Konfiguruj przykładem cache (infinispan.xml):

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

Proces serwera:

// 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 

Proces klient:

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 
Powiązane problemy