/*******************************************************************************
* This file is part of OpenNMS(R).
*
* Copyright (C) 2010-2011 The OpenNMS Group, Inc.
* OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc.
*
* OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
*
* OpenNMS(R) is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License,
* or (at your option) any later version.
*
* OpenNMS(R) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenNMS(R). If not, see:
* http://www.gnu.org/licenses/
*
* For more information contact:
* OpenNMS(R) Licensing <license@opennms.org>
* http://www.opennms.org/
* http://www.opennms.com/
*******************************************************************************/
package org.opennms.systemreport.system;
import java.lang.management.ClassLoadingMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.RuntimeMXBean;
import java.util.TreeMap;
import org.opennms.core.utils.LogUtils;
import org.opennms.systemreport.AbstractSystemReportPlugin;
import org.springframework.core.io.Resource;
public class JavaReportPlugin extends AbstractSystemReportPlugin {
public String getName() {
return "Java";
}
public String getDescription() {
return "Java and JVM information";
}
public int getPriority() {
return 1;
}
public TreeMap<String, Resource> getEntries() {
final TreeMap<String,Resource> map = new TreeMap<String,Resource>();
map.put("Class Version", getResourceFromProperty("java.class.version"));
map.put("Compiler", getResourceFromProperty("java.compiler"));
map.put("Home", getResourceFromProperty("java.home"));
map.put("Version", getResourceFromProperty("java.version"));
map.put("Vendor", getResourceFromProperty("java.vendor"));
map.put("VM Version", getResourceFromProperty("java.vm.version"));
map.put("VM Name", getResourceFromProperty("java.vm.name"));
MemoryMXBean memoryBean = getBean(ManagementFactory.MEMORY_MXBEAN_NAME, MemoryMXBean.class);
if (memoryBean == null) {
LogUtils.infof(this, "falling back to local VM MemoryMXBean");
memoryBean = ManagementFactory.getMemoryMXBean();
}
addGetters(memoryBean, map);
RuntimeMXBean runtimeBean = getBean(ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
if (runtimeBean == null) {
LogUtils.infof(this, "falling back to local VM RuntimeMXBean");
runtimeBean = ManagementFactory.getRuntimeMXBean();
}
addGetters(runtimeBean, map);
ClassLoadingMXBean classBean = getBean(ManagementFactory.CLASS_LOADING_MXBEAN_NAME, ClassLoadingMXBean.class);
if (classBean == null) {
LogUtils.infof(this, "falling back to local VM ClassLoadingMXBean");
classBean = ManagementFactory.getClassLoadingMXBean();
}
addGetters(classBean, map);
/* this stuff is really not giving us anything useful
List<GarbageCollectorMXBean> beans = getBeans(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE, GarbageCollectorMXBean.class);
if (beans == null || beans.size() == 0) {
LogUtils.infof(this, "falling back to local VM MemoryMXBean");
beans = ManagementFactory.getGarbageCollectorMXBeans();
}
LogUtils.tracef(this, "beans = %s", beans.toString());
int collectorNum = 1;
for (final GarbageCollectorMXBean bean : beans) {
final Map<String,Resource> temp = new TreeMap<String,Resource>();
addGetters(bean, map);
StringBuilder sb = new StringBuilder();
for (final String s : temp.keySet()) {
sb.append(s).append(": ").append(temp.get(s)).append("\n");
}
if (sb.length() > 0) sb.deleteCharAt(sb.length());
map.put("Garbage Collector " + collectorNum, getResource(sb.toString()));
}
*/
return map;
}
}