如何远程查看和编辑Infinispan缓存数据
我在WildFly 8.2服务器中嵌入了Infinispan缓存。
我在添加了
standalone.xml
:
…并像这样注入缓存容器:
@Singleton @Startup public class CacheManager { @Resource(lookup = "java:jboss/infinispan/container/mycache") private CacheContainer container; . . . . }
我可以在我的应用程序中使用缓存。
但是,要求是使用任何缓存监视API远程查看/编辑/删除缓存数据。
通过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