package com.codahale.metrics.jvm;

import com.codahale.metrics.Gauge;

import java.io.IOException;
import javax.management.JMException;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;
import java.util.Set;

A Gauge implementation which queries an MBeanServerConnection for an attribute of an object.
/** * A {@link Gauge} implementation which queries an {@link MBeanServerConnection} for an attribute of an object. */
public class JmxAttributeGauge implements Gauge<Object> { private final MBeanServerConnection mBeanServerConn; private final ObjectName objectName; private final String attributeName;
Creates a new JmxAttributeGauge.
Params:
  • objectName – the name of the object
  • attributeName – the name of the object's attribute
/** * Creates a new JmxAttributeGauge. * * @param objectName the name of the object * @param attributeName the name of the object's attribute */
public JmxAttributeGauge(ObjectName objectName, String attributeName) { this(ManagementFactory.getPlatformMBeanServer(), objectName, attributeName); }
Creates a new JmxAttributeGauge.
Params:
  • mBeanServerConn – the MBeanServerConnection
  • objectName – the name of the object
  • attributeName – the name of the object's attribute
/** * Creates a new JmxAttributeGauge. * * @param mBeanServerConn the {@link MBeanServerConnection} * @param objectName the name of the object * @param attributeName the name of the object's attribute */
public JmxAttributeGauge(MBeanServerConnection mBeanServerConn, ObjectName objectName, String attributeName) { this.mBeanServerConn = mBeanServerConn; this.objectName = objectName; this.attributeName = attributeName; } @Override public Object getValue() { try { return mBeanServerConn.getAttribute(getObjectName(), attributeName); } catch (IOException | JMException e) { return null; } } private ObjectName getObjectName() throws IOException { if (objectName.isPattern()) { Set<ObjectName> foundNames = mBeanServerConn.queryNames(objectName, null); if (foundNames.size() == 1) { return foundNames.iterator().next(); } } return objectName; } }