import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.SimpleBindings;
import com.intrbiz.bergamot.check.jmx.JMXChecker;
import com.intrbiz.scripting.RestrictedScriptEngineManager;
public class JMXExampleJS
{
public static void main(String[] args) throws Exception
{
JMXChecker checker = new JMXChecker();
//
ScriptEngineManager factory = new RestrictedScriptEngineManager();
// setup the script engine
ScriptEngine script = factory.getEngineByName("nashorn");
SimpleBindings bindings = new SimpleBindings();
bindings.put("jmx", checker.createContext((t) -> {
t.printStackTrace();
}));
script.setBindings(bindings, ScriptContext.ENGINE_SCOPE);
// execute
script.eval(
"jmx.connect('127.0.0.1', 5010, function(con) {" +
" print('Connected');" +
" var mbeans = con.getMBeans();" +
" for (var i = 0; i < mbeans.length; i++) {" +
" var theBean = mbeans[i];" +
" print(theBean.getName());" +
" for (var j = 0; j < theBean.getAttributes().length; j++) {" +
" print(' Attr: ' + theBean.getAttributes()[j].getName() + ' :: ' + theBean.getAttributes()[j].getType());" +
" try {" +
" print(' -> ' + theBean.getAttributes()[j].getValue());" +
" } catch(e) {" +
" print(' -> Error: ' + e);" +
" }" +
" }" +
" }" +
" print();" +
" var memBean = con.getMBean('java.lang:type=Memory');" +
" for (var i = 0; i < memBean.getAttributes().length; i++) {" +
" print('Attr: ' + memBean.getAttributes()[i].getName() + ' :: ' + memBean.getAttributes()[i].getType());" +
" print(' -> ' + memBean.getAttributes()[i].getValue());" +
" }" +
" print(memBean.getAttributeValue('NonHeapMemoryUsage').committed);" +
" for (var i = 0; i < memBean.getOperations().length; i++) {" +
" print('Oper: ' + memBean.getOperations()[i].getName() + ' ' + memBean.getOperations()[i].getParameters().length);" +
" if (memBean.getOperations()[i].getParameters().length == 0) {" +
" print(' Invoke: ' + memBean.getOperations()[i].invoke());" +
" }" +
" }" +
"});"
);
}
}