Пример #1
0
  /**
   * Returns the platform {@link javax.management.MBeanServer MBeanServer}. On the first call to
   * this method, it first creates the platform <tt>MBeanServer</tt> by calling the {@link
   * javax.management.MBeanServerFactory#createMBeanServer MBeanServerFactory.createMBeanServer}
   * method and registers the platform MXBeans in this platform <tt>MBeanServer</tt> using the <a
   * href="#MXBeanNames">MXBean names</a> defined in the class description. This method, in
   * subsequent calls, will simply return the initially created platform <tt>MBeanServer</tt>.
   *
   * <p>MXBeans that get created and destroyed dynamically, for example, memory {@link
   * MemoryPoolMXBean pools} and {@link MemoryManagerMXBean managers}, will automatically be
   * registered and deregistered into the platform <tt>MBeanServer</tt>.
   *
   * <p>If the system property <tt>javax.management.builder.initial</tt> is set, the platform
   * <tt>MBeanServer</tt> creation will be done by the specified {@link
   * javax.management.MBeanServerBuilder}.
   *
   * <p>It is recommended that this platform MBeanServer also be used to register other application
   * managed beans besides the platform MXBeans. This will allow all MBeans to be published through
   * the same <tt>MBeanServer</tt> and hence allow for easier network publishing and discovery. Name
   * conflicts with the platform MXBeans should be avoided.
   *
   * @return the platform <tt>MBeanServer</tt>; the platform MXBeans are registered into the
   *     platform <tt>MBeanServer</tt> at the first time this method is called.
   * @exception SecurityException if there is a security manager and the caller does not have the
   *     permission required by {@link javax.management.MBeanServerFactory#createMBeanServer}.
   * @see javax.management.MBeanServerFactory
   * @see javax.management.MBeanServerFactory#createMBeanServer
   */
  public static synchronized MBeanServer getPlatformMBeanServer() {
    SecurityManager sm = System.getSecurityManager();
    if (sm != null) {
      Permission perm = new MBeanServerPermission("createMBeanServer");
      sm.checkPermission(perm);
    }

    if (platformMBeanServer == null) {
      platformMBeanServer = MBeanServerFactory.createMBeanServer();
      for (PlatformComponent pc : PlatformComponent.values()) {
        List<? extends PlatformManagedObject> list = pc.getMXBeans(pc.getMXBeanInterface());
        for (PlatformManagedObject o : list) {
          // Each PlatformComponent represents one management
          // interface. Some MXBean may extend another one.
          // The MXBean instances for one platform component
          // (returned by pc.getMXBeans()) might be also
          // the MXBean instances for another platform component.
          // e.g. com.sun.management.GarbageCollectorMXBean
          //
          // So need to check if an MXBean instance is registered
          // before registering into the platform MBeanServer
          if (!platformMBeanServer.isRegistered(o.getObjectName())) {
            addMXBean(platformMBeanServer, o);
          }
        }
      }
    }
    return platformMBeanServer;
  }
Пример #2
0
 /**
  * Returns the set of {@code Class} objects, subinterface of {@link PlatformManagedObject},
  * representing all management interfaces for monitoring and managing the Java platform.
  *
  * @return the set of {@code Class} objects, subinterface of {@link PlatformManagedObject}
  *     representing the management interfaces for monitoring and managing the Java platform.
  * @since 1.7
  */
 public static Set<Class<? extends PlatformManagedObject>> getPlatformManagementInterfaces() {
   Set<Class<? extends PlatformManagedObject>> result = new TreeSet<>();
   for (PlatformComponent component : PlatformComponent.values()) {
     result.add(component.getMXBeanInterface());
   }
   return Collections.unmodifiableSet(result);
 }
Пример #3
0
 /**
  * Returns a list of {@code Class} objects, subinterface of {@link PlatformManagedObject},
  * representing all management interfaces for monitoring and managing the Java platform.
  *
  * @return a list of {@code Class} objects, subinterface of {@link PlatformManagedObject}
  *     representing the management interfaces for monitoring and managing the Java platform.
  * @since 1.7
  */
 public static List<Class<? extends PlatformManagedObject>> getAllPlatformMXBeanInterfaces() {
   List<Class<? extends PlatformManagedObject>> result =
       new ArrayList<Class<? extends PlatformManagedObject>>();
   for (PlatformComponent component : PlatformComponent.values()) {
     result.add(component.getMXBeanInterface());
   }
   return result;
 }
Пример #4
0
 /**
  * Returns the list of the platform MXBean proxies for forwarding the method calls of the {@code
  * mxbeanInterface} through the given {@code MBeanServerConnection}. The returned list may contain
  * zero, one, or more instances. The number of instances in the returned list is defined in the
  * specification of the given management interface.
  *
  * @param connection the {@code MBeanServerConnection} to forward to.
  * @param mxbeanInterface a management interface for a platform MXBean
  * @return the list of platform MXBean proxies for forwarding the method calls of the {@code
  *     mxbeanInterface} through the given {@code MBeanServerConnection}.
  * @throws IllegalArgumentException if {@code mxbeanInterface} is not a management interface for
  *     the platform.
  * @throws java.io.IOException if a communication problem occurred when accessing the {@code
  *     MBeanServerConnection}.
  * @since 1.7
  */
 public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(
     MBeanServerConnection connection, Class<T> mxbeanInterface) throws java.io.IOException {
   String className = mxbeanInterface.getName();
   for (PlatformComponent component : PlatformComponent.values()) {
     // comparing the class name first instead of the Class instance
     // to avoid causing unnecessary class loading of
     // the other MXBean interfaces
     if (className.equals(component.getMXBeanInterfaceName())) {
       if (component.getMXBeanInterface() == mxbeanInterface) {
         return component.getMXBeans(connection, mxbeanInterface);
       }
     }
   }
   throw new IllegalArgumentException(
       mxbeanInterface.getName() + " is not implemented by any of the platform MXBeans.");
 }