Integer vmid = Integer.valueOf(vmd.id()); if (!map.containsKey(vmid) && !existingVmMap.containsKey(vmid)) new LocalVirtualMachine(vmid.intValue(), vmd.displayName(), attachable, address));
public String getId() { return descriptor.id(); }
vm = vmd.provider().attachVirtualMachine(vmd.id()); String display = vmd.displayName().trim().isEmpty() ? "Unknown" : vmd.displayName(); log("JVM%sPID: %s Display: %s", vmd.id().equals(MYPID) ? " (Me) " : " ", vmd.id(), display); String connectorAddress = vm.getAgentProperties().getProperty("com.sun.management.jmxremote.localConnectorAddress", null); if(connectorAddress!=null) { log("\tConnector Installed at [%s]", connectorAddress); } else { log("Cannot find the agent jar for JVM [%s] at [%s]", vmd.id(), javaHome); log("Attaching to JVM [%s]...", vmd.id()); JMXServiceURL jmxUrl = new JMXServiceURL(connectorAddress); JMXConnector connector = null;
public String getDisplayName() { return descriptor.displayName(); }
throws AttachNotSupportedException, IOException return vmd.provider().attachVirtualMachine(vmd);
@Override public boolean isProcessAlive(final int pid) { isTrue(pid > 0, "Invalid pid '" + pid + "' specified"); for (VirtualMachineDescriptor vm : VirtualMachine.list()) { if (vm.id().equals(String.valueOf(pid))) { return true; // found the vm } } return false; }
@Override public List<VMDescriptorDTO> listLocalJVMs() { List<VMDescriptorDTO> rc = new ArrayList<>(); try { List<VirtualMachineDescriptor> processes = VirtualMachine.list(); for (VirtualMachineDescriptor process : processes) { VMDescriptorDTO dto = new VMDescriptorDTO(process); dto.setAgentUrl(agentStatus(dto.getId())); String alias = getVmAlias(process.displayName(), dto.getAgentUrl()); dto.setAlias(alias); // provide fine grained url details if (dto.getAgentUrl() != null) { try { URL url = new URL(dto.getAgentUrl()); dto.setScheme(url.getProtocol()); dto.setHostname(url.getHost()); dto.setPort(url.getPort()); dto.setPath(url.getPath()); } catch (Exception e) { // ignore } } rc.add(dto); } } catch (Exception e) { LOG.warn("Failed to get local JVM processes due to: {}", e.getMessage()); throw new RuntimeException("Failed to get local JVM processes due to: " + e.getMessage(), e); } return rc; }
throws AttachNotSupportedException, IOException return vmd.provider().attachVirtualMachine(vmd);
String name = ... List vms = VirtualMachine.list(); for (VirtualMachineDescriptor vmd: vms) { if (vmd.displayName().equals(name)) { VirtualMachine vm = VirtualMachine.attach(vmd.id()); String agent = ... vm.loadAgent(agent); // ... } }
@Override public String getProcessID() { return vmd.id(); }
public String getDisplayName() { return vmd.displayName(); }
String name = ... List vms = VirtualMachine.list(); for (VirtualMachineDescriptor vmd: vms) { if (vmd.displayName().equals(name)) { VirtualMachine vm = VirtualMachine.attach(vmd.id()); String agent = ... vm.loadAgent(agent); // ... } }
public String getId() { return vmd.id(); }
@Override public int compare(VirtualMachineDescriptor o1, VirtualMachineDescriptor o2) { return o1.displayName().compareTo(o2.displayName()); } });
private String getProcesssName(long pid) { List<VirtualMachineDescriptor> vms = getVmList(); for(VirtualMachineDescriptor vm: vms) { if (vm.id().equals(String.valueOf(pid))) { return vm.displayName(); } } return ""; }
for (final VirtualMachineDescriptor vmd : VirtualMachine.list()) { int pid; try { if ((pid = Integer.parseInt(vmd.id())) == myPidOfInterest) { String address = ConnectorAddressLink.importFrom(pid))); MBeanServerConnection connection = JMXConnectorFactory.connect(address).getMBeanServerConnection(); ThreadMXBean threadMxBean = ManagementFactory.newPlatformMXBeanProxy(connection, "java.lang:type=Threading", ThreadMXBean.class); // Now you have the ThreadMXBean you can find out all kinds of things about the threads for (long threadId : threadMxBean.getAllThreadIds()) { System.out.println(threadMxBean.getThreadInfo(threadId)); } } } catch (NumberFormatException e) { // ignore } }