JMX sunucularımıza program aracılığıyla bağlanmak için aşağıdaki gibi bir şey kullanırız. Sonra da sunucuya bağlanabilirsiniz
-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
belirli bir adrese bağlamak için aşağıdaki VM argümanlar eklemeniz gerekir: Aşağıdaki argümanlar gibi bir şey ile sunucu çalışmalıdır aşağıdaki gibi JMX istemci kodu kullanarak: Biz de programlama yoluyla VM argümanlar dışında belli bir porta kendisini yayınlayabilirsiniz koduna sahip ama bu daha fu
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();
}
ihtiyacım var bence. "Pid tarafından" bağlantı açısından
, siz bildiğim kadarıyla Java karadan bunu yapmak için java6 kullanıyor olmanız gerekir. Aşağıdaki kodu kullanmadım ama işe yarıyor gibi görünüyor.
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();
}
}
Ben ettik da kolay bir JMX sunucuyu başlatın ve uzak müşterilerine fasulye yayınlamayı kolaylaştırır SimpleJMX package yazarı.
// 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();
O da ama şu anda PID süreçleri bulmak için herhangi bir mekanizma olmadığı bir istemci arayüzü var - sadece konak/port kombinasyonları desteklenmektedir (6/2012 olarak).
Hem ana program ve JMX istemci tek başına programlar (Java SE) bulunmaktadır. – mjafari
Ayrıca bkz. Http://www.pongasoft.com/blog/yan/entry/connecting_to_a_local_vm/ –