/** * Creates monitored proxy instance for underlying cache with given parameters. * * @param instance underlying cache. * @param statisticsAccuracy Ehcache statistics accuracy. * @param category category for related stats producer. * @param subsystem subsystem for related stats producer. * @param updatePeriod period (in milliseconds) in which stats values will be updated. */ public MonitoredEhcache( Ehcache instance, int statisticsAccuracy, String category, String subsystem, long updatePeriod) { super(instance); underlyingCache.setStatisticsAccuracy(statisticsAccuracy); underlyingCache.setStatisticsEnabled(true); cacheProducer = new OnDemandStatsProducer<EhcacheStats>( underlyingCache.getName(), category, subsystem, new EhcacheStatsFactory()); ProducerRegistryFactory.getProducerRegistryInstance().registerProducer(cacheProducer); PeriodicStatsUpdater.addTask( new TimerTask() { @Override public void run() { if (underlyingCache.isStatisticsEnabled()) { updateStats(); } } }, updatePeriod); }
static { onDemandProducer = new OnDemandStatsProducer<SessionCountStats>( "SessionCountByTld", "web", IStatsProducer.SUBSYSTEM_BUILTIN, SessionCountFactory.DEFAULT_INSTANCE); ProducerRegistryFactory.getProducerRegistryInstance().registerProducer(onDemandProducer); }