private static VirtualMachine attachToVirtualMachine(ProcessInfo process) throws AttachNotSupportedException, IOException { VirtualMachine vm = null; List<VirtualMachineDescriptor> vmDescriptors = VirtualMachine.list(); for (VirtualMachineDescriptor vmDescriptor : vmDescriptors) { if (Long.valueOf(vmDescriptor.id()) == process.getPid()) { String vmUserName = process.getCredentialsName().getUser(); String agentUserName = System.getProperty("user.name"); if (vmUserName.equals(agentUserName)) { LOG.debug("Attaching to JVM for java process with PID [" + process.getPid() + "]..."); vm = VirtualMachine.attach(vmDescriptor); LOG.debug("Attached to JVM [" + vm + "]."); } else { LOG.debug("Cannot attach to JVM for java process with PID [" + process.getPid() + "], because it is running as a different user (" + vmUserName + ") than the user the Agent is running as (" + agentUserName + ")."); } break; } } return vm; }
if (sudoNeededForUser) { buffer.append(" -u "); if (serverProcess.getCredentialsName() != null) { buffer.append(serverProcess.getCredentialsName().getUser()); } else { buffer.append(serverProcess.getCredentials().getUid()); if (serverProcess.getCredentialsName() != null) { buffer.append(serverProcess.getCredentialsName().getGroup()); } else { buffer.append(serverProcess.getCredentials().getGid());