【问题标题】:How to view and edit Infinispan cached data remotely如何远程查看和编辑 Infinispan 缓存数据
【发布时间】:2015-06-14 08:06:48
【问题描述】:

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

我在<subsystem xmlns="urn:jboss:domain:infinispan:2.0">里面添加了standalone.xml

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

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

@Singleton
@Startup
public class CacheManager {

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

}

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

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

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

如何远程访问缓存?

【问题讨论】:

  • 您考虑过使用Infinispan Server 吗?
  • 没有。要求是在wildfly服务器中嵌入infinispan。
  • 那恐怕你能做的就这么多了。远程访问 Infinispan 缓存仅适用于 Infinispan 服务器。

标签: java caching jboss wildfly-8 infinispan


【解决方案1】:

首先,我对不得不选择少有人走的路表示哀悼。

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

你需要这些依赖:

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

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

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

服务器进程:

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

客户端进程:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-04
    • 2017-03-26
    • 2014-05-10
    • 2016-09-20
    • 1970-01-01
    • 2015-04-28
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多