Index Changes
This is version 1. It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]

Requirement:

Each components can have configurable operations that they want to expose. Today this is solved by providing a configuration MBean. And this configuration MBean provides only a pre-published set of APIs that are then also programmed into the common-client framework. But there are needs when more operations need to be exposed and the state of these operations is dependent on the state of the component. More flexibility is needed by the component to suggest what operations can be exposed and which one of those are enabled based on the state of the component.

For instance, if persistence is turned on, only then we want BPEL-SE to provide a "purge Data Action" in the list of BPEL-SE mbean actions. One way to do it is that the client (NB) has the code to see if the persistence is turned on or not. While it may solve such a simple scenario by putting such component specific logic in the client (NB) it is not a good idea since it forces the MBean clients to be aware of some component specific logic. Sometimes this could get trickier, for instance, in BPEL-SE even though persistence is turned on, if the engine is not shutdown and then started, persistence is not really turned on. In such situations, the UI doesn't really know if it can display the menu action "purge Data Action".

In summary, components need more Dynamic MBean actions, whose logic only the component understands. The MBean client can't be smart enough to understand the logic of the component to determine what operations are available and what operations are enabled/disabled.

Scope:

* No cluster support for now * No support of passing in parameters to the MBean operations * It is a prototype between BPEL-SE and NB runtime support.

Solution:

Each component registers an MBean by the identifier "ManagementActions". something like - context.getMBeanNames().createCustomComponentMBeanName("ManagementActions") This ManagementActions MBean will have one MBean operation called, "getActions()". Netbeans knows the above information and will query the ManagementActions.getActions() on the component.

The getActions() API will return an XML string conformant to the XSD,

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://sun.com/jbi/components/ActionableMBeans"
            xmlns:tns="http://sun.com/jbi/components/ActionableMBeans"
            elementFormDefault="qualified">
    <xsd:element name="root">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="tns:Action" maxOccurs="unbounded" minOccurs="0"/>
            </xsd:sequence>    
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="Action" type="tns:ActionType"/>
    <xsd:complexType name="ActionType">
        <xsd:sequence>
            <xsd:element name="MBeanKey" type="xsd:string" minOccurs="0"/>
            <xsd:element name="OperationName" type="xsd:string" minOccurs="0"/>
            <xsd:element name="DisplayName" type="xsd:string"/>
            <xsd:element name="Description" type="xsd:string"/>
            <xsd:element name="Enabled" type="xsd:boolean" default="false" minOccurs="0"/>
            <xsd:element ref="tns:Action" maxOccurs="unbounded" minOccurs="0"/>
        </xsd:sequence>
            <xsd:attribute name="isGroup" type="xsd:boolean" default="false"/>
    </xsd:complexType>
</xsd:schema>

An example instance document of this could be

<?xml version="1.0" encoding="windows-1252"?>
<ns0:root  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xmlns:ns0='http://sun.com/jbi/components/ActionableMBeans'
   xsi:schemaLocation='http://sun.com/jbi/components/ActionableMBeans newXmlSchema.xsd'>
            <ns0:Action>
	            <ns0:MBeanKey>ManagementActions</ns0:MBeanKey>
	            <ns0:OperationName>purgePersistenceData</ns0:OperationName>
	            <ns0:DisplayName>Purge persistence data</ns0:DisplayName>
	            <ns0:Description>Deletes persistence data</ns0:Description>
                <ns0:Enabled>false</ns0:Enabled>	            
            </ns0:Action>
            <ns0:Action isGroup="true">
                <ns0:DisplayName>Monitor Actions</ns0:DisplayName>
                <ns0:Description>Actions related to onitoring</ns0:Description>
                <ns0:Action>
                    <ns0:MBeanKey>ManagementActions</ns0:MBeanKey>
                    <ns0:OperationName>purgeMonitorData</ns0:OperationName>
                    <ns0:DisplayName>Purge data</ns0:DisplayName>
                    <ns0:Description>Purges monitoring data</ns0:Description>
                    <ns0:Enabled>false</ns0:Enabled>                    
                </ns0:Action>
                <ns0:Action>
                    <ns0:MBeanKey>ManagementActions</ns0:MBeanKey>
                    <ns0:OperationName>archiveData</ns0:OperationName>
                    <ns0:DisplayName>Archive data</ns0:DisplayName>
                    <ns0:Description>Archives monitoring data</ns0:Description>
                    <ns0:Enabled>false</ns0:Enabled>
                </ns0:Action>
            </ns0:Action>
</ns0:root>

The UI on NB most probably would look like,

JSPWiki v2.4.100
[RSS]
« Home Index Changes Prefs
This particular version was published on 11-Dec-07 19:15 PM, -0800 by Kiran K Bhumana