001: /* JFox, the OpenSource J2EE Application Server
002: *
003: * Copyright (C) 2002 huihoo.org
004: * Distributable under GNU LGPL license
005: * See the GNU Lesser General Public License for more details.
006: */
007:
008: package example.jmx.relation;
009:
010: import javax.management.relation.RelationSupport;
011: import javax.management.relation.RoleList;
012: import javax.management.relation.InvalidRoleValueException;
013: import javax.management.ObjectName;
014:
015: /**
016: *
017: * @author <a href="mailto:young_yy@hotmail.org">Young Yang</a>
018: */
019:
020: /**
021: * Simple definition of a standard MBean, named "SimpleRelation".
022: *
023: * The "SimpleRelation" standard MBean shows how to define a relation MBean,
024: * i.e. expected to represent a relation but also including attributes and
025: * operations for management by implementing its corresponding
026: * "SimpleRelationMBean" management interface.
027: *
028: * This MBean has two attributes and one operation exposed
029: * for management by a JMX agent:
030: * - the read/write "State" attribute,
031: * - the read only "NbChanges" attribute,
032: * - the "reset()" operation.
033: *
034: * This object also has one property and one method not exposed
035: * for management by a JMX agent:
036: * - the "NbResets" property,
037: * - the "getNbResets()" method.
038: *
039: * It extends the RelationSupport class to retrieve the implementation of the
040: * Relation interface.
041: */
042:
043: public class SimpleRelation extends RelationSupport implements
044: SimpleRelationMBean {
045:
046: /*
047: * -----------------------------------------------------
048: * ATTRIBUTES ACCESSIBLE FOR MANAGEMENT BY A JMX AGENT
049: * -----------------------------------------------------
050: */
051:
052: private String state = "initial state";
053: private int nbChanges = 0;
054:
055: /*
056: * -----------------------------------------------------
057: * PROPERTY NOT ACCESSIBLE FOR MANAGEMENT BY A JMX AGENT
058: * -----------------------------------------------------
059: */
060:
061: private int nbResets = 0;
062:
063: /*
064: * -----------------------------------------------------
065: * CONSTRUCTORS
066: * -----------------------------------------------------
067: */
068:
069: public SimpleRelation(String theRelId,
070: ObjectName theRelServiceName, String theRelTypeName,
071: RoleList theRoleList) throws InvalidRoleValueException,
072: IllegalArgumentException {
073:
074: super (theRelId, theRelServiceName, theRelTypeName, theRoleList);
075: }
076:
077: /*
078: * -----------------------------------------------------
079: * IMPLEMENTATION OF THE SimpleRelationMBean INTERFACE
080: * -----------------------------------------------------
081: */
082:
083: /**
084: * Getter: get the "State" attribute of the "SimpleRelation" standard MBean.
085: *
086: * @return the current value of the "State" attribute.
087: */
088: public String getState() {
089: return state;
090: }
091:
092: /**
093: * Setter: set the "State" attribute of the "SimpleRelation" standard MBean.
094: *
095: */
096: public void setState(String s) {
097: state = s;
098: nbChanges++;
099: }
100:
101: /**
102: * Getter: get the "NbChanges" attribute of the "SimpleRelation" standard MBean.
103: *
104: * @return the current value of the "NbChanges" attribute.
105: */
106: public Integer getNbChanges() {
107: return new Integer(nbChanges);
108: }
109:
110: /**
111: * Operation: reset to their initial values the "State" and "NbChanges"
112: * attributes of the "SimpleRelation" standard MBean.
113: */
114: public void reset() {
115: state = "initial state";
116: nbChanges = 0;
117: nbResets++;
118: }
119:
120: /*
121: * -----------------------------------------------------
122: * METHOD NOT EXPOSED FOR MANAGEMENT BY A JMX AGENT
123: * -----------------------------------------------------
124: */
125:
126: /**
127: * Return the "NbResets" property.
128: * This method is not a Getter in the JMX sense because
129: * it is not exposed in the "SimpleRelationMBean" interface.
130: *
131: * @return the current value of the "NbResets" property.
132: */
133: public Integer getNbResets() {
134: return new Integer(nbResets);
135: }
136:
137: }
|