Để programetically truy cập số liệu thống kê từ xa JVM (thông số hệ thống JVM, statististics Chủ đề, thông tin Memomy, Thông tin GC và các thông tin khác), JMX có thể được sử dụng. Đối với điều đó, JVM từ xa phải cho phép kết nối JMX (Check this on how to activate JMX in remote JVM). Về cơ bản bạn cần sau thông số -D được đặt trong JVM từ xa với giá trị thích hợp:
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=127.0.0.1
Khi thiết lập ở trên được thực hiện, kết nối với cổng JMX và nhận được thông tin MBean khác nhau từ các máy chủ từ xa từ ứng dụng của bạn: Sau đây là một số mã mẫu:
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + HOST + ":" + PORT + "/jmxrmi");
JMXConnector jmxConnector = JMXConnectorFactory.connect(url);
MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
Với điều này mbeanServerConnection
, bạn có thể truy cập các bean được quản lý khác và nhận thông tin bắt buộc từ hạt MX. Đối với các thuộc tính hệ thống, bạn cần lấy bean RuntimeMXBean
và gọi getSystemProperties()
để nhận tất cả các tham số hệ thống.
Bạn có ý nghĩa gì với JVM của bên thứ ba? Bạn đang đề cập đến một JVM mà bạn không thể chạy mã của bạn? – adarshr
Chỉ cần hỏi chương trình đang chạy trong JVM của bên thứ ba để biết thông tin –
Vâng, ý tôi là .. Tôi không thể chạy mã java của tôi trên JVM đó. Cách khác, có thể kết nối với một JVM cụ thể và chạy mã java của bạn trên đó không? – user1131528