in tool/src/main/java/com/alibaba/dcm/tool/DcmTool.java [79:108]
private static void doDcmActionViaAgent(@Nonnull String action, @Nonnull String[] arguments, @Nonnull String pid)
throws AttachNotSupportedException, IOException, AgentLoadException, AgentInitializationException {
final String tmpFile = getConfig(DCM_TOOLS_TMP_FILE_KEY);
final String agentJar = getConfig(DCM_TOOLS_AGENT_JAR_KEY);
final StringBuilder agentArgument = new StringBuilder();
agentArgument.append(action);
for (int i = 1; i < arguments.length; i++) {
String s = arguments[i];
agentArgument.append(' ').append(s);
}
agentArgument.append(" file ").append(tmpFile);
VirtualMachine vm = null; // target java process pid
boolean actionSuccess;
try {
vm = VirtualMachine.attach(pid);
vm.loadAgent(agentJar, agentArgument.toString()); // loadAgent method will wait to agentmain finished.
actionSuccess = printDcmResult(tmpFile);
} finally {
if (null != vm) {
vm.detach();
}
}
if (!actionSuccess) {
exit(1);
}
}