우리는 JMX 서버에 프로그래밍 방식으로 연결하기 위해 다음과 같은 것을 사용합니다. 그런 다음 서버에 연결할 수
-Djava.rmi.server.hostname=A.B.C.D
:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.ssl=false
특정 주소로 바인딩하려면 다음과 같은 VM 인수를 추가해야합니다 : 당신은 다음 인수와 같은 뭔가 서버를 실행해야합니다 다음과 같이 JMX 클라이언트 코드를 사용하여 : 우리는 또한 프로그래밍 방식 VM 인수 이외의 특정 포트에 자신을 게시 할 수있는 코드를 가지고 있지만 더 푸의
String host = "localhost"; // or some A.B.C.D
int port = 1234;
String url = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";
JMXServiceURL serviceUrl = new JMXServiceURL(url);
JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceUrl, null);
try {
MBeanServerConnection mbeanConn = jmxConnector.getMBeanServerConnection();
// now query to get the beans or whatever
Set<ObjectName> beanSet = mbeanConn.queryNames(null, null);
...
} finally {
jmxConnector.close();
}
네가 필요 이상으로 생각한다.
"pid로"연결하는 관점에서, 내가 아는 한 Java6에서 Java6을 사용해야합니다. 다음 코드는 사용하지 않았지만 제대로 작동하는 것 같습니다.
List<VirtualMachineDescriptor> vms = VirtualMachine.list();
for (VirtualMachineDescriptor desc : vms) {
VirtualMachine vm;
try {
vm = VirtualMachine.attach(desc);
} catch (AttachNotSupportedException e) {
continue;
}
Properties props = vm.getAgentProperties();
String connectorAddress =
props.getProperty("com.sun.management.jmxremote.localConnectorAddress");
if (connectorAddress == null) {
continue;
}
JMXServiceURL url = new JMXServiceURL(connectorAddress);
JMXConnector connector = JMXConnectorFactory.connect(url);
try {
MBeanServerConnection mbeanConn = connector.getMBeanServerConnection();
Set<ObjectName> beanSet = mbeanConn.queryNames(null, null);
...
} finally {
jmxConnector.close();
}
}
I했습니다 또한 쉽게 JMX 서버를 시작하고 원격 클라이언트에 콩을 게시 할 수 있습니다 SimpleJMX package의 저자.
// create a new server listening on port 8000
JmxServer jmxServer = new JmxServer(8000);
// start our server
jmxServer.start();
// register our lookupCache object defined below
jmxServer.register(lookupCache);
jmxServer.register(someOtherObject);
// stop our server
jmxServer.stop();
그것은뿐만 아니라하지만 지금은 PID에 의해 프로세스를 찾을 수있는 메커니즘이없는 클라이언트 인터페이스를 가지고있다 - 단지 호스트/포트 조합이 지원됩니다 (2,012분의 6 년).
모두 메인 프로그램과 JMX 클라이언트가 독립 실행 형 프로그램 (자바 SE를)입니다. – mjafari
http://www.pongasoft.com/blog/yan/entry/connecting_to_a_local_vm/ –