类javax.management.MBeanNotificationInfo源码实例Demo

下面列出了怎么用javax.management.MBeanNotificationInfo的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: TencentKona-8   文件: MXBeanInteropTest2.java
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());
    }
}
 
/**
 * 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();
}
 
源代码3 项目: TencentKona-8   文件: MustBeValidCommand.java
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!");
}
 
源代码4 项目: dragonwell8_jdk   文件: MBeanIntrospector.java
/**
 * 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());
    }
}
 
源代码5 项目: dragonwell8_jdk   文件: CommunicatorServer.java
/**
 * 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();
}
 
源代码6 项目: dragonwell8_jdk   文件: MustBeValidCommand.java
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!");
}
 
源代码7 项目: dragonwell8_jdk   文件: Basic.java
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)
            };
}
 
源代码8 项目: dragonwell8_jdk   文件: MXBeanInteropTest2.java
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());
    }
}
 
源代码9 项目: TencentKona-8   文件: ResultLogManager.java
/**
 * 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")
    };
}
 
源代码10 项目: TencentKona-8   文件: Basic.java
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)
            };
}
 
源代码11 项目: TencentKona-8   文件: MBeanIntrospector.java
/**
 * 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());
    }
}
 
源代码12 项目: TencentKona-8   文件: CommunicatorServer.java
/**
 * 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();
}
 
源代码13 项目: TencentKona-8   文件: RelationService.java
/**
 * 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};
}
 
源代码14 项目: Tomcat8-Source-Read   文件: ConnectionPool.java
@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;
}
 
源代码15 项目: Tomcat8-Source-Read   文件: ConnectionPool.java
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};
}
 
@Test
public void testNotificationMetadata() throws Exception {
	ModelMBeanInfo info = (ModelMBeanInfo) getMBeanInfo();
	MBeanNotificationInfo[] notifications = info.getNotifications();
	assertEquals("Incorrect number of notifications", 1, notifications.length);
	assertEquals("Incorrect notification name", "My Notification", notifications[0].getName());

	String[] notifTypes = notifications[0].getNotifTypes();

	assertEquals("Incorrect number of notification types", 2, notifTypes.length);
	assertEquals("Notification type.foo not found", "type.foo", notifTypes[0]);
	assertEquals("Notification type.bar not found", "type.bar", notifTypes[1]);
}
 
源代码17 项目: TencentKona-8   文件: ModelMBeanInfoSupport.java
/**
 * 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();
    }
}
 
源代码18 项目: jdk1.8-source-analysis   文件: SnmpMibTable.java
/**
 * 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),
    };
}
 
源代码22 项目: jdk1.8-source-analysis   文件: Timer.java
public synchronized MBeanNotificationInfo[] getNotificationInfo() {
    Set<String> notifTypes = new TreeSet<String>();
    for (Object[] entry : timerTable.values()) {
        TimerNotification notif = (TimerNotification)
            entry[TIMER_NOTIF_INDEX];
        notifTypes.add(notif.getType());
    }
    String[] notifTypesArray =
        notifTypes.toArray(new String[0]);
    return new MBeanNotificationInfo[] {
        new MBeanNotificationInfo(notifTypesArray,
                                  TimerNotification.class.getName(),
                                  "Notification sent by Timer MBean")
    };
}
 
源代码23 项目: dragonwell8_jdk   文件: DirectoryScanner.java
/**
 * 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"
                )
    };
}
 
源代码24 项目: TencentKona-8   文件: MustBeValidCommand.java
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;
}
 
源代码25 项目: dragonwell8_jdk   文件: FlightRecorderMXBeanImpl.java
private static MBeanNotificationInfo[] createNotificationInfo() {
    String[] types = new String[] { AttributeChangeNotification.ATTRIBUTE_CHANGE };
    String name = AttributeChangeNotification.class.getName();
    String description = "Notifies if the RecordingState has changed for one of the recordings, for example if a recording starts or stops";
    MBeanNotificationInfo info = new MBeanNotificationInfo(types, name, description);
    return new MBeanNotificationInfo[] { info };
}
 
源代码26 项目: dragonwell8_jdk   文件: GarbageCollectorImpl.java
@Override
public MBeanNotificationInfo[] getNotificationInfo() {
    return new MBeanNotificationInfo[]{
        new MBeanNotificationInfo(gcNotifTypes,
        notifName,
        "GC Notification")
    };
}
 
源代码27 项目: dragonwell8_jdk   文件: MemoryManagerImpl.java
public MBeanNotificationInfo[] getNotificationInfo() {
    synchronized (this) {
        if(notifInfo == null) {
            notifInfo = new MBeanNotificationInfo[0];
        }
    }
    return notifInfo;
}
 
源代码28 项目: dragonwell8_jdk   文件: SnmpMibTable.java
/**
 * 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;
}
 
源代码29 项目: TencentKona-8   文件: NotSerializableNotifTest.java
public MBeanNotificationInfo[] getNotificationInfo() {
    final String[] ntfTypes = {myType};

    final MBeanNotificationInfo[] ntfInfoArray  = {
        new MBeanNotificationInfo(ntfTypes,
                                  "javax.management.Notification",
                                  "Notifications sent by the NotificationEmitter")};

    return ntfInfoArray;
}
 
源代码30 项目: dragonwell8_jdk   文件: ModelMBeanInfoSupport.java
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;
}
 
 类所在包
 同包方法