mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-20 11:50:25 +00:00
8044473: Allow for extended set of platform MXBeans
Add ExtendedPlatformComponent Reviewed-by: dfuchs
This commit is contained in:
parent
55312612fb
commit
e99423e062
@ -52,6 +52,7 @@ import java.security.PrivilegedActionException;
|
||||
import java.security.PrivilegedExceptionAction;
|
||||
import javax.management.JMX;
|
||||
import sun.management.ManagementFactoryHelper;
|
||||
import sun.management.ExtendedPlatformComponent;
|
||||
|
||||
/**
|
||||
* The {@code ManagementFactory} class is a factory class for getting
|
||||
@ -489,6 +490,12 @@ public class ManagementFactory {
|
||||
for (Map.Entry<ObjectName, DynamicMBean> e : dynmbeans.entrySet()) {
|
||||
addDynamicMBean(platformMBeanServer, e.getValue(), e.getKey());
|
||||
}
|
||||
for (final PlatformManagedObject o :
|
||||
ExtendedPlatformComponent.getMXBeans()) {
|
||||
if (!platformMBeanServer.isRegistered(o.getObjectName())) {
|
||||
addMXBean(platformMBeanServer, o);
|
||||
}
|
||||
}
|
||||
}
|
||||
return platformMBeanServer;
|
||||
}
|
||||
@ -655,9 +662,14 @@ public class ManagementFactory {
|
||||
public static <T extends PlatformManagedObject>
|
||||
T getPlatformMXBean(Class<T> mxbeanInterface) {
|
||||
PlatformComponent pc = PlatformComponent.getPlatformComponent(mxbeanInterface);
|
||||
if (pc == null)
|
||||
if (pc == null) {
|
||||
T mbean = ExtendedPlatformComponent.getMXBean(mxbeanInterface);
|
||||
if (mbean != null) {
|
||||
return mbean;
|
||||
}
|
||||
throw new IllegalArgumentException(mxbeanInterface.getName() +
|
||||
" is not a platform management interface");
|
||||
}
|
||||
if (!pc.isSingleton())
|
||||
throw new IllegalArgumentException(mxbeanInterface.getName() +
|
||||
" can have zero or more than one instances");
|
||||
@ -690,9 +702,14 @@ public class ManagementFactory {
|
||||
public static <T extends PlatformManagedObject> List<T>
|
||||
getPlatformMXBeans(Class<T> mxbeanInterface) {
|
||||
PlatformComponent pc = PlatformComponent.getPlatformComponent(mxbeanInterface);
|
||||
if (pc == null)
|
||||
if (pc == null) {
|
||||
T mbean = ExtendedPlatformComponent.getMXBean(mxbeanInterface);
|
||||
if (mbean != null) {
|
||||
return Collections.singletonList(mbean);
|
||||
}
|
||||
throw new IllegalArgumentException(mxbeanInterface.getName() +
|
||||
" is not a platform management interface");
|
||||
}
|
||||
return Collections.unmodifiableList(pc.getMXBeans(mxbeanInterface));
|
||||
}
|
||||
|
||||
@ -737,9 +754,17 @@ public class ManagementFactory {
|
||||
throws java.io.IOException
|
||||
{
|
||||
PlatformComponent pc = PlatformComponent.getPlatformComponent(mxbeanInterface);
|
||||
if (pc == null)
|
||||
if (pc == null) {
|
||||
T mbean = ExtendedPlatformComponent.getMXBean(mxbeanInterface);
|
||||
if (mbean != null) {
|
||||
ObjectName on = mbean.getObjectName();
|
||||
return ManagementFactory.newPlatformMXBeanProxy(connection,
|
||||
on.getCanonicalName(),
|
||||
mxbeanInterface);
|
||||
}
|
||||
throw new IllegalArgumentException(mxbeanInterface.getName() +
|
||||
" is not a platform management interface");
|
||||
}
|
||||
if (!pc.isSingleton())
|
||||
throw new IllegalArgumentException(mxbeanInterface.getName() +
|
||||
" can have zero or more than one instances");
|
||||
@ -781,6 +806,13 @@ public class ManagementFactory {
|
||||
{
|
||||
PlatformComponent pc = PlatformComponent.getPlatformComponent(mxbeanInterface);
|
||||
if (pc == null) {
|
||||
T mbean = ExtendedPlatformComponent.getMXBean(mxbeanInterface);
|
||||
if (mbean != null) {
|
||||
ObjectName on = mbean.getObjectName();
|
||||
T proxy = ManagementFactory.newPlatformMXBeanProxy(connection,
|
||||
on.getCanonicalName(), mxbeanInterface);
|
||||
return Collections.singletonList(proxy);
|
||||
}
|
||||
throw new IllegalArgumentException(mxbeanInterface.getName() +
|
||||
" is not a platform management interface");
|
||||
}
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sun.management;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.lang.management.PlatformManagedObject;
|
||||
|
||||
/**
|
||||
* Class to allow for an extended set of platform MXBeans
|
||||
*/
|
||||
public final class ExtendedPlatformComponent {
|
||||
private ExtendedPlatformComponent() {} // Don't create any instances
|
||||
|
||||
/**
|
||||
* 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() {
|
||||
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) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user