Note that there are some explanatory texts on larger screens.

plurals
  1. POWhen is JMXBean initialised
    primarykey
    data
    text
    <p>IMEI I am new to MXbeans. I want to understand when is the MXBean actually initialized, in the application which I am supporting we have a notification system and I can not see my MXBean in JConsole until there is some notification arriving. Here is a code of my MXBean.</p> <pre><code> package mecomaany.instrumentation; import java.lang.management.ManagementFactory; import java.util.ArrayList; import javax.management.Attribute; import javax.management.AttributeList; import javax.management.AttributeNotFoundException; import javax.management.DynamicMBean; import javax.management.InvalidAttributeValueException; import javax.management.MBeanAttributeInfo; import javax.management.MBeanException; import javax.management.MBeanInfo; import javax.management.MBeanOperationInfo; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.ReflectionException; import BulkCMIRP_MxBean; import SoapIRPLogger; /** * This dynamic MBean exposes a method to return the 10 latest Basic CM * operations. * * @author eshtrom * */ public class BasicCMIRP_MxBean implements DynamicMBean{ private static final String CLASS_NAME = BasicCMIRP_MxBean.class.getCanonicalName(); private static final String MX_BEAN_NAME = BasicCMIRP_MxBean.class.getCanonicalName() + ":Type=BasicCMIRP_MxBean"; private static final String BEAN_DESCRIPTION = "Instrumentation bean for SOAP Basic CM IRP."; private static final int NUM_OPERATIONS_TO_RECORD = 10; private final ArrayList&lt;String&gt; basicCMOperations = new ArrayList&lt;String&gt;(); /** * Register the bean. This is a best effort attempt. If registration fails * we'll report it but nothing more. */ public BasicCMIRP_MxBean() { registerMxBean(); } /** * Attempt to unregister and clean up the MX beans. */ public void destroy() { basicCMOperations.clear(); unregisterMxBean(); } /** * This method returns a description of this bean to the JMX interface. The * description is just a list of names of the currently stored attributes. */ public synchronized MBeanInfo getMBeanInfo() { final MBeanAttributeInfo[] attributes = new MBeanAttributeInfo[0]; final MBeanOperationInfo[] operations = { new MBeanOperationInfo("getBasicCMInstrumentation", "Get instrumentation Basic CM IRP bean.", null, "String[]", MBeanOperationInfo.INFO) }; return new MBeanInfo(this.getClass().getName(), BEAN_DESCRIPTION, attributes, null, operations, null); } /** * Callback to execute methods exposed by this dynamic MBean. */ public Object invoke(final String actionName, final Object[] params, final String[] signature) throws MBeanException, ReflectionException { SoapIRPLogger.enter(CLASS_NAME, "invoke"); if (actionName != null) { if (actionName.equals("getBulkCMInstrumentation")) { return getBasicCMInstrumentation(); } } SoapIRPLogger.exit(CLASS_NAME, "invoke"); throw new ReflectionException(new NoSuchMethodException(actionName)); } /** * Construct a human readable very of the last 10 operations and return it. * * @return string array as an object. */ private Object getBasicCMInstrumentation() { SoapIRPLogger.enter(CLASS_NAME, "getBasicCMInstrumentation"); String[] result = new String[basicCMOperations.size()]; int index = 0; for (String operation : basicCMOperations) { result[index] = operation; index++; } SoapIRPLogger.exit(CLASS_NAME, "getBasicCMInstrumentation"); return result; } /** * No attributes are writable so this method will throw an exception. */ public void setAttribute(final Attribute arg0) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException { throw new AttributeNotFoundException("All attributes on this bean are read only."); } /** * No attributes are writable so this method will return an empty list. */ public AttributeList setAttributes(final AttributeList arg0) { return new AttributeList(); } public Object getAttribute(final String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException { throw new AttributeNotFoundException("No attributes are defined on this MX bean."); } /** * No attributes are readable so this method will return an empty list. */ public AttributeList getAttributes(final String[] attributes) { return new AttributeList(); } /** * Add or update and instrumentation attribute. A null attribute name will * be ignored. * * @param name * @param value */ public void updateInstrumentationAttibute(final String name, final String value) { // The only attribute that this bean supports is Bulk CM operations. if (name.compareTo("BasicCM_Operations") == 0) { basicCMOperations.add(value); // We'll only record a maximum of 10 operations. If we exceed the // max, remove the oldest. if (basicCMOperations.size() &gt; NUM_OPERATIONS_TO_RECORD) { basicCMOperations.remove(0); } } } public ObjectName getBeanName() throws MalformedObjectNameException, NullPointerException { // Construct the ObjectName for the MBean we will register return new ObjectName(MX_BEAN_NAME); } /** * Register the bean. */ protected void registerMxBean() { try { ManagementFactory.getPlatformMBeanServer().registerMBean(this, this.getBeanName()); } catch (Exception e) { SoapIRPLogger.exception(CLASS_NAME, "Constructor", "Failed to register BulkCMIRP_MxBean management beans.", e); } } protected void unregisterMxBean() { try { ManagementFactory.getPlatformMBeanServer().unregisterMBean(this.getBeanName()); } catch (Exception e) { // Suppress exceptions, we're closing down anyway. } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload