support no arg SigarRegistry constructor
This commit is contained in:
parent
074d20d7b6
commit
806ee088d7
|
@ -29,7 +29,6 @@ import javax.management.ObjectName;
|
||||||
|
|
||||||
import org.hyperic.sigar.SigarException;
|
import org.hyperic.sigar.SigarException;
|
||||||
import org.hyperic.sigar.jmx.SigarProcess;
|
import org.hyperic.sigar.jmx.SigarProcess;
|
||||||
import org.hyperic.sigar.jmx.SigarRegistry;
|
|
||||||
|
|
||||||
public class Mx extends SigarCommandBase {
|
public class Mx extends SigarCommandBase {
|
||||||
|
|
||||||
|
@ -68,13 +67,15 @@ public class Mx extends SigarCommandBase {
|
||||||
if (isRegistered) {
|
if (isRegistered) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SigarRegistry registry = new SigarRegistry(this.proxy);
|
|
||||||
try {
|
try {
|
||||||
server.registerMBean(registry, null);
|
String name = org.hyperic.sigar.jmx.SigarRegistry.class.getName();
|
||||||
|
server.createMBean(name, null);
|
||||||
SigarProcess proc = new SigarProcess(this.sigar);
|
SigarProcess proc = new SigarProcess(this.sigar);
|
||||||
server.registerMBean(proc, new ObjectName(proc.getObjectName()));
|
server.registerMBean(proc, new ObjectName(proc.getObjectName()));
|
||||||
isRegistered = true;
|
isRegistered = true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
throw new SigarException(e.getMessage());
|
throw new SigarException(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,10 @@ import javax.management.ObjectName;
|
||||||
import org.hyperic.sigar.CpuInfo;
|
import org.hyperic.sigar.CpuInfo;
|
||||||
import org.hyperic.sigar.FileSystem;
|
import org.hyperic.sigar.FileSystem;
|
||||||
import org.hyperic.sigar.NetInterfaceConfig;
|
import org.hyperic.sigar.NetInterfaceConfig;
|
||||||
|
import org.hyperic.sigar.Sigar;
|
||||||
import org.hyperic.sigar.SigarException;
|
import org.hyperic.sigar.SigarException;
|
||||||
import org.hyperic.sigar.SigarProxy;
|
import org.hyperic.sigar.SigarProxy;
|
||||||
|
import org.hyperic.sigar.SigarProxyCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Registry of all Sigar MBeans. Can be used as a convenient way to invoke
|
* <p>Registry of all Sigar MBeans. Can be used as a convenient way to invoke
|
||||||
|
@ -61,14 +63,22 @@ public class SigarRegistry implements MBeanRegistration, SigarRegistryMBean {
|
||||||
public static final String MBEAN_ATTR_TYPE = SigarInvokerJMX.PROP_TYPE;
|
public static final String MBEAN_ATTR_TYPE = SigarInvokerJMX.PROP_TYPE;
|
||||||
|
|
||||||
private static final String MBEAN_TYPE = "SigarRegistry";
|
private static final String MBEAN_TYPE = "SigarRegistry";
|
||||||
|
private static final int CACHE_EXPIRE = 60 * 1000;
|
||||||
|
|
||||||
|
private Sigar sigarImpl;
|
||||||
private SigarProxy sigar;
|
private SigarProxy sigar;
|
||||||
private final String objectName;
|
private String objectName;
|
||||||
|
|
||||||
private final ArrayList managedBeans;
|
private ArrayList managedBeans;
|
||||||
private MBeanServer mbeanServer;
|
private MBeanServer mbeanServer;
|
||||||
|
|
||||||
|
public SigarRegistry() {}
|
||||||
|
|
||||||
public SigarRegistry(SigarProxy sigar) {
|
public SigarRegistry(SigarProxy sigar) {
|
||||||
|
init(sigar);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init(SigarProxy sigar) {
|
||||||
this.sigar = sigar;
|
this.sigar = sigar;
|
||||||
this.objectName =
|
this.objectName =
|
||||||
MBEAN_DOMAIN + ":" + MBEAN_ATTR_TYPE + "=" + MBEAN_TYPE;
|
MBEAN_DOMAIN + ":" + MBEAN_ATTR_TYPE + "=" + MBEAN_TYPE;
|
||||||
|
@ -99,15 +109,24 @@ public class SigarRegistry implements MBeanRegistration, SigarRegistryMBean {
|
||||||
// -------
|
// -------
|
||||||
public ObjectName preRegister(MBeanServer server, ObjectName name)
|
public ObjectName preRegister(MBeanServer server, ObjectName name)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
|
//no args constructor support
|
||||||
|
if (this.sigar == null) {
|
||||||
|
this.sigarImpl = new Sigar();
|
||||||
|
init(SigarProxyCache.newInstance(this.sigarImpl, CACHE_EXPIRE));
|
||||||
|
}
|
||||||
|
|
||||||
this.mbeanServer = server;
|
this.mbeanServer = server;
|
||||||
|
if (name == null) {
|
||||||
return new ObjectName(getObjectName());
|
return new ObjectName(getObjectName());
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers the default set of Sigar MBeans. Before doing so, a super call
|
* Registers the default set of Sigar MBeans.
|
||||||
* is made to satisfy {@link AbstractMBean}.
|
|
||||||
*
|
|
||||||
* @see AbstractMBean#postRegister(Boolean)
|
|
||||||
*/
|
*/
|
||||||
public void postRegister(Boolean success) {
|
public void postRegister(Boolean success) {
|
||||||
ReflectedMBean mbean;
|
ReflectedMBean mbean;
|
||||||
|
@ -205,7 +224,7 @@ public class SigarRegistry implements MBeanRegistration, SigarRegistryMBean {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deregisters all Sigar MBeans that were created and registered using this
|
* Deregisters all Sigar MBeans that were created and registered using this
|
||||||
* instance. After doing so, a super call is made to satisfy {@link AbstractMBean}.
|
* instance.
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*
|
*
|
||||||
* @see AbstractMBean#preDeregister()
|
* @see AbstractMBean#preDeregister()
|
||||||
|
@ -226,5 +245,10 @@ public class SigarRegistry implements MBeanRegistration, SigarRegistryMBean {
|
||||||
|
|
||||||
public void postDeregister() {
|
public void postDeregister() {
|
||||||
this.mbeanServer = null;
|
this.mbeanServer = null;
|
||||||
|
if (this.sigarImpl != null) {
|
||||||
|
this.sigarImpl.close();
|
||||||
|
this.sigarImpl = null;
|
||||||
|
this.sigar = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue