only SigarRegistry needs to implement MBeanRegistration
This commit is contained in:
parent
25241fcc7a
commit
448b595e30
|
@ -24,8 +24,6 @@ import javax.management.AttributeNotFoundException;
|
|||
import javax.management.DynamicMBean;
|
||||
import javax.management.MBeanException;
|
||||
import javax.management.MBeanRegistration;
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectName;
|
||||
import javax.management.ReflectionException;
|
||||
|
||||
import org.hyperic.sigar.Sigar;
|
||||
|
@ -43,7 +41,7 @@ import org.hyperic.sigar.SigarProxy;
|
|||
* @author Bjoern Martin
|
||||
* @since 1.5
|
||||
*/
|
||||
public abstract class AbstractMBean implements DynamicMBean, MBeanRegistration {
|
||||
public abstract class AbstractMBean implements DynamicMBean {
|
||||
|
||||
public static final String MBEAN_DOMAIN = SigarInvokerJMX.DOMAIN_NAME;
|
||||
public static final String MBEAN_ATTR_TYPE = SigarInvokerJMX.PROP_TYPE;
|
||||
|
@ -58,16 +56,6 @@ public abstract class AbstractMBean implements DynamicMBean, MBeanRegistration {
|
|||
*/
|
||||
protected final SigarProxy sigar;
|
||||
|
||||
/**
|
||||
* The MBean server this MBean is registered to. Set during the MBean's
|
||||
* registration to the MBean server and unset to <code>null</code> when
|
||||
* the deregistration finished.
|
||||
*
|
||||
* @see #preRegister(MBeanServer, ObjectName)
|
||||
* @see #postDeregister()
|
||||
*/
|
||||
protected MBeanServer mbeanServer;
|
||||
|
||||
/**
|
||||
* <p>Creates a new instance of this class. The SigarProxy instance is stored (and
|
||||
* accessible) via the {@link #sigar} member.
|
||||
|
@ -145,59 +133,6 @@ public abstract class AbstractMBean implements DynamicMBean, MBeanRegistration {
|
|||
return result;
|
||||
}
|
||||
|
||||
// -------
|
||||
// Implementation of the MBeanRegistration interface
|
||||
// -------
|
||||
|
||||
/**
|
||||
* <p>Returns <code>new ObjectName(this.getObjectName())</code> to guarantee
|
||||
* a reliable and reproducable object name.</p>
|
||||
*
|
||||
* <p><b>Note:</b> Make sure any subclass does a super call to this method,
|
||||
* otherwise the implementation might be broken.</p>
|
||||
*
|
||||
* @see MBeanRegistration#preRegister(MBeanServer, ObjectName)
|
||||
*/
|
||||
public ObjectName preRegister(MBeanServer server, ObjectName name)
|
||||
throws Exception {
|
||||
this.mbeanServer = server;
|
||||
return new ObjectName(getObjectName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Empty implementation, allowing subclasses to ignore the interface.
|
||||
*
|
||||
* <p><b>Note:</b> Make sure any subclass does a super call to this method,
|
||||
* otherwise the implementation might be broken.</p>
|
||||
*
|
||||
* @see MBeanRegistration#postRegister(Boolean)
|
||||
*/
|
||||
public void postRegister(Boolean success) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Empty implementation, allowing subclasses to ignore the interface.
|
||||
*
|
||||
* <p><b>Note:</b> Make sure any subclass does a super call to this method,
|
||||
* otherwise the implementation might be broken.</p>
|
||||
*
|
||||
* @see MBeanRegistration#preDeregister()
|
||||
*/
|
||||
public void preDeregister() throws Exception {
|
||||
}
|
||||
|
||||
/**
|
||||
* Empty implementation, allowing subclasses to ignore the interface.
|
||||
*
|
||||
* <p><b>Note:</b> Make sure any subclass does a super call to this method,
|
||||
* otherwise the implementation might be broken.</p>
|
||||
*
|
||||
* @see MBeanRegistration#postDeregister()
|
||||
*/
|
||||
public void postDeregister() {
|
||||
this.mbeanServer = null;
|
||||
}
|
||||
|
||||
public void setAttribute(Attribute attr) throws AttributeNotFoundException {
|
||||
throw new AttributeNotFoundException(attr.getName());
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.ArrayList;
|
|||
|
||||
import javax.management.AttributeNotFoundException;
|
||||
import javax.management.MBeanInfo;
|
||||
import javax.management.MBeanRegistration;
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectInstance;
|
||||
import javax.management.ObjectName;
|
||||
|
@ -57,7 +58,7 @@ import org.hyperic.sigar.SigarProxy;
|
|||
* @author Bjoern Martin
|
||||
* @since 1.5
|
||||
*/
|
||||
public class SigarRegistry extends AbstractMBean {
|
||||
public class SigarRegistry extends AbstractMBean implements MBeanRegistration {
|
||||
|
||||
private static final String MBEAN_TYPE = "SigarRegistry";
|
||||
|
||||
|
@ -79,6 +80,7 @@ public class SigarRegistry extends AbstractMBean {
|
|||
private final String objectName;
|
||||
|
||||
private final ArrayList managedBeans;
|
||||
private MBeanServer mbeanServer;
|
||||
|
||||
public SigarRegistry(SigarProxy sigar) {
|
||||
super(sigar);
|
||||
|
@ -117,6 +119,11 @@ public class SigarRegistry extends AbstractMBean {
|
|||
// -------
|
||||
// Implementation of the MBeanRegistration interface
|
||||
// -------
|
||||
public ObjectName preRegister(MBeanServer server, ObjectName name)
|
||||
throws Exception {
|
||||
this.mbeanServer = server;
|
||||
return new ObjectName(getObjectName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the default set of Sigar MBeans. Before doing so, a super call
|
||||
|
@ -127,8 +134,6 @@ public class SigarRegistry extends AbstractMBean {
|
|||
public void postRegister(Boolean success) {
|
||||
ReflectedMBean mbean;
|
||||
|
||||
super.postRegister(success);
|
||||
|
||||
if (!success.booleanValue())
|
||||
return;
|
||||
|
||||
|
@ -239,8 +244,9 @@ public class SigarRegistry extends AbstractMBean {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// do the super call
|
||||
super.preDeregister();
|
||||
public void postDeregister() {
|
||||
this.mbeanServer = null;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue