Home » openjdk-7 » javax » management » modelmbean » [javadoc | source]

    1   /*
    2    * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Oracle designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Oracle in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   22    * or visit www.oracle.com if you need additional information or have any
   23    * questions.
   24    */
   25   /*
   26    * @author    IBM Corp.
   27    *
   28    * Copyright IBM Corp. 1999-2000.  All rights reserved.
   29    */
   30   
   31   package javax.management.modelmbean;
   32   
   33   import javax.management.Descriptor;
   34   import javax.management.MBeanAttributeInfo;
   35   import javax.management.MBeanConstructorInfo;
   36   import javax.management.RuntimeOperationsException;
   37   import javax.management.MBeanException;
   38   import javax.management.MBeanNotificationInfo;
   39   import javax.management.MBeanOperationInfo;
   40   
   41   /**
   42    * This interface is implemented by the ModelMBeanInfo for every ModelMBean. An implementation of this interface
   43    * must be shipped with every JMX Agent.
   44    * <P>
   45    * Java resources wishing to be manageable instantiate the ModelMBean using the MBeanServer's
   46    * createMBean method.  The resource then sets the ModelMBeanInfo and Descriptors for the ModelMBean
   47    * instance. The attributes, operations, and notifications exposed via the ModelMBeanInfo for the
   48    * ModelMBean comprise the management interface and are accessible
   49    * from MBeans, connectors/adaptors like other MBeans. Through the Descriptors, values and methods in
   50    * the managed application can be defined and mapped to attributes and operations of the ModelMBean.
   51    * This mapping can be defined during development in a file or dynamically and
   52    * programmatically at runtime.
   53    * <P>
   54    * Every ModelMBean which is instantiated in the MBeanServer becomes manageable:
   55    * its attributes, operations, and notifications
   56    * become remotely accessible through the connectors/adaptors connected to that MBeanServer.
   57    * A Java object cannot be registered in the MBeanServer unless it is a JMX compliant MBean.
   58    * By instantiating a ModelMBean, resources are guaranteed that the MBean is valid.
   59    *
   60    * MBeanException and RuntimeOperationsException must be thrown on every public method.  This allows
   61    *  for wrapping exceptions from distributed communications (RMI, EJB, etc.)
   62    *
   63    * @since 1.5
   64    */
   65   
   66   public interface ModelMBeanInfo
   67   {
   68   
   69   
   70       /**
   71        * Returns a Descriptor array consisting of all
   72        * Descriptors for the ModelMBeanInfo of type inDescriptorType.
   73        *
   74        * @param inDescriptorType value of descriptorType field that must be set for the descriptor
   75        * to be returned.  Must be "mbean", "attribute", "operation", "constructor" or "notification".
   76        * If it is null or empty then all types will be returned.
   77        *
   78        * @return Descriptor array containing all descriptors for the ModelMBean if type inDescriptorType.
   79        *
   80        * @exception MBeanException Wraps a distributed communication Exception.
   81        * @exception RuntimeOperationsException Wraps an IllegalArgumentException when the descriptorType in parameter is
   82        * not one of: "mbean", "attribute", "operation", "constructor", "notification", empty or null.
   83        *
   84        * @see #setDescriptors
   85        */
   86       public Descriptor[] getDescriptors(String inDescriptorType)
   87               throws MBeanException, RuntimeOperationsException;
   88   
   89       /**
   90        * Adds or replaces descriptors in the ModelMBeanInfo.
   91        *
   92        * @param inDescriptors The descriptors to be set in the ModelMBeanInfo. Null
   93        * elements of the list will be ignored.  All descriptors must have name and descriptorType fields.
   94        *
   95        * @exception RuntimeOperationsException Wraps an IllegalArgumentException for a null or invalid descriptor.
   96        * @exception MBeanException Wraps a distributed communication Exception.
   97        *
   98        * @see #getDescriptors
   99        */
  100       public void setDescriptors(Descriptor[] inDescriptors)
  101               throws MBeanException, RuntimeOperationsException;
  102   
  103       /**
  104        * Returns a Descriptor requested by name and descriptorType.
  105        *
  106        * @param inDescriptorName The name of the descriptor.
  107        * @param inDescriptorType The type of the descriptor being
  108        * requested.  If this is null or empty then all types are
  109        * searched. Valid types are 'mbean', 'attribute', 'constructor'
  110        * 'operation', and 'notification'. This value will be equal to
  111        * the 'descriptorType' field in the descriptor that is returned.
  112        *
  113        * @return Descriptor containing the descriptor for the ModelMBean
  114        * with the same name and descriptorType.  If no descriptor is
  115        * found, null is returned.
  116        *
  117        * @exception MBeanException Wraps a distributed communication Exception.
  118        * @exception RuntimeOperationsException Wraps an IllegalArgumentException for a null descriptor name or null or invalid type.
  119        * The type must be "mbean","attribute", "constructor", "operation", or "notification".
  120        *
  121        * @see #setDescriptor
  122        */
  123   
  124       public Descriptor getDescriptor(String inDescriptorName, String inDescriptorType)
  125               throws MBeanException, RuntimeOperationsException;
  126   
  127       /**
  128        * Sets descriptors in the info array of type inDescriptorType
  129        * for the ModelMBean.  The setDescriptor method of the
  130        * corresponding ModelMBean*Info will be called to set the
  131        * specified descriptor.
  132        *
  133        * @param inDescriptor The descriptor to be set in the
  134        * ModelMBean. It must NOT be null.  All descriptors must have
  135        * name and descriptorType fields.
  136        * @param inDescriptorType The type of the descriptor being
  137        * set. If this is null then the descriptorType field in the
  138        * descriptor is used. If specified this value must be set in
  139        * the descriptorType field in the descriptor. Must be
  140        * "mbean","attribute", "constructor", "operation", or
  141        * "notification".
  142        *
  143        * @exception RuntimeOperationsException Wraps an
  144        * IllegalArgumentException for illegal or null arguments or
  145        * if the name field of the descriptor is not found in the
  146        * corresponding MBeanAttributeInfo or MBeanConstructorInfo or
  147        * MBeanNotificationInfo or MBeanOperationInfo.
  148        * @exception MBeanException Wraps a distributed communication
  149        * Exception.
  150        *
  151        * @see #getDescriptor
  152        */
  153   
  154       public void setDescriptor(Descriptor inDescriptor, String inDescriptorType)
  155               throws MBeanException, RuntimeOperationsException;
  156   
  157   
  158       /**
  159        * <p>Returns the ModelMBean's descriptor which contains MBean wide
  160        * policies.  This descriptor contains metadata about the MBean and default
  161        * policies for persistence and caching.</p>
  162        *
  163        * <P id="descriptor">
  164        * The fields in the descriptor are defined, but not limited to, the
  165        * following.  Note that when the Type in this table is Number, a String
  166        * that is the decimal representation of a Long can also be used.</P>
  167        *
  168        * <table border="1" cellpadding="5">
  169        * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
  170        * <tr><td>name</td><td>String</td>
  171        *     <td>MBean name.</td></tr>
  172        * <tr><td>descriptorType</td><td>String</td>
  173        *     <td>Must be "mbean".</td></tr>
  174        * <tr><td>displayName</td><td>String</td>
  175        *     <td>Name of MBean to be used in displays.</td></tr>
  176        * <tr><td>persistPolicy</td><td>String</td>
  177        *     <td>One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never.
  178        *         See the section "MBean Descriptor Fields" in the JMX specification
  179        *         document.</td></tr>
  180        * <tr><td>persistLocation</td><td>String</td>
  181        *     <td>The fully qualified directory name where the MBean should be
  182        *         persisted (if appropriate).</td></tr>
  183        * <tr><td>persistFile</td><td>String</td>
  184        *     <td>File name into which the MBean should be persisted.</td></tr>
  185        * <tr><td>persistPeriod</td><td>Number</td>
  186        *     <td>Frequency of persist cycle in seconds, for OnTime and
  187        *         NoMoreOftenThan PersistPolicy</td></tr>
  188        * <tr><td>currencyTimeLimit</td><td>Number</td>
  189        *     <td>How long cached value is valid: &lt;0 never, =0 always,
  190        *         &gt;0 seconds.</td></tr>
  191        * <tr><td>log</td><td>String</td>
  192        *     <td>t: log all notifications, f: log no notifications.</td></tr>
  193        * <tr><td>logfile</td><td>String</td>
  194        *     <td>Fully qualified filename to log events to.</td></tr>
  195        * <tr><td>visibility</td><td>Number</td>
  196        *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
  197        * <tr><td>export</td><td>String</td>
  198        *     <td>Name to be used to export/expose this MBean so that it is
  199        *         findable by other JMX Agents.</td></tr>
  200        * <tr><td>presentationString</td><td>String</td>
  201        *     <td>XML formatted string to allow presentation of data to be
  202        *         associated with the MBean.</td></tr>
  203        * </table>
  204        *
  205        * <P>
  206        * The default descriptor is: name=className,descriptorType="mbean", displayName=className,
  207        *  persistPolicy="never",log="F",visibility="1"
  208        * If the descriptor does not contain all these fields, they will be added with these default values.
  209        *
  210        * <p><b>Note:</b> because of inconsistencies in previous versions of
  211        * this specification, it is recommended not to use negative or zero
  212        * values for <code>currencyTimeLimit</code>.  To indicate that a
  213        * cached value is never valid, omit the
  214        * <code>currencyTimeLimit</code> field.  To indicate that it is
  215        * always valid, use a very large number for this field.</p>
  216        *
  217        * @return the MBean descriptor.
  218        *
  219        * @exception MBeanException Wraps a distributed communication
  220        * Exception.
  221        *
  222        * @exception RuntimeOperationsException a {@link
  223        * RuntimeException} occurred while getting the descriptor.
  224        *
  225        * @see #setMBeanDescriptor
  226        */
  227       public Descriptor getMBeanDescriptor()
  228               throws MBeanException, RuntimeOperationsException;
  229   
  230       /**
  231        * Sets the ModelMBean's descriptor.  This descriptor contains default, MBean wide
  232        * metadata about the MBean and default policies for persistence and caching. This operation
  233        * does a complete replacement of the descriptor, no merging is done. If the descriptor to
  234        * set to is null then the default descriptor will be created.
  235        * The default descriptor is: name=className,descriptorType="mbean", displayName=className,
  236        *  persistPolicy="never",log="F",visibility="1"
  237        * If the descriptor does not contain all these fields, they will be added with these default values.
  238        *
  239        * See {@link #getMBeanDescriptor getMBeanDescriptor} method javadoc for description of valid field names.
  240        *
  241        * @param inDescriptor the descriptor to set.
  242        *
  243        * @exception MBeanException Wraps a distributed communication Exception.
  244        * @exception RuntimeOperationsException Wraps an IllegalArgumentException  for invalid descriptor.
  245        *
  246        *
  247        * @see #getMBeanDescriptor
  248        */
  249   
  250       public void setMBeanDescriptor(Descriptor inDescriptor)
  251               throws MBeanException, RuntimeOperationsException;
  252   
  253   
  254       /**
  255        * Returns a ModelMBeanAttributeInfo requested by name.
  256        *
  257        * @param inName The name of the ModelMBeanAttributeInfo to get.
  258        * If no ModelMBeanAttributeInfo exists for this name null is returned.
  259        *
  260        * @return the attribute info for the named attribute, or null
  261        * if there is none.
  262        *
  263        * @exception MBeanException Wraps a distributed communication
  264        * Exception.
  265        * @exception RuntimeOperationsException Wraps an
  266        * IllegalArgumentException for a null attribute name.
  267        *
  268        */
  269   
  270       public ModelMBeanAttributeInfo getAttribute(String inName)
  271               throws MBeanException, RuntimeOperationsException;
  272   
  273   
  274       /**
  275        * Returns a ModelMBeanOperationInfo requested by name.
  276        *
  277        * @param inName The name of the ModelMBeanOperationInfo to get.
  278        * If no ModelMBeanOperationInfo exists for this name null is returned.
  279        *
  280        * @return the operation info for the named operation, or null
  281        * if there is none.
  282        *
  283        * @exception MBeanException Wraps a distributed communication Exception.
  284        * @exception RuntimeOperationsException Wraps an IllegalArgumentException for a null operation name.
  285        *
  286        */
  287   
  288       public ModelMBeanOperationInfo getOperation(String inName)
  289               throws MBeanException, RuntimeOperationsException;
  290   
  291   
  292       /**
  293        * Returns a ModelMBeanNotificationInfo requested by name.
  294        *
  295        * @param inName The name of the ModelMBeanNotificationInfo to get.
  296        * If no ModelMBeanNotificationInfo exists for this name null is returned.
  297        *
  298        * @return the info for the named notification, or null if there
  299        * is none.
  300        *
  301        * @exception MBeanException Wraps a distributed communication Exception.
  302        * @exception RuntimeOperationsException Wraps an IllegalArgumentException for a null notification name.
  303        *
  304        */
  305       public ModelMBeanNotificationInfo getNotification(String inName)
  306               throws MBeanException, RuntimeOperationsException;
  307   
  308       /**
  309        * Creates and returns a copy of this object.
  310        */
  311       public java.lang.Object clone();
  312   
  313       /**
  314        * Returns the list of attributes exposed for management.
  315        * Each attribute is described by an <CODE>MBeanAttributeInfo</CODE> object.
  316        *
  317        * @return  An array of <CODE>MBeanAttributeInfo</CODE> objects.
  318        */
  319       public MBeanAttributeInfo[] getAttributes();
  320   
  321       /**
  322        * Returns the name of the Java class of the MBean described by
  323        * this <CODE>MBeanInfo</CODE>.
  324        *
  325        * @return the Java class name.
  326        */
  327       public java.lang.String getClassName();
  328   
  329       /**
  330        * Returns the list of the public constructors  of the MBean.
  331        * Each constructor is described by an <CODE>MBeanConstructorInfo</CODE> object.
  332        *
  333        * @return  An array of <CODE>MBeanConstructorInfo</CODE> objects.
  334        */
  335       public MBeanConstructorInfo[] getConstructors();
  336   
  337       /**
  338        * Returns a human readable description of the MBean.
  339        *
  340        * @return the description.
  341        */
  342       public java.lang.String getDescription();
  343   
  344       /**
  345        * Returns the list of the notifications emitted by the MBean.
  346        * Each notification is described by an <CODE>MBeanNotificationInfo</CODE> object.
  347        * <P>
  348        * In addition to any notification specified by the application,
  349        * a ModelMBean may always send also two additional notifications:
  350        * <UL>
  351        * <LI> One with descriptor name "GENERIC" and displayName "jmx.modelmbean.generic"
  352        * <LI> Second is a standard attribute change notification
  353        *      with descriptor name "ATTRIBUTE_CHANGE" and displayName "jmx.attribute.change"
  354        * </UL>
  355        * Thus any implementation of ModelMBeanInfo should always add those two notifications
  356        * in addition to those specified by the application.
  357        *
  358        * @return  An array of <CODE>MBeanNotificationInfo</CODE> objects.
  359        */
  360       public MBeanNotificationInfo[] getNotifications();
  361   
  362       /**
  363        * Returns the list of operations  of the MBean.
  364        * Each operation is described by an <CODE>MBeanOperationInfo</CODE> object.
  365        *
  366        * @return  An array of <CODE>MBeanOperationInfo</CODE> objects.
  367        */
  368       public MBeanOperationInfo[] getOperations();
  369   
  370   }

Home » openjdk-7 » javax » management » modelmbean » [javadoc | source]