如何远程查看和编辑Infinispan缓存数据

我在WildFly 8.2服务器中嵌入了Infinispan缓存。

我在添加了standalone.xml

     

…并像这样注入缓存容器:

 @Singleton @Startup public class CacheManager { @Resource(lookup = "java:jboss/infinispan/container/mycache") private CacheContainer container; . . . . } 

我可以在我的应用程序中使用缓存。

但是,要求是使用任何缓存监视API远程查看/编辑/删除缓存数据。

通过jconsole,我可以看到缓存信息,但不能看到缓存的数据。

jconsole屏幕

如何远程访问缓存?

首先,我对必须选择较少旅行的道路表示哀悼。

可以远程访问嵌入式Infinispan缓存。 您需要在服务器进程中设置org.infinispan.server.hotrod.HotRodServer ,实质上是对预先打包的Infinispan Server分发进行逆向工程。 此方法未记录,因此请自担风险

您需要这些依赖项:

  org.infinispan infinispan-server-hotrod 7.1.0.Final   org.infinispan infinispan-client-hotrod 7.1.0.Final   org.infinispan infinispan-remote-query-server 7.1.0.Final  

配置示例缓存( infinispan.xml ):

        

服务器进程:

 // 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 cache = cacheManager.getCache("dumpster", true); cache.put("K", "V"); System.out.println(cache.get("K")); // V 

客户流程:

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