我在使用jmx包与来自nodeJs的Java应用程序进行桥接和通信时遇到了问题(参见https://www.npmjs.com/package/jmx)。我的代码是这样的:
var jmx = require('jmx');
var jmxTester = function(host, port) {
var jmxrmi = 'service:jmx:rmi:///jndi/rmi://' + host + ':' + port + '/jmxrmi';
winston.debug('jmxrmi is: ', jmxrmi);
var client = jmx.createClient({
service: jmxrmi
});
client.on('error', function (e) {
winston.silly('Error: JMX at %s:%d', host, port, e);
client.disconnect();
});
client.on('disconnect', function (err) {
winston.silly('Successfully disconnected from client.');
});
client.on('connect', function() {
winston.silly('Successfully connected to client.');
client.disconnect();
});
client.connect();
}
module.exports = jmxTester;将其与以下方面结合使用:
var jmxTester = require('jmxTester');
jmxTester('localhost', 20000);遇到了几个问题,这与我在localhost:2000上运行一个jmx或者如果我没有运行任何东西这一事实无关。
有人能帮我找出如何正确使用nodeJs中的jmx吗?因此,我得到一个干净的连接和断开(在错误和没有任何错误)。
以下是一些样本输出:
localhost:2000上运行JMX应用程序(之后进行两个文件更改,就不会重新启动):
2016-08-04T17:20:06.423Z -调试: jmxrmi是: service:jmx:rmi:///jndi/rmi://localhost:2000/jmxrmi 2016-08-04T17:20:06.433Z -愚蠢:成功连接到客户端。2016-08-04T17:20:06.434Z -愚蠢:成功从客户端断开连接。没有恶魔因为改变而重新开始。没有恶魔因为改变而重新开始。localhost:2000上运行JMX应用程序(之后执行两个文件更改,就不会重新启动):
2016-08-04T17:34:28.384Z -调试: jmxrmi是: service:jmx:rmi:///jndi/rmi://localhost:2000/jmxrmi 2016-08-04T17:34:28.390Z -愚蠢:错误: JMX在本地主机:2000{[错误:运行静态方法java.io.IOException:未能检索RMIServer存根: javax.naming.ServiceUnavailableException根异常是java.rmi.ConnectException:连接拒绝宿主: localhost;嵌套的例外是: javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369) at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法处的java.net.ConnectException: sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498)引起: javax.naming.ServiceUnavailableException根异常是java.rmi.ConnectException:连接拒绝主机: localhost;嵌套的例外是:在com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:122) at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:205) at javax.naming.InitialContext.lookup(InitialContext.java:417) at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1955) at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1922)上拒绝连接在javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:287) .还有5.因为改变而重新开始..。没有恶魔因为改变而重新开始。发布于 2016-08-05 20:23:30
我找到了解决我的问题的方法,这有两个原因,我很乐意与其他人分享这一页:
process.on之前,java被“使用”:
var java =需要量(‘java’);java.import("javax.management.remote.JMXConnectorFactory");希望这能帮到别人!
https://stackoverflow.com/questions/38773982
复制相似问题