@Override public MBeanInfo getMBeanInfo() { ArrayList<OpenMBeanAttributeInfoSupport> attributes = new ArrayList<>(); attributes.add(new OpenMBeanAttributeInfoSupport("enabled", "enabled", SimpleType.BOOLEAN, true, true, true)); for (String type : registry.getTypes()) { attributes.add(new OpenMBeanAttributeInfoSupport(type, type, getCompositeType(type), true, false, false)); } OpenMBeanParameterInfo[] params = new OpenMBeanParameterInfoSupport[0]; OpenMBeanOperationInfoSupport reset = new OpenMBeanOperationInfoSupport("reset", "Reset all Metrics", params, SimpleType.VOID, MBeanOperationInfo.ACTION); OpenMBeanInfoSupport PSOMBInfo = new OpenMBeanInfoSupport(this.getClass().getName(), description, attributes.toArray(new OpenMBeanAttributeInfoSupport[0]), new OpenMBeanConstructorInfoSupport[0], new OpenMBeanOperationInfoSupport[] { reset }, new MBeanNotificationInfo[0]); return PSOMBInfo; }
@Override public MBeanNotificationInfo[] getNotificationInfo() { // FIXME: i18n if (notificationInfo == null) { notificationInfo = new MBeanNotificationInfo[] { new MBeanNotificationInfo(new String[] { "j2ee.object.created" }, Notification.class.getName(), "web application is created"), new MBeanNotificationInfo(new String[] { "j2ee.state.starting" }, Notification.class.getName(), "change web application is starting"), new MBeanNotificationInfo(new String[] { "j2ee.state.running" }, Notification.class.getName(), "web application is running"), new MBeanNotificationInfo(new String[] { "j2ee.state.stopping" }, Notification.class.getName(), "web application start to stopped"), new MBeanNotificationInfo(new String[] { "j2ee.object.stopped" }, Notification.class.getName(), "web application is stopped"), new MBeanNotificationInfo(new String[] { "j2ee.object.deleted" }, Notification.class.getName(), "web application is deleted") }; } return notificationInfo; }
/** * Return the MBeanInfo for the given resource, based on the given * per-interface data. */ final MBeanInfo getMBeanInfo(Object resource, PerInterface<M> perInterface) { MBeanInfo mbi = getClassMBeanInfo(resource.getClass(), perInterface); MBeanNotificationInfo[] notifs = findNotifications(resource); if (notifs == null || notifs.length == 0) return mbi; else { return new MBeanInfo(mbi.getClassName(), mbi.getDescription(), mbi.getAttributes(), mbi.getConstructors(), mbi.getOperations(), notifs, mbi.getDescriptor()); } }
/** * Returns an array of MBeanNotificationInfo objects describing * the notification types sent by this CommunicatorServer. * There is only one type of notifications sent by the CommunicatorServer: * it is <tt>{@link javax.management.AttributeChangeNotification}</tt>, * sent when the <tt>State</tt> attribute of this CommunicatorServer * changes. */ @Override public MBeanNotificationInfo[] getNotificationInfo() { // Initialize notifInfos on first call to getNotificationInfo() // if (notifInfos == null) { notifInfos = new MBeanNotificationInfo[1]; String[] notifTypes = { AttributeChangeNotification.ATTRIBUTE_CHANGE}; notifInfos[0] = new MBeanNotificationInfo( notifTypes, AttributeChangeNotification.class.getName(), "Sent to notify that the value of the State attribute "+ "of this CommunicatorServer instance has changed."); } return notifInfos.clone(); }
/** * Returns a NotificationInfo object containing the name of the Java class * of the notification and the notification types sent. */ public MBeanNotificationInfo[] getNotificationInfo() { RELATION_LOGGER.entering(RelationService.class.getName(), "getNotificationInfo"); String ntfClass = "javax.management.relation.RelationNotification"; String[] ntfTypes = new String[] { RelationNotification.RELATION_BASIC_CREATION, RelationNotification.RELATION_MBEAN_CREATION, RelationNotification.RELATION_BASIC_UPDATE, RelationNotification.RELATION_MBEAN_UPDATE, RelationNotification.RELATION_BASIC_REMOVAL, RelationNotification.RELATION_MBEAN_REMOVAL, }; String ntfDesc = "Sent when a relation is created, updated or deleted."; MBeanNotificationInfo ntfInfo = new MBeanNotificationInfo(ntfTypes, ntfClass, ntfDesc); RELATION_LOGGER.exiting(RelationService.class.getName(), "getNotificationInfo"); return new MBeanNotificationInfo[] {ntfInfo}; }
@Override public MBeanNotificationInfo[] getNotificationInfo() { if (notificationInfo == null) { notificationInfo = new MBeanNotificationInfo[] { new MBeanNotificationInfo(new String[] { "j2ee.object.created" }, Notification.class.getName(), "servlet is created"), new MBeanNotificationInfo(new String[] { "j2ee.state.starting" }, Notification.class.getName(), "servlet is starting"), new MBeanNotificationInfo(new String[] { "j2ee.state.running" }, Notification.class.getName(), "servlet is running"), new MBeanNotificationInfo(new String[] { "j2ee.state.stopped" }, Notification.class.getName(), "servlet start to stopped"), new MBeanNotificationInfo(new String[] { "j2ee.object.stopped" }, Notification.class.getName(), "servlet is stopped"), new MBeanNotificationInfo(new String[] { "j2ee.object.deleted" }, Notification.class.getName(), "servlet is deleted") }; } return notificationInfo; }
public static void main(String[] args) throws Exception { // Instantiate the MBean server // final MBeanAttributeInfo[] atts = makeAttInfos(attributes); final MBeanConstructorInfo[] ctors = makeCtorInfos(constructors); final MBeanOperationInfo[] ops = makeOpInfos(operations); final MBeanNotificationInfo[] notifs = makeNotifInfos(notificationclasses); for (int i=0; i<mbeanclasses.length;i++) { System.out.println("Create an MBeanInfo: " + mbeanclasses[i][0]); final MBeanInfo mbi = new MBeanInfo(mbeanclasses[i][1],mbeanclasses[i][0], atts, ctors, ops, notifs); } // Test OK! // System.out.println("All MBeanInfo successfuly created!"); System.out.println("Bye! Bye!"); }
/** * This MBean emits three kind of notifications: * <pre> * <i>com.sun.jmx.examples.scandir.log.file.switched</i> * <i>com.sun.jmx.examples.scandir.log.memory.full</i> * <i>com.sun.jmx.examples.scandir.log.memory.cleared</i> * </pre> **/ public MBeanNotificationInfo[] getNotificationInfo() { return new MBeanNotificationInfo[] { new MBeanNotificationInfo(new String[] { LOG_FILE_CHANGED}, Notification.class.getName(), "Emitted when the log file is switched") , new MBeanNotificationInfo(new String[] { MEMORY_LOG_MAX_CAPACITY}, Notification.class.getName(), "Emitted when the memory log capacity is reached") , new MBeanNotificationInfo(new String[] { MEMORY_LOG_CLEARED}, Notification.class.getName(), "Emitted when the memory log is cleared") }; }
public MBeanNotificationInfo[] getNotificationInfo() { if (notifDescriptorAtt == null) { initNotifDescriptorAtt(); } return new MBeanNotificationInfo[]{ new MBeanNotificationInfo(new String[]{ NOTIF_TYPE_0 }, javax.management.Notification.class.getName(), "Standard JMX Notification", notifDescriptorAtt), new MBeanNotificationInfo(new String[]{ NOTIF_TYPE_1 }, SqeNotification.class.getName(), "SQE Notification", notifDescriptorAtt) }; }
private void printMBeanInfo(MBeanInfo mbInfo) { System.out.println("Description " + mbInfo.getDescription()); for (MBeanConstructorInfo ctor : mbInfo.getConstructors()) { System.out.println("Constructor " + ctor.getName()); } for (MBeanAttributeInfo att : mbInfo.getAttributes()) { System.out.println("Attribute " + att.getName() + " [" + att.getType() + "]"); } for (MBeanOperationInfo oper : mbInfo.getOperations()) { System.out.println("Operation " + oper.getName()); } for (MBeanNotificationInfo notif : mbInfo.getNotifications()) { System.out.println("Notification " + notif.getName()); } }
private int checkMBeanInfo(MBeanInfo mbi, Descriptor refDescr) { MBeanNotificationInfo[] notifsInfo = mbi.getNotifications(); int res = 0; for (MBeanNotificationInfo mbni : notifsInfo) { if ( mbni.getDescriptor().equals(refDescr) ) { System.out.println("(OK)"); } else { System.out.println("(ERROR) Descriptor of the notification is " + mbni.getDescriptor() + " as we expect " + refDescr); res++; } } return res; }
/** * Returns a NotificationInfo object containing the name of the Java class * of the notification and the notification types sent. */ public MBeanNotificationInfo[] getNotificationInfo() { RELATION_LOGGER.log(Level.TRACE, "ENTRY"); String ntfClass = "javax.management.relation.RelationNotification"; String[] ntfTypes = new String[] { RelationNotification.RELATION_BASIC_CREATION, RelationNotification.RELATION_MBEAN_CREATION, RelationNotification.RELATION_BASIC_UPDATE, RelationNotification.RELATION_MBEAN_UPDATE, RelationNotification.RELATION_BASIC_REMOVAL, RelationNotification.RELATION_MBEAN_REMOVAL, }; String ntfDesc = "Sent when a relation is created, updated or deleted."; MBeanNotificationInfo ntfInfo = new MBeanNotificationInfo(ntfTypes, ntfClass, ntfDesc); RELATION_LOGGER.log(Level.TRACE, "RETURN"); return new MBeanNotificationInfo[] {ntfInfo}; }
@Override public MBeanNotificationInfo[] getNotificationInfo() { MBeanNotificationInfo[] pres = super.getNotificationInfo(); MBeanNotificationInfo[] loc = getDefaultNotificationInfo(); MBeanNotificationInfo[] aug = new MBeanNotificationInfo[pres.length + loc.length]; if (pres.length>0) System.arraycopy(pres, 0, aug, 0, pres.length); if (loc.length >0) System.arraycopy(loc, 0, aug, pres.length, loc.length); return aug; }
public static MBeanNotificationInfo[] getDefaultNotificationInfo() { String[] types = new String[] {NOTIFY_INIT, NOTIFY_CONNECT, NOTIFY_ABANDON, SLOW_QUERY_NOTIFICATION, FAILED_QUERY_NOTIFICATION, SUSPECT_ABANDONED_NOTIFICATION, POOL_EMPTY, SUSPECT_RETURNED_NOTIFICATION}; String name = Notification.class.getName(); String description = "A connection pool error condition was met."; MBeanNotificationInfo info = new MBeanNotificationInfo(types, name, description); return new MBeanNotificationInfo[] {info}; }
public MBeanNotificationInfo[] getNotificationInfo() { // FIXME: i18n if(notificationInfo == null) { notificationInfo = new MBeanNotificationInfo[]{ new MBeanNotificationInfo(new String[] { "j2ee.object.created"}, Notification.class.getName(), "web application is created" ), new MBeanNotificationInfo(new String[] { "j2ee.state.starting"}, Notification.class.getName(), "change web application is starting" ), new MBeanNotificationInfo(new String[] { "j2ee.state.running"}, Notification.class.getName(), "web application is running" ), new MBeanNotificationInfo(new String[] { "j2ee.state.stopped"}, Notification.class.getName(), "web application start to stopped" ), new MBeanNotificationInfo(new String[] { "j2ee.object.stopped"}, Notification.class.getName(), "web application is stopped" ), new MBeanNotificationInfo(new String[] { "j2ee.object.deleted"}, Notification.class.getName(), "web application is deleted" ) }; } return notificationInfo; }
static private MBeanNotificationInfo[] makeNotifInfos(String[][] spec) { final MBeanNotificationInfo[] result = new MBeanNotificationInfo[spec.length]; final String[] types = {"valid.type","invalid-type"}; for (int i=0;i<result.length;i++) { System.out.println("\tCreate an MBeanNotificationInfo: " + spec[i][0]); final MBeanNotificationInfo item = new MBeanNotificationInfo(types,spec[i][1],spec[i][0]); result[i]=item; } return result; }
public MBeanNotificationInfo[] getNotificationInfo() { synchronized (this) { if (notifInfo == null) { notifInfo = new MBeanNotificationInfo[1]; notifInfo[0] = new MBeanNotificationInfo(gcNotifTypes, notifName, "GC Notification"); } } return notifInfo; }
public MBeanNotificationInfo[] getNotificationInfo() { synchronized (this) { if (notifInfo == null) { notifInfo = new MBeanNotificationInfo[1]; notifInfo[0] = new MBeanNotificationInfo(notifTypes, notifName, "Memory Notification"); } } return notifInfo; }
public MBeanNotificationInfo[] getNotificationInfo() { synchronized (this) { if(notifInfo == null) { notifInfo = new MBeanNotificationInfo[0]; } } return notifInfo; }
/** * Return a <CODE>NotificationInfo</CODE> object containing the * notification class and the notification type sent by the * <CODE>SnmpMibTable</CODE>. */ @Override public MBeanNotificationInfo[] getNotificationInfo() { String[] types = {SnmpTableEntryNotification.SNMP_ENTRY_ADDED, SnmpTableEntryNotification.SNMP_ENTRY_REMOVED}; MBeanNotificationInfo[] notifsInfo = { new MBeanNotificationInfo (types, "com.sun.jmx.snmp.agent.SnmpTableEntryNotification", "Notifications sent by the SnmpMibTable") }; return notifsInfo; }
public ModelMBeanNotificationInfo getNotification(String inName) throws MBeanException, RuntimeOperationsException { ModelMBeanNotificationInfo retInfo = null; if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) { MODELMBEAN_LOGGER.logp(Level.FINER, ModelMBeanInfoSupport.class.getName(), "getNotification(String)", "Entry"); } if (inName == null) { throw new RuntimeOperationsException( new IllegalArgumentException("Notification name is null"), "Exception occurred trying to get the " + "ModelMBeanNotificationInfo of the MBean"); } MBeanNotificationInfo[] notifList = modelMBeanNotifications; //this.getNotifications(); int numNotifs = 0; if (notifList != null) numNotifs = notifList.length; for (int i=0; (i < numNotifs) && (retInfo == null); i++) { if (inName.equals(notifList[i].getName())) { retInfo = ((ModelMBeanNotificationInfo) notifList[i].clone()); } } if (MODELMBEAN_LOGGER.isLoggable(Level.FINER)) { MODELMBEAN_LOGGER.logp(Level.FINER, ModelMBeanInfoSupport.class.getName(), "getNotification(String)", "Exit"); } return retInfo; }
/** * Deserializes a {@link ModelMBeanInfoSupport} from an {@link ObjectInputStream}. */ private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { if (compat) { // Read an object serialized in the old serial form // ObjectInputStream.GetField fields = in.readFields(); modelMBeanDescriptor = (Descriptor) fields.get("modelMBeanDescriptor", null); if (fields.defaulted("modelMBeanDescriptor")) { throw new NullPointerException("modelMBeanDescriptor"); } modelMBeanAttributes = (MBeanAttributeInfo[]) fields.get("mmbAttributes", null); if (fields.defaulted("mmbAttributes")) { throw new NullPointerException("mmbAttributes"); } modelMBeanConstructors = (MBeanConstructorInfo[]) fields.get("mmbConstructors", null); if (fields.defaulted("mmbConstructors")) { throw new NullPointerException("mmbConstructors"); } modelMBeanNotifications = (MBeanNotificationInfo[]) fields.get("mmbNotifications", null); if (fields.defaulted("mmbNotifications")) { throw new NullPointerException("mmbNotifications"); } modelMBeanOperations = (MBeanOperationInfo[]) fields.get("mmbOperations", null); if (fields.defaulted("mmbOperations")) { throw new NullPointerException("mmbOperations"); } } else { // Read an object serialized in the new serial form // in.defaultReadObject(); } }
/** * <p>Returns an array indicating the notifications that this MBean * sends. The implementation in <code>JMXConnectorServer</code> * returns an array with one element, indicating that it can emit * notifications of class {@link JMXConnectionNotification} with * the types defined in that class. A subclass that can emit other * notifications should return an array that contains this element * plus descriptions of the other notifications.</p> * * @return the array of possible notifications. */ @Override public MBeanNotificationInfo[] getNotificationInfo() { final String[] types = { JMXConnectionNotification.OPENED, JMXConnectionNotification.CLOSED, JMXConnectionNotification.FAILED, }; final String className = JMXConnectionNotification.class.getName(); final String description = "A client connection has been opened or closed"; return new MBeanNotificationInfo[] { new MBeanNotificationInfo(types, className, description), }; }
/** * Returns a NotificationInfo object containing the name of the Java class of the notification * and the notification types sent by this notification broadcaster. */ public MBeanNotificationInfo[] getNotificationInfo() { MBeanNotificationInfo[] ntfInfoArray = new MBeanNotificationInfo[1]; String[] ntfTypes = new String[1]; ntfTypes[0] = myType; ntfInfoArray[0] = new MBeanNotificationInfo(ntfTypes, "javax.management.Notification", "Notifications sent by the NotificationEmitter"); return ntfInfoArray; }
@Override public MBeanNotificationInfo[] getNotificationInfo() { String[] types = new String[] {JMX_MONITOR_RATE_LIMIT_SERVICE_TYPE, MonitorNotification.THRESHOLD_VALUE_EXCEEDED}; MBeanNotificationInfo info = new MBeanNotificationInfo(types, Notification.class.getName(), "rate-limited request processed"); return new MBeanNotificationInfo[] {info}; }
/** * The {@link DirectoryScannerMXBean} may send two types of * notifications: filematch, and state attribute changed. **/ public MBeanNotificationInfo[] getNotificationInfo() { return new MBeanNotificationInfo[] { new MBeanNotificationInfo( new String[] {FILE_MATCHES_NOTIFICATION}, Notification.class.getName(), "Emitted when a file that matches the scan criteria is found" ), new MBeanNotificationInfo( new String[] {AttributeChangeNotification.ATTRIBUTE_CHANGE}, AttributeChangeNotification.class.getName(), "Emitted when the State attribute changes" ) }; }
/** * We emit an {@code AttributeChangeNotification} when the {@code State} * attribute changes. **/ public MBeanNotificationInfo[] getNotificationInfo() { return new MBeanNotificationInfo[] { new MBeanNotificationInfo(new String[] { AttributeChangeNotification.ATTRIBUTE_CHANGE}, AttributeChangeNotification.class.getName(), "Emitted when the State attribute changes") }; }
@Override public MBeanNotificationInfo[] getNotificationInfo() { return new MBeanNotificationInfo[]{ new MBeanNotificationInfo(gcNotifTypes, notifName, "GC Notification") }; }
public MBeanNotificationInfo[] getNotificationInfo() { final String[] ntfTypes = {myType}; final MBeanNotificationInfo[] ntfInfoArray = { new MBeanNotificationInfo(ntfTypes, "javax.management.Notification", "Notifications sent by the NotificationEmitter")}; return ntfInfoArray; }