< prev index next >
src/share/classes/sun/management/ExtendedPlatformComponent.java
Print this page
*** 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 >