Skip to content

Use a long[] parameter? #15

@flaviolsousa

Description

@flaviolsousa

Code:

"use strict";
var jmx = require("jmx");

var client = jmx.createClient({
  host: "localhost",
  port: 9011
});

client.connect();
client.on("connect", function () {

  client.getAttribute("java.lang:type=Memory", "HeapMemoryUsage", function (data) {
    var used = data.getSync('used').longValue;
    var max = data.getSync('max').longValue;
    var percent = used / max;
    console.log("Threads used: " + used + " / " + max + " = " + percent.toFixed(2) + "%");
  });

  client.getAttribute("java.lang:type=Threading", "AllThreadIds", function (data) {
    console.log('data: ' + JSON.stringify(data));

    var ids = [data[0].longValueSync(), data[1].longValueSync()];
    console.log(Object.prototype.toString.call(ids) === "[object Array]"); // true
    console.log('ids[0].longValue: ', JSON.stringify(ids[0].longValue));
    console.log('ids: ', JSON.stringify(ids));

    client.invoke("java.lang:type=Threading", "getThreadInfo", [ids], ['long[]'], function (data) { // ????????????????
      console.log("Threading.getThreadInfo", JSON.stringify(data));
    });
  });

  client.setAttribute("java.lang:type=Memory", "Verbose", true, function () {
    console.log("Memory verbose on"); // callback is optional 
  });
});

Output:

PS C:\tmp\watch-jmx> node index.js
Threads used: 923329448 / 1048576000 = 0.88%
data: [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},
{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{
},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}
,{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},
{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]
true
ids.longValue:  "30285"
ids:  [30285,30284]
C:\tmp\watch-jmx\node_modules\jmx\lib\javaJmx.js:116
          value = java.newInstanceSync(className, value);
                       ^

Error: Could not create class long[]
java.lang.NoClassDefFoundError: long[]
Caused by: java.lang.ClassNotFoundException: long[]
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

    at Error (native)
    at C:\tmp\watch-jmx\node_modules\jmx\lib\javaJmx.js:116:24
    at Array.forEach (native)
    at JavaJmx.jsParams2JavaParams (C:\tmp\watch-jmx\node_modules\jmx\lib\javaJmx.js:111:15)
    at JavaJmx.invoke (C:\tmp\watch-jmx\node_modules\jmx\lib\javaJmx.js:133:40)
    at Client.invoke (C:\tmp\watch-jmx\node_modules\jmx\lib\client.js:61:16)
    at C:\tmp\watch-jmx\index.js:31:12
    at C:\tmp\watch-jmx\node_modules\jmx\lib\adapters\javaReflection.js:49:7
    at C:\tmp\watch-jmx\node_modules\jmx\lib\adapters\javaReflection.js:43:7

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions