Admin
27.09.2016

Была поставлена задача подключения к jvm локальной/удаленной, для сбора информации. В интернете нашел только на английском языке, так что думаю на русском будет интересно)
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.MBeanServerConnection;
import java.net.MalformedURLException;
import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import static java.lang.management.ManagementFactory.MEMORY_MXBEAN_NAME;
public class TestJMX {
public static void main(String[] args) {
String url = «service:jmx:rmi:///jndi/rmi://localhost:10098/jmxrmi»;
try {
JMXServiceURL target = new JMXServiceURL(url);
JMXConnector jmxConnector = JMXConnectorFactory.connect(target);
MBeanServerConnection remote = jmxConnector.getMBeanServerConnection();
MemoryMXBean bean = ManagementFactory.newPlatformMXBeanProxy(remote, MEMORY_MXBEAN_NAME, MemoryMXBean.class);
} catch (MalformedURLException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (InterruptedException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
}
Самое интересное это адрес по которому и происходит подключение к приложению:
стандартное шаблонная часть, с указанием протоколов и технологий подключения.
вот здесь и происходит указание адреса и порта приложения. Так как любое приложение запускающее свою jvm резервирует порт, по которому к нему можно будет обращаться, он является обязательным параметром идентификации приложении среди множества java приложений запущенных на локальной/удаленной машине.
указание с какой целью мы подключаемся к приложению, конкретно здесь происходит подключением за тем, что бы собрать данные о занимаемой памяти. аналог jconsole.
ЗЫ: если где-то увидели не точности укажите исправлю)