package javax.slee.usage; import javax.slee.management.NotificationSource; import javax.slee.management.ManagementException; /** * The <code>UsageNotificationManagerMBean</code> interface defines the basic common * functionality required for the management of usage notifications. * <p> * <p> * The base JMX Object Name of a <code>UsageNotificationManagerMBean</code> object is * specified by the {@link #BASE_OBJECT_NAME} constant. The {@link #NOTIFICATION_SOURCE_KEY} * constant specifies the Object Name property that identifies the type of the * notification source for the Usage Notification Manager MBean. In addition to this * property, each notification source includes additional properties in the Usage * Notification Manager MBean Object Name with the property keys indicated below: * <ul> * <li>For notification sources of type {@link javax.slee.management.SbbNotification}: * <ul> * <li>{@link javax.slee.management.SbbNotification#SERVICE_NAME_KEY} * <li>{@link javax.slee.management.SbbNotification#SERVICE_VENDOR_KEY} * <li>{@link javax.slee.management.SbbNotification#SERVICE_VERSION_KEY} * <li>{@link javax.slee.management.SbbNotification#SBB_NAME_KEY} * <li>{@link javax.slee.management.SbbNotification#SBB_VENDOR_KEY} * <li>{@link javax.slee.management.SbbNotification#SBB_VERSION_KEY} * </ul> * <li>For notification sources of type {@link javax.slee.management.ResourceAdaptorEntityNotification}: * <ul> * <li>{@link javax.slee.management.ResourceAdaptorEntityNotification#RESOURCE_ADAPTOR_ENTITY_NAME_KEY} * </ul> * <li>For notification sources of type {@link javax.slee.management.SubsystemNotification}: * <ul> * <li>{@link javax.slee.management.SubsystemNotification#SUBSYSTEM_NAME_KEY} * </ul> * </ul> * <p> * A management client may obtain the complete Object Name of a Usage Notification Manager * MBean for an SBB via the {@link javax.slee.management.ServiceUsageMBean} interface. * The complete Object Name of a Usage Notification Manager MBean for a resource adaptor * entity may be obtained using the {@link javax.slee.management.ResourceManagementMBean} * interface. The complete Object Name of a Usage Notification Manager MBean for a SLEE * internal component or subsystem may be obtained using the * {@link javax.slee.management.SleeManagementMBean} interface. * <p> * <b>Interface extension</b><br> * During deployment of a SLEE component that defines a usage parameters interface, the * <code>UsageNotificationManagerMBean</code> interface is extended to provide access to * managed attributes that allow the generation of usage notifications for each usage * parameter to be enabled or disabled. For each usage parameter defined in the usage * parameters interface, a read-write managed attribute is added to this interface with * the following method signatures: * <p> * <ul><code> * public boolean get<i><usage-parameter-name></i>NotificationsEnabled() throws ManagementException;<br> * public void set<i><usage-parameter-name></i>NotificationsEnabled(boolean enabled) throws ManagementException; * </code></ul> * <p> * where * <ul><code><i>usage-parameter-name</i></code> is the name of the usage parameter, with * the first letter capitalized.</ul> * <p> * Usage notifications are enabled or disabled on a per-usage-parameter basis for each * notification source, ie. the SLEE does not take into consideration a specific usage parameter * set when deciding whether or not usage notifications are enabled for a particular usage * parameter. That means that if usage notifications are enabled for a particular usage * parameter, if that usage parameter is updated in <i>any</i> usage parameter set belonging * to the notification source, a usage notification will be generated by the SLEE. Ideally, * usage notification generation should only be enabled for usage parameters that require * a management client (or notification filter) to be kept constantly up-to-date with the * status of the usage parameter. For other cases, the current value of a usage parameter * can always be obtained by a management client by interacting with the {@link UsageMBean} * for the usage parameter set. * <p> * <b>Initial State of <code>NotificationsEnabled</code> Flags</b><br> * In order to maintain backwards compatibility with existing management clients, a * <code>UsageNotificationManagerMBean</code> that is generated by the SLEE for an SBB that * is installed using a SLEE 1.0 deployment descriptor (as determined by the deployment * descriptor's <code>DOCTYPE</code> declaration) defaults to having usage notifications * enabled for all usage parameters. * <p> * A <code>UsageNotificationManagerMBean</code> that is generated by the SLEE for an SBB * or resource adaptor that is installed using a SLEE 1.1 deployment descriptor defaults to * having usage notifications <i>disabled</i> for all usage parameters, unless an explicit * declaration is made in the deployment descriptor to enable notifications for specific * usage parameters. * @since SLEE 1.1 */ public interface UsageNotificationManagerMBean { /** * The base JMX Object Name string of all SLEE Usage Notification Manager MBeans. * This string is equal to "javax.slee.usage:type=UsageNotificationManager" and * the string <code>BASE_OBJECT_NAME + ",*"</code> defines a JMX Object Name property * pattern which matches with all Usage Notification Manager MBeans that are registered * with the MBean Server. A Usage Notification Manager MBean is registered with * the MBean Server using this base name in conjunction with the property specified * by {@link #NOTIFICATION_SOURCE_KEY} and additional properties depending on the * type of the notification source. */ public static final String BASE_OBJECT_NAME = "javax.slee.usage:type=UsageNotificationManager"; /** * The JMX Object Name property key that identifies the type of the notification * source that the Usage Notification Manager MBean is managing usage notification * generation for. This key is equal to the string "notificationSource". The value * of this key is equal to the <code>USAGE_NOTIFICATION_TYPE</code> constant defined * by the notification source. For example, if this Usage Notification Manager MBean * was managing usage notifications for an SBB, the Object Name of the Usage Notification * Manager MBean would contain a property with a key specified by this constant and a * value equal to {@link javax.slee.management.SbbNotification#USAGE_NOTIFICATION_TYPE}. * @see #BASE_OBJECT_NAME */ public static final String NOTIFICATION_SOURCE_KEY = "notificationSource"; /** * Get the notification source that this Usage Notification Manager MBean is managing * usage notification enabler flags for. * @return the notification source. * @throws ManagementException if the notification source could not be obtained due * to a system-level failure. */ public NotificationSource getNotificationSource() throws ManagementException; /** * Notify the SLEE that the Usage Notification Manager MBean is no longer required by * the management client. As the SLEE may subsequently deregister the Usage Notification * Manager MBean from the MBean server, a client that invokes this method should assume * that the Object Name they had for the MBean is no longer valid once this method returns. * @throws ManagementException if the Usage Notification Manager MBean could not be closed * by the SLEE due to a system-level failure. */ public void close() throws ManagementException; }