< prev index next >

src/share/classes/sun/management/ExtendedPlatformComponent.java

Print this page
rev 13489 : 8223147: JFR Backport
8199712: Flight Recorder
8203346: JFR: Inconsistent signature of jfr_add_string_constant
8195817: JFR.stop should require name of recording
8195818: JFR.start should increase autogenerated name by one
8195819: Remove recording=x from jcmd JFR.check output
8203921: JFR thread sampling is missing fixes from JDK-8194552
8203929: Limit amount of data for JFR.dump
8203664: JFR start failure after AppCDS archive created with JFR StartFlightRecording
8003209: JFR events for network utilization
8207392: [PPC64] Implement JFR profiling

*** 23,35 **** --- 23,38 ---- * questions. */ package sun.management; + import java.lang.reflect.InvocationTargetException; + import java.util.Collection; import java.util.Collections; import java.util.List; import java.lang.management.PlatformManagedObject; + import java.lang.reflect.Method; /** * Class to allow for an extended set of platform MXBeans */ public final class ExtendedPlatformComponent {
*** 38,54 **** --- 41,79 ---- /** * Get the extended set of platform MXBeans that should be registered in the * platform MBeanServer, or an empty list if there are no such MXBeans. */ public static List<? extends PlatformManagedObject> getMXBeans() { + PlatformManagedObject o = getFlightRecorderBean(); + if (o != null) { + return Collections.singletonList(o); + } else { return Collections.emptyList(); } + } /** * Returns the extended platform MXBean implementing the given * mxbeanInterface, or null if there is no such MXBean. */ public static <T extends PlatformManagedObject> T getMXBean(Class<T> mxbeanInterface) { + + if ("jdk.management.jfr.FlightRecorderMXBean".equals(mxbeanInterface.getName())) { + return (T)getFlightRecorderBean(); + } return null; } + + private static PlatformManagedObject getFlightRecorderBean() { + PlatformManagedObject object = null; + try { + Class provider = Class.forName("jdk.management.jfr.internal.FlightRecorderMXBeanProvider"); + Method m = provider.getDeclaredMethod("getFlightRecorderMXBean"); + + object = (PlatformManagedObject)m.invoke(null); + } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + // no jfr? + } + return object; + } }
< prev index next >