diff --git a/bindings/java/.classpath b/bindings/java/.classpath
index 1c92bf0f..79cdada9 100644
--- a/bindings/java/.classpath
+++ b/bindings/java/.classpath
@@ -6,8 +6,8 @@
-
+
diff --git a/bindings/java/lib/ant.jar b/bindings/java/lib/ant.jar
new file mode 100644
index 00000000..1337ad42
Binary files /dev/null and b/bindings/java/lib/ant.jar differ
diff --git a/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuInfo.java b/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuInfo.java
index 7cac5321..de051937 100644
--- a/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuInfo.java
+++ b/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuInfo.java
@@ -89,14 +89,14 @@ public class SigarCpuInfo extends AbstractMBean {
"sigar", Sigar.class.getName(),
"The Sigar instance to use to fetch data from");
MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(
- SigarCpu.class.getName(),
+ SigarCpuInfo.class.getName(),
"Creates a new instance for the CPU index specified, " +
"using a new Sigar instance to fetch the data. " +
"Fails if the CPU index is out of range.",
new MBeanParameterInfo[]{
MBEAN_PARAM_CPUINDEX});
MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
- SigarCpu.class.getName(),
+ SigarCpuInfo.class.getName(),
"Creates a new instance for the CPU index specified, " +
"using the Sigar instance specified to fetch the data. " +
"Fails if the CPU index is out of range.",
@@ -104,7 +104,7 @@ public class SigarCpuInfo extends AbstractMBean {
MBEAN_PARAM_SIGAR,
MBEAN_PARAM_CPUINDEX});
MBEAN_INFO = new MBeanInfo(
- SigarCpu.class.getName(),
+ SigarCpuInfo.class.getName(),
"Sigar CPU Info MBean, provides overall information for a " +
"single CPU. This information only changes if, for example, " +
"a CPU is reducing its clock frequency or shutting down " +
diff --git a/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuPerc.java b/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuPerc.java
index c63ba5e0..e3aec998 100644
--- a/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuPerc.java
+++ b/bindings/java/src/org/hyperic/sigar/jmx/SigarCpuPerc.java
@@ -101,14 +101,14 @@ public class SigarCpuPerc extends AbstractMBean {
"sigar", Sigar.class.getName(),
"The Sigar instance to use to fetch data from");
MBEAN_CONSTR_CPUINDEX = new MBeanConstructorInfo(
- SigarCpu.class.getName(),
+ SigarCpuPerc.class.getName(),
"Creates a new instance for the CPU index specified, " +
"using a new Sigar instance to fetch the data. " +
"Fails if the CPU index is out of range.",
new MBeanParameterInfo[]{
MBEAN_PARAM_CPUINDEX});
MBEAN_CONSTR_CPUINDEX_SIGAR = new MBeanConstructorInfo(
- SigarCpu.class.getName(),
+ SigarCpuPerc.class.getName(),
"Creates a new instance for the CPU index specified, " +
"using the Sigar instance specified to fetch the data. " +
"Fails if the CPU index is out of range.",
@@ -116,7 +116,7 @@ public class SigarCpuPerc extends AbstractMBean {
MBEAN_PARAM_SIGAR,
MBEAN_PARAM_CPUINDEX});
MBEAN_INFO = new MBeanInfo(
- SigarCpu.class.getName(),
+ SigarCpuPerc.class.getName(),
"Sigar CPU MBean. Provides percentage data for a single " +
"CPU, averaged over the timeframe between the last and " +
"the current measurement point. Two measurement points " +
diff --git a/bindings/java/src/org/hyperic/sigar/jmx/SigarMem.java b/bindings/java/src/org/hyperic/sigar/jmx/SigarMem.java
index dcb24abf..13bc1604 100644
--- a/bindings/java/src/org/hyperic/sigar/jmx/SigarMem.java
+++ b/bindings/java/src/org/hyperic/sigar/jmx/SigarMem.java
@@ -88,13 +88,13 @@ public class SigarMem extends AbstractMBean {
"sigar", Sigar.class.getName(),
"The Sigar instance to use to fetch data from");
MBEAN_CONSTR_SIGAR = new MBeanConstructorInfo(
- SigarCpu.class.getName(),
+ SigarMem.class.getName(),
"Creates a new instance, using the Sigar instance " +
"specified to fetch the data.",
new MBeanParameterInfo[]{
MBEAN_PARAM_SIGAR});
MBEAN_INFO = new MBeanInfo(
- SigarCpu.class.getName(),
+ SigarMem.class.getName(),
"Sigar Memory MBean, provides raw data for the physical " +
"memory installed on the system. Uses an internal cache " +
"that invalidates within 500ms, allowing for bulk request " +
diff --git a/bindings/java/src/org/hyperic/sigar/jmx/SigarRegistry.java b/bindings/java/src/org/hyperic/sigar/jmx/SigarRegistry.java
index fb237bc7..11a14af9 100644
--- a/bindings/java/src/org/hyperic/sigar/jmx/SigarRegistry.java
+++ b/bindings/java/src/org/hyperic/sigar/jmx/SigarRegistry.java
@@ -174,30 +174,41 @@ public class SigarRegistry extends AbstractMBean {
try {
final int cpuCount = sigar.getCpuInfoList().length;
for (int i = 0; i < cpuCount; i++) {
+ // add CPU bean
SigarCpu nextCpu = new SigarCpu(sigarImpl, i);
- SigarCpuPerc nextCpuPerc = new SigarCpuPerc(sigarImpl, i);
- SigarCpuInfo nextCpuInfo = new SigarCpuInfo(sigarImpl, i);
try {
if (!mbeanServer.isRegistered(new ObjectName(nextCpu.getObjectName())))
nextRegistered = mbeanServer.registerMBean(nextCpu, null);
} catch (Exception e) { // ignore
}
// add MBean to set of managed beans
- managedBeans.add(nextRegistered.getObjectName());
+ if (nextRegistered != null)
+ managedBeans.add(nextRegistered.getObjectName());
+ nextRegistered = null;
+
+ // add CPU percentage bean
+ SigarCpuPerc nextCpuPerc = new SigarCpuPerc(sigarImpl, i);
try {
if (!mbeanServer.isRegistered(new ObjectName(nextCpuPerc.getObjectName())))
nextRegistered = mbeanServer.registerMBean(nextCpuPerc, null);
} catch (Exception e) { // ignore
}
// add MBean to set of managed beans
- managedBeans.add(nextRegistered.getObjectName());
+ if (nextRegistered != null)
+ managedBeans.add(nextRegistered.getObjectName());
+ nextRegistered = null;
+
+ // add CPU info bean
+ SigarCpuInfo nextCpuInfo = new SigarCpuInfo(sigarImpl, i);
try {
if (!mbeanServer.isRegistered(new ObjectName(nextCpuInfo.getObjectName())))
nextRegistered = mbeanServer.registerMBean(nextCpuInfo, null);
} catch (Exception e) { // ignore
}
// add MBean to set of managed beans
- managedBeans.add(nextRegistered.getObjectName());
+ if (nextRegistered != null)
+ managedBeans.add(nextRegistered.getObjectName());
+ nextRegistered = null;
}
} catch (SigarException e) {
@@ -212,6 +223,7 @@ public class SigarRegistry extends AbstractMBean {
ObjectInstance nextRegistered = null;
+ // add physical memory bean
SigarMem mem = new SigarMem(sigarImpl);
try {
@@ -221,7 +233,23 @@ public class SigarRegistry extends AbstractMBean {
}
// add MBean to set of managed beans
- managedBeans.add(nextRegistered.getObjectName());
+ if (nextRegistered != null)
+ managedBeans.add(nextRegistered.getObjectName());
+ nextRegistered = null;
+
+ // add swap memory bean
+ SigarSwap swap = new SigarSwap(sigarImpl);
+ try {
+ if (!mbeanServer.isRegistered(new ObjectName(swap.getObjectName())))
+ nextRegistered = mbeanServer.registerMBean(swap, null);
+ } catch (Exception e) { // ignore
+ nextRegistered = null;
+ }
+
+ // add MBean to set of managed beans
+ if (nextRegistered != null)
+ managedBeans.add(nextRegistered.getObjectName());
+ nextRegistered = null;
}
/**
diff --git a/bindings/java/src/org/hyperic/sigar/jmx/SigarSwap.java b/bindings/java/src/org/hyperic/sigar/jmx/SigarSwap.java
new file mode 100644
index 00000000..8ce05816
--- /dev/null
+++ b/bindings/java/src/org/hyperic/sigar/jmx/SigarSwap.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc.
+ * This file is part of SIGAR.
+ *
+ * SIGAR is free software; you can redistribute it and/or modify
+ * it under the terms version 2 of the GNU General Public License as
+ * published by the Free Software Foundation. This program 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA.
+ */
+
+package org.hyperic.sigar.jmx;
+
+import javax.management.Attribute;
+import javax.management.AttributeNotFoundException;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanConstructorInfo;
+import javax.management.MBeanException;
+import javax.management.MBeanInfo;
+import javax.management.MBeanParameterInfo;
+import javax.management.ReflectionException;
+
+import org.hyperic.sigar.Sigar;
+import org.hyperic.sigar.SigarException;
+
+/**
+ * Sigar JMX MBean implementation for the Swap
information
+ * package. Provides an OpenMBean conform implementation.
+ *
+ * @author Bjoern Martin
+ * @since 1.4 (2007-04)
+ */
+public class SigarSwap extends AbstractMBean {
+
+ private static final String MBEAN_TYPE = "Swap";
+
+ private static final MBeanInfo MBEAN_INFO;
+
+ private static final MBeanAttributeInfo MBEAN_ATTR_FREE;
+
+ private static final MBeanAttributeInfo MBEAN_ATTR_TOTAL;
+
+ private static final MBeanAttributeInfo MBEAN_ATTR_USED;
+
+ private static final MBeanConstructorInfo MBEAN_CONSTR_SIGAR;
+
+ private static MBeanParameterInfo MBEAN_PARAM_SIGAR;
+
+ static {
+ MBEAN_ATTR_FREE = new MBeanAttributeInfo(
+ "Free", "long",
+ "The amount of free swap memory, in [bytes]",
+ true, false, false);
+ MBEAN_ATTR_TOTAL = new MBeanAttributeInfo(
+ "Total", "long",
+ "The total amount of swap memory, in [bytes]",
+ true, false, false);
+ MBEAN_ATTR_USED = new MBeanAttributeInfo(
+ "Used", "long",
+ "The amount of swap memory in use, in [bytes]",
+ true, false, false);
+ MBEAN_PARAM_SIGAR = new MBeanParameterInfo(
+ "sigar", Sigar.class.getName(),
+ "The Sigar instance to use to fetch data from");
+ MBEAN_CONSTR_SIGAR = new MBeanConstructorInfo(
+ SigarSwap.class.getName(),
+ "Creates a new instance, using the Sigar instance " +
+ "specified to fetch the data.",
+ new MBeanParameterInfo[]{
+ MBEAN_PARAM_SIGAR});
+ MBEAN_INFO = new MBeanInfo(
+ SigarSwap.class.getName(),
+ "Sigar Swap MBean, provides raw data for the swap memory " +
+ "configured on the system. Uses an internal cache that " +
+ "invalidates within 5 seconds.",
+ new MBeanAttributeInfo[]{
+ MBEAN_ATTR_FREE,
+ MBEAN_ATTR_TOTAL,
+ MBEAN_ATTR_USED},
+ new MBeanConstructorInfo[]{
+ MBEAN_CONSTR_SIGAR},
+ null, null);
+
+ }
+
+ /**
+ * Object name this instance will give itself when being registered to an
+ * MBeanServer.
+ */
+ private final String objectName;
+
+ /**
+ * Creates a new instance, using the Sigar instance specified to fetch the
+ * data.
+ *
+ * @param sigar
+ * The Sigar instance to use to fetch data from
+ *
+ * @throws IllegalArgumentException
+ * If an unexpected Sigar error occurs
+ */
+ public SigarSwap(Sigar sigar) throws IllegalArgumentException {
+ super(sigar, CACHED_5SEC);
+
+ this.objectName = SigarInvokerJMX.DOMAIN_NAME + ":" + MBEAN_ATTR_TYPE
+ + "=Swap";
+ }
+
+ /**
+ * Object name this instance will give itself when being registered to an
+ * MBeanServer.
+ */
+ public String getObjectName() {
+ return this.objectName;
+ }
+
+ /**
+ * @return The amount of free swap memory, in [bytes]
+ */
+ public long getFree() {
+ try {
+ return sigar.getSwap().getFree();
+ } catch (SigarException e) {
+ throw unexpectedError(MBEAN_TYPE, e);
+ }
+ }
+
+ /**
+ * @return The total amount of swap memory, in [bytes]
+ */
+ public long getTotal() {
+ try {
+ return sigar.getSwap().getTotal();
+ } catch (SigarException e) {
+ throw unexpectedError(MBEAN_TYPE, e);
+ }
+ }
+
+ /**
+ * @return The amount of swap memory in use, in [bytes]
+ */
+ public long getUsed() {
+ try {
+ return sigar.getSwap().getUsed();
+ } catch (SigarException e) {
+ throw unexpectedError(MBEAN_TYPE, e);
+ }
+ }
+
+ // -------
+ // Implementation of the DynamicMBean interface
+ // -------
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.management.DynamicMBean#getAttribute(java.lang.String)
+ */
+ public Object getAttribute(String attr) throws AttributeNotFoundException,
+ MBeanException, ReflectionException {
+ if (MBEAN_ATTR_FREE.getName().equals(attr)) {
+ return new Long(getFree());
+
+ } else if (MBEAN_ATTR_TOTAL.getName().equals(attr)) {
+ return new Long(getTotal());
+
+ } else if (MBEAN_ATTR_USED.getName().equals(attr)) {
+ return new Long(getUsed());
+
+ } else {
+ throw new AttributeNotFoundException(attr);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see javax.management.DynamicMBean#setAttribute(javax.management.Attribute)
+ */
+ public void setAttribute(Attribute attr) throws AttributeNotFoundException {
+ throw new AttributeNotFoundException(attr.getName());
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see javax.management.DynamicMBean#invoke(java.lang.String,
+ * java.lang.Object[], java.lang.String[])
+ */
+ public Object invoke(String actionName, Object[] params, String[] signature)
+ throws ReflectionException {
+ throw new ReflectionException(new NoSuchMethodException(actionName),
+ actionName);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see javax.management.DynamicMBean#getMBeanInfo()
+ */
+ public MBeanInfo getMBeanInfo() {
+ return MBEAN_INFO;
+ }
+}