Rev 3297 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****/package in.shop2020.serving.controllers;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import net.sf.ehcache.Cache;import net.sf.ehcache.CacheManager;import net.sf.ehcache.Statistics;import org.apache.log4j.Logger;import org.apache.struts2.convention.annotation.InterceptorRef;import org.apache.struts2.convention.annotation.InterceptorRefs;/*** @author vikas**/@InterceptorRefs({@InterceptorRef("defaultStack")})public class CacheAdminController {private static final long serialVersionUID = -6730428402950686583L;public static final String NAME_KEY = "name";public static final String DISK_STORE_KEY = "disk_store_size";public static final String EVICTION_POLICY_KEY = "eviction_policy";public static final String MEMORY_STORE_KEY = "memory_store_size";public static final String OFF_HEAP_STORE_KEY = "off_heap_store_size";public static final String SEARCHES_PER_SEC_KEY = "searches_per_second";public static final String STATUS_KEY = "status";public static final String AVG_GET_TIME_KEY = "avg_get_time";public static final String AVG_SEARCH_TIME_KEY = "avg_search_time";public static final String CACHE_HITS_KEY = "cache_hits";public static final String CACHE_MISSES_KEY = "cache_misses";public static final String CACHE_HIT_RATIO_KEY = "cache_hit_ratio";public static final String EVICTION_COUNT_KEY = "eviction_count";private static Logger log = Logger.getLogger(CacheAdminController.class);private List<Map<String, String>> cacheStats;private String cacheName;public String index() {CacheManager cacheManager = CacheManager.create();String[] cacheNames = cacheManager.getCacheNames();cacheStats = new ArrayList<Map<String,String>>();for (String cacheName : cacheNames) {Map<String, String> cacheStat = new HashMap<String, String>();Cache cache = cacheManager.getCache(cacheName);cacheStat.put(NAME_KEY, cache.getName());cacheStat.put(EVICTION_POLICY_KEY, cache.getMemoryStoreEvictionPolicy().getName());cacheStat.put(MEMORY_STORE_KEY, Long.toString(cache.getMemoryStoreSize()));cacheStat.put(OFF_HEAP_STORE_KEY, Long.toString(cache.getOffHeapStoreSize()));cacheStat.put(DISK_STORE_KEY, Integer.toString(cache.getDiskStoreSize()));cacheStat.put(STATUS_KEY, cache.getStatus().toString());Statistics stat = cache.getStatistics();Long hits = stat.getCacheHits();Long misses = stat.getCacheMisses();Double hitratio = 0d;if (hits > 0) {hitratio = ((double)hits)/(hits + misses)*100;}cacheStat.put(AVG_GET_TIME_KEY, Float.toString(stat.getAverageGetTime()));cacheStat.put(AVG_SEARCH_TIME_KEY, Float.toString(stat.getAverageSearchTime()));cacheStat.put(CACHE_HITS_KEY, Long.toString(hits));cacheStat.put(CACHE_MISSES_KEY, Long.toString(misses));cacheStat.put(CACHE_HIT_RATIO_KEY, Long.toString(hitratio.longValue()));cacheStat.put(EVICTION_COUNT_KEY, Long.toString(stat.getEvictionCount()));cacheStat.put(SEARCHES_PER_SEC_KEY, Long.toString(stat.getSearchesPerSecond()));cacheStats.add(cacheStat);log.info(stat);}return "index";}public void destroy() {CacheManager cacheManager = CacheManager.create();for (String name : cacheManager.getCacheNames()) {if (name.equals(cacheName)) {cacheManager.getCache(name).removeAll();}}}public List<Map<String, String>> getCacheStats() {return cacheStats;}public void setId(String name) {cacheName = name;}}