Basicpublic abstract class Basic extends Object implements DynamicMBeanBase class for the sample application.
Implemented as a dynamic MBean. There are three
attributes:
1. NumberOfResets (int)
2. TraceOn (boolean)
3. DebugOn (boolean)
and five operations:
1. enableTracing()
2. disableTracing()
3. enableDebugging()
4. disableDebugging()
5. reset() (abstract - must be implemented by subclasses) |
Fields Summary |
---|
private int | _numberOfResets | private boolean | _traceOn | private boolean | _debugOn | private MBeanInfo | _MBeanInfo |
Constructors Summary |
---|
public Basic()Construtor, used to expose the management interface
of this MBean through the dynamic MBean metadata
classes.
//
// Build attribute metadata:
// - NumberOfResets
// - TraceOn
// - DebugOn
//
MBeanAttributeInfo[] attributeInfo = new MBeanAttributeInfo[3];
// - NumberOfResets
attributeInfo[0] = new MBeanAttributeInfo(
"NumberOfResets", // name
Integer.TYPE.getName(), // type
"The number of times reset() has been called.", // description
true, // isReadable
false, // isWriteable
false); // isIs
// - TraceOn
attributeInfo[1] = new MBeanAttributeInfo(
"TraceOn", // name
Boolean.TYPE.getName(), // type
"Indicates whether or not tracing is on.", // description
true, // isReadable
false, // isWriteable
true); // isIs
// - DebugOn
attributeInfo[2] = new MBeanAttributeInfo(
"DebugOn", // name
Boolean.TYPE.getName(), // type
"Indicates whether or not debugging is on.", // description
true, // isReadable
false, // isWriteable
true); // isIs
//
// Now build Constructor metadata
//
Constructor[] constructors = this.getClass().getConstructors();
MBeanConstructorInfo[] constructorInfo = new MBeanConstructorInfo[constructors.length];
for (int aa = 0; aa < constructors.length; aa++) {
constructorInfo[aa] = new MBeanConstructorInfo("Constructs a Basic MBean.", // description
constructors[aa] // java.lang.reflect.Constructor
);
}
//
// Now build operation metadata:
// - enableTracing
// - disableTracing
// - enableDebugging
// - disableDebugging
// - reset
//
MBeanParameterInfo[] voidSignature = null;
MBeanOperationInfo[] operationInfo = new MBeanOperationInfo[5];
// - enableTracing
operationInfo[0] = new MBeanOperationInfo(
"enableTracing", // name
"Turns tracing on.", // description
voidSignature, // MBeanParameterInfo[]
Void.TYPE.getName(), // type
MBeanOperationInfo.ACTION // impact
);
// - disableTracing
operationInfo[1] = new MBeanOperationInfo(
"disableTracing", // name
"Turns tracing off.", // description
voidSignature, // MBeanParameterInfo[]
Void.TYPE.getName(), // type
MBeanOperationInfo.ACTION // impact
);
// - enableDebugging
operationInfo[2] = new MBeanOperationInfo(
"enableDebugging", // name
"Turns debugging on.", // description
voidSignature, // MBeanParameterInfo[]
Void.TYPE.getName(), // type
MBeanOperationInfo.ACTION // impact
);
// - disableDebugging
operationInfo[3] = new MBeanOperationInfo(
"disableDebugging", // name
"Turns debugging off.", // description
voidSignature, // MBeanParameterInfo[]
Void.TYPE.getName(), // type
MBeanOperationInfo.ACTION // impact
);
// - reset
operationInfo[4] = new MBeanOperationInfo(
"reset", // name
"Resets the state of this MBean.", // description
voidSignature, // MBeanParameterInfo[]
Void.TYPE.getName(), // type
MBeanOperationInfo.ACTION // impact
);
//
// Build Notification Metadata:
// - none
//
MBeanNotificationInfo[] notificationInfo = new MBeanNotificationInfo[0];
//
// Now (finally!) create the MBean info metadata object
//
_MBeanInfo = new MBeanInfo(
this.getClass().getName(), // DynamicMBean implementing class name
"Basic Dynamic MBean.", // description
attributeInfo, // MBeanAttributeInfo[]
constructorInfo, // MBeanConstructorInfo[]
operationInfo, // MBeanOperationInfo[]
notificationInfo // MBeanNotificationInfo[]
);
|
Methods Summary |
---|
public void | disableDebugging()
_debugOn = false;
| public void | disableTracing()
_traceOn = false;
| public void | enableDebugging()
_debugOn = true;
| public void | enableTracing()
_traceOn = true;
| public java.lang.Object | getAttribute(java.lang.String attributeName)Obtains the value of a specific attribute of the Dynamic MBean.
Object ret = null;
//
// See if attribute is recognized.
//
if (attributeName.equals("NumberOfResets")) {
ret = new Integer(getNumberOfResets());
}
else if (attributeName.equals("TraceOn")) {
ret = new Boolean(isTraceOn());
}
else if (attributeName.equals("DebugOn")) {
ret = new Boolean(isDebugOn());
}
// If attribute_name has not been recognized throw an AttributeNotFoundException
else
throw new AttributeNotFoundException("Basic.getAttribute(): ERROR: "
+ "Cannot find " + attributeName + " attribute.");
return ret;
| public javax.management.AttributeList | getAttributes(java.lang.String[] attributeNames)Enables the values of several attributes of the Dynamic MBean.
AttributeList resultList = new AttributeList();
for (int aa = 0; aa < attributeNames.length; aa++) {
try {
Object value = getAttribute((String)attributeNames[aa]);
resultList.add(new Attribute(attributeNames[aa], value));
} catch (Exception e) {
e.printStackTrace();
}
}
return resultList;
| java.lang.Class | getClassFromString(java.lang.String className)Helper method. Takes the string representation of a class
and returns the corresponding Class object.
Class ret = null;
if (className.equals(Boolean.TYPE.getName()))
ret = Boolean.TYPE;
else if (className.equals(Character.TYPE.getName()))
ret = Character.TYPE;
else if (className.equals(Byte.TYPE.getName()))
ret = Byte.TYPE;
else if (className.equals(Short.TYPE.getName()))
ret = Short.TYPE;
else if (className.equals(Integer.TYPE.getName()))
ret = Integer.TYPE;
else if (className.equals(Long.TYPE.getName()))
ret = Long.TYPE;
else if (className.equals(Float.TYPE.getName()))
ret = Float.TYPE;
else if (className.equals(Double.TYPE.getName()))
ret = Double.TYPE;
else if (className.equals(Void.TYPE.getName()))
ret = Void.TYPE;
//
// Not a primitive type, just load the class based
/// on the name.
//
else
ret = Class.forName(className);
return ret;
| public javax.management.MBeanInfo | getMBeanInfo()Provides the exposed attributes and actions of the Dynamic MBean using an MBeanInfo object.
return (_MBeanInfo);
| public int | getNumberOfResets()
return _numberOfResets;
| public java.lang.Object | invoke(java.lang.String operationName, java.lang.Object[] params, java.lang.String[] signature)Allows an action to be invoked on the Dynamic MBean.
Object ret = Void.TYPE;
// Check for a recognized operation name and call the corresponding operation
if (operationName.equals("enableTracing")) {
enableTracing();
}
else if (operationName.equals("disableTracing")) {
disableTracing();
}
else if (operationName.equals("enableDebugging")) {
enableDebugging();
}
else if (operationName.equals("disableDebugging")) {
disableDebugging();
}
else if (operationName.equals("reset")) {
reset();
}
else {
// unrecognized operation name:
throw new ReflectionException(new NoSuchMethodException(operationName),
"Basic.invoke(): ERROR: " + "Cannot find the operation "
+ operationName + "!");
}
return ret;
| public boolean | isDebugOn()
return _debugOn;
| public boolean | isTraceOn()
return _traceOn;
| public abstract void | reset()
| public void | setAttribute(javax.management.Attribute attribute)Sets the value of a specific attribute of the Dynamic MBean
//
// No writeable attributes on the management interface.
/// Nothing to do.
//
| public javax.management.AttributeList | setAttributes(javax.management.AttributeList attributes)Sets the values of several attributes of the Dynamic MBean
//
// No writeable attributes on the management interface...
/// Return an empty AttributeList.
//
AttributeList atts = new AttributeList();
return atts;
| public void | setNumberOfResets(int value)
_numberOfResets = value;
|
|