X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fcommons%2Fcontroller-maven-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmaven%2Fplugin%2Futil%2FVMProcessMonitor.java;fp=opendaylight%2Fcommons%2Fcontroller-maven-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmaven%2Fplugin%2Futil%2FVMProcessMonitor.java;h=fdf232a63c61d4dc96f7efb561c4bd63decdc00f;hb=effdf86b58e39060b75e6090596b123ec6e8ef69;hp=0000000000000000000000000000000000000000;hpb=9e85339874f4a57af8cf6d0b3a60e144596e32e5;p=controller.git diff --git a/opendaylight/commons/controller-maven-plugin/src/main/java/org/opendaylight/controller/maven/plugin/util/VMProcessMonitor.java b/opendaylight/commons/controller-maven-plugin/src/main/java/org/opendaylight/controller/maven/plugin/util/VMProcessMonitor.java new file mode 100644 index 0000000000..fdf232a63c --- /dev/null +++ b/opendaylight/commons/controller-maven-plugin/src/main/java/org/opendaylight/controller/maven/plugin/util/VMProcessMonitor.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.maven.plugin.util; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import sun.jvmstat.monitor.HostIdentifier; +import sun.jvmstat.monitor.MonitoredHost; +import sun.jvmstat.monitor.MonitoredVm; +import sun.jvmstat.monitor.MonitoredVmUtil; +import sun.jvmstat.monitor.VmIdentifier; + +public class VMProcessMonitor extends ProcessMonitor { + + @Override + public List getProcesses() { + Set activeVmPids = null; + List result = new ArrayList(); + MonitoredHost monitoredHost = null; + MonitoredVm mvm = null; + try { + monitoredHost = MonitoredHost.getMonitoredHost( + new HostIdentifier((String) null)); + activeVmPids = monitoredHost.activeVms(); + } catch (Exception e) { + throw new IllegalStateException("Error accessing VM", e); + } + for (Integer vmPid : activeVmPids) { + try { + mvm = monitoredHost.getMonitoredVm( + new VmIdentifier(vmPid.toString())); + JavaProcess proc = new JavaProcess(vmPid, + MonitoredVmUtil.mainClass(mvm, true)); + proc.setSystemProperties(MonitoredVmUtil.jvmArgs(mvm)); + proc.setSystemProperties(MonitoredVmUtil.jvmFlags(mvm)); + result.add(proc); + } catch(Exception e2) { + log("Error connecting to pid: " + vmPid + " reason:" + + e2.getMessage()); + e2.printStackTrace(); + } finally { + if (mvm != null) { + mvm.detach(); + } + } + } + return result; + } + + +}