是的,使用Ehcache,您可以配置缓存并仅通过Java代码(没有XML配置)来检索其大小。集成所有内容的确切方法取决于您的特定体系结构。我将假设Jersey从事API事务,Guice进行依赖注入。
定义缓存
通过依赖项注入使您的缓存管理器可用。这可以通过Guice模块完成:
@Provides@SingletonCacheManager provideCacheManager() { CacheManager cacheManager = CacheManager.create(); CacheConfiguration config = new CacheConfiguration("mycache", 100) .timeToLiveSeconds(60) .timeToIdleSeconds(30) .statistics(true); Cache myCache = new Cache(config); cacheManager.addCacheIfAbsent(myCache); return cacheManager;}
请注意,已打开的统计信息
mycache。
同样,使用缓存可以完全用Java代码完成,但要取决于您的体系结构和设计。通常,我使用方法拦截(通过AOP)来执行此 *** 作,但这是另一个主题。
通过REST API获取缓存统计信息
鉴于您
CacheManager可以通过依赖项注入进行访问,则可以将其连接到REST端点并允许访问缓存统计信息:
@Path("stats")@Produces("text/plain")public class StatsResource { @Inject private CacheManager cacheManager; @GET public String stats() { StringBuffer sb = StringBuffer(); for (String name : cacheManager.getCacheNames()) { Cache cache = cacheManager.getCache(name); Statistics stats = cache.getStatistics(); sb.append(String.format("%s: %s objects, %s hits, %s missesn", name, stats.getObjectCount(), stats.getCacheHits(), stats.getCacheMisses() )); } return sb.toString(); }}
现在,您可以通过REST调用获取有关缓存的信息:
GET /statsHTTP/1.1 200 OKContent-Type: text/plain; charset=utf-8mycache: 8 objects, 59 hits, 12 misses
JMX呢?
使用Ehcache可以很容易地在MBean服务器上注册缓存管理器。可以用Java代码完成。更新您的Guice模块,将您注册
cacheManager到系统
MBeanServer:
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();ManagementService.registerMBeans(cacheManager, mBeanServer, false, false, false, true);
现在,您可以将JConsole附加到Java进程,并在MBean中找到缓存统计信息
net.sf.ehcache.CacheStatistics。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)