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 javax.management.modelmbean;
009:
010: import javax.management.MBeanOperationInfo;
011: import javax.management.MBeanNotificationInfo;
012: import javax.management.MBeanConstructorInfo;
013: import javax.management.MBeanAttributeInfo;
014: import javax.management.RuntimeOperationsException;
015: import javax.management.MBeanException;
016: import javax.management.Descriptor;
017:
018: /**
019: * This interface is the implemented by the ModelMBeanInfo for every ModelMBean. An implementation of this interface
020: * must be shipped with every JMX Agent.
021: * <P>
022: * Java resources wishing to be manageable instatiate the ModelMBean using the MBeanServer's
023: * createMBean method. The resource then sets the ModelMBeanInfo and Descriptors for the ModelMBean
024: * instance. The attributes, operations, and notifications exposed via the ModelMBeanInfo for the
025: * ModelMBean comprise the management interface and are accessible
026: * from Mbeans, connectors/adapters like other MBeans. Through the Descriptors, values and methods in
027: * the managed application can be defined and mapped to attributes and operations of the ModelMBean.
028: * This mapping can be defined during development in a file or dynamically and
029: * programmatically at runtime.
030: * <P>
031: * Every ModelMBean which is instantiated in the MBeanServer becomes manageable:
032: * its attributes, operations, and notifications
033: * become remotely accessible through the connectors/adaptors connected to that MBeanServer.
034: * A Java object cannot be registered in the MBeanServer unless it is a JMX compliant MBean.
035: * By instantiating a ModelMBean, resources are guaranteed that the MBean is valid.
036: *
037: * MBeanException and RuntimeOperatiosException must be thrown on every public method. This allows
038: * for wrappering exceptions from distributed communications (RMI, EJB, etc.)
039: *
040: * @author <a href="mailto:young_yy@hotmail.org">Young Yang</a>
041: */
042:
043: public interface ModelMBeanInfo {
044:
045: /**
046: * returns a Descriptor array consisting of all
047: * Descriptors for the ModelMBeanInfo including the MBean Descriptor, attribute Descriptors,
048: * operation Descriptors, constructor Descriptors, and notification Descriptors.
049: *
050: * @param inDescriptorType value of descriptorType field that must be set for the descriptor
051: * to be returned. Must be "mbean", "attribute", "operation", "constructor", or "notification".
052: * If it is null then all types will be returned.
053: *
054: * @return Descriptor array containing all descriptors for the ModelMBean
055: *
056: * @exception MBeanException Wraps another exception
057: * @exception RuntimeOperationsException Wraps another exception
058: *
059: */
060: public Descriptor[] getDescriptors(String inDescriptorType)
061: throws MBeanException, RuntimeOperationsException;
062:
063: /**
064: * adds or replaces descriptors in the ModelMBeanInfo.
065: *
066: * @param inDescriptors The descriptors to be set in the ModelMBeanInfo. Null
067: * elements of the list will be ignored. All descriptors must have name and descriptorType fields.
068: *
069: * @exception RuntimeOperationsException Wraps exceptions for illegal or null arguments
070: *
071: */
072: public void setDescriptors(Descriptor[] inDescriptors)
073: throws MBeanException, RuntimeOperationsException;
074:
075: /**
076: * returns a Descriptor requested by name and descriptorType.
077: *
078: * @param descriptorName The name of the descriptor.
079: * @param descriptorType The type of the descriptor being requested. If this is null
080: * then all types are searched. Valid types are 'attribute', 'constructor', 'operation',
081: * and 'notification'. This value must be equal to the 'descriptorType' field in the
082: * descriptor that is returned.
083: *
084: * @return Descriptor containing the descriptor for the ModelMBean with the same name and descriptorType.
085: * If a descriptor is not found, null is returned.
086: *
087: * @exception MBeanException Wraps another exception
088: * @exception RuntimeOperationsException Wraps exceptions for invalid input name or type.
089: *
090: */
091: public Descriptor getDescriptor(String descriptorName,
092: String descriptorType) throws MBeanException,
093: RuntimeOperationsException;
094:
095: /**
096: * adds or replaces descriptors in all the info arrays for the ModelMBean.
097: *
098: * @param descriptor The descriptor to be set in the ModelMBean. It must NOT be null.
099: * All descriptors must have name and descriptorType fields.
100: * @param descriptorType The type of the descriptor being set. If this is null
101: * then the descriptorType field in the descriptor is used. If specified
102: * this value must be set in the descriptorType field for the descriptor
103: * to be returned. Must be "mbean","attribute", "operation", "constructor", or "notification".
104: *
105: * @exception RuntimeOperationsException Wraps exceptions for illegal or null arguments
106: *
107: */
108:
109: public void setDescriptor(Descriptor descriptor,
110: String descriptorType) throws MBeanException,
111: RuntimeOperationsException;
112:
113: /**
114: * returns a MBean's descriptor. This descriptor contains
115: * metadata about the MBean and default policies for persistence and caching for the entire MBean.
116: * Policies may be overridden by descriptors associated with attribute, constructors, or operations
117: * with the same fieldNames.
118: *
119: * @exception MBeanException Wraps another exception
120: * @exception RuntimeOperationsException Wraps another exception
121: *
122: */
123: public Descriptor getMBeanDescriptor() throws MBeanException,
124: RuntimeOperationsException;
125:
126: /**
127: * sets the ModelMBean's descriptor (fully replace).
128: * This descriptor contains
129: * metadata about the MBean and default policies for persistence and caching for the
130: * entire MBean.
131: * Policies may be overridden by descriptors associated with attribute, constructors, or operations
132: * with the same fieldNames.
133: * This operation does a complete replacement of the descriptor, no merging is done.
134: * The default MBeanDescriptor is
135: *
136: * @exception MBeanException Wraps another exception
137: * @exception RuntimeOperationsException Wraps another exception
138: *
139: */
140: public void setMBeanDescriptor(Descriptor inDescriptor)
141: throws MBeanException, RuntimeOperationsException;
142:
143: /**
144: * returns a ModelMBeanAttributeInfo requested by name.
145: *
146: * @param name The name of the ModelMBeanAttributeInfo to get.
147: * @exception MBeanException Wraps another exception
148: * @exception RuntimeOperationsException Wraps another exception for invalid attribute
149: * name or ModelMBeanAttributeInfo to be returned.
150: *
151: */
152: public ModelMBeanAttributeInfo getAttribute(String name)
153: throws MBeanException, RuntimeOperationsException;
154:
155: /**
156: * returns a ModelMBeanOperationInfo requested by name.
157: *
158: * @param name The name of the ModelMBeanOperationInfo to get.
159: * @exception MBeanException Wraps another exception
160: * @exception RuntimeOperationsException Wraps another exception for invalid attribute
161: * name or ModelMBeanAttributeInfo to be returned.
162: *
163: */
164: public ModelMBeanOperationInfo getOperation(String name)
165: throws MBeanException, RuntimeOperationsException;
166:
167: /**
168: * returns a ModelMBeanNotificationInfo requested by name.
169: *
170: * @param name The name of the ModelMBeanNotificationInfo to get.
171: * @exception MBeanException Wraps another exception
172: * @exception RuntimeOperationsException Wraps another exception
173: *
174: */
175: public ModelMBeanNotificationInfo getNotification(String name)
176: throws MBeanException, RuntimeOperationsException;
177:
178: public java.lang.Object clone();
179:
180: public MBeanAttributeInfo[] getAttributes();
181:
182: public java.lang.String getClassName();
183:
184: public MBeanConstructorInfo[] getConstructors();
185:
186: public java.lang.String getDescription();
187:
188: public MBeanNotificationInfo[] getNotifications();
189:
190: public MBeanOperationInfo[] getOperations();
191:
192: }
|