Skip to content

Instantly share code, notes, and snippets.

@sammso
Forked from adevleeschauwer/listCacheMBeanInfo.js
Created May 19, 2016 10:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sammso/7c7d55e9cc1ef31466fbcecfd9828141 to your computer and use it in GitHub Desktop.
Save sammso/7c7d55e9cc1ef31466fbcecfd9828141 to your computer and use it in GitHub Desktop.
var MIN_MISS_PERCENTAGE = 10;
var fields = [ "CacheType", ".Bean", "ObjectCount", "CacheHits", "CacheMisses", "CacheMissPercentage" ];
var padding30 = Array(30).join(' '), padding12 = Array(12).join(' '), padding20 = Array(20).join(' ');
var platformMBeanServer = Packages.java.lang.management.ManagementFactory.getPlatformMBeanServer();
function printInColumns(values) {
var beanName = values[1];
out.println(values[0].slice(0, 9) + " "
+ (beanName.slice(beanName.lastIndexOf('.') + 1) + padding30).slice(0, 30)
+ (padding12 + values[2]).slice(-12)
+ (padding12 + values[3]).slice(-12)
+ (padding12 + values[4]).slice(-12)
+ (padding20 + values[5]).slice(-20)
+ " " + beanName);
}
function liferayStatisticBeans() {
var result = [];
var names = platformMBeanServer.queryNames(new Packages.javax.management.ObjectName("net.sf.ehcache:*"), null);
for (var iterator = names.iterator(); iterator.hasNext(); ) {
var name = iterator.next();
if (name.getCanonicalName().endsWith("CacheStatistics")) {
result[result.length] = name;
}
}
return result;
}
function displayLiferayCaches(names) {
printInColumns(fields);
for (var x = 0; x < names.length; x++) {
var cachesStats = [];
var object = platformMBeanServer.getAttribute(names[x], fields[5]);
var misspercentage = Packages.java.lang.Math.round(object.doubleValue() * 100);;
if (misspercentage > MIN_MISS_PERCENTAGE) {
cachesStats[5] = misspercentage;
var name = names[x].getCanonicalName().slice("net.sf.ehcache:CacheManager=".length);
cachesStats[0] = name.slice(0, name.indexOf(','));
var cacheBean = name.slice(name.indexOf(",name=") + 6);
cachesStats[1] = cacheBean.slice(0, cacheBean.length - ",type=CacheStatistics".length);
for (var i = 2; i < 5 ; i++) {
var object = platformMBeanServer.getAttribute(names[x], fields[i]);
if (object instanceof Packages.java.lang.Double) {
cachesStats[i] = Packages.java.lang.Math.round(object.doubleValue() * 100);
} else {
cachesStats[i] = object;
}
}
printInColumns(cachesStats);
}
}
}
var names = liferayStatisticBeans();
if (names.length > 0) {
displayLiferayCaches(names);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment