1、首先确保hostname绑定的不是localhost或者127.0.0.1、0.0.0.0,否则报
Could not bind /JStatRemoteHost to RMI Registry
2、然后找到远程机器java的jre的bin目录,添加文件jstatd.all.policy,内容是
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
3、启动jstatd,默认端口1099,使用参数-p可指定其它端口,执行此命令需要在jstatd.all.policy同级目录下
jstatd -J-Djava.security.policy=jstatd.all.policy
4、本机java jvisualvm程序添加远程连接,若报如下异常,请关闭本机防火墙。
java.rmi.NotBoundException: JStatRemoteHost
at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:166)
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:410)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:26
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:56
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$241(TCPTransport.java:683)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$1/425879439.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)