MBeanUtil.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.metrics.util;
  19. import java.lang.management.ManagementFactory;
  20. import javax.management.InstanceNotFoundException;
  21. import javax.management.MBeanServer;
  22. import javax.management.MalformedObjectNameException;
  23. import javax.management.ObjectName;
  24. import javax.management.InstanceAlreadyExistsException;
  25. /**
  26.  * This util class provides a method to register an MBean using
  27.  * our standard naming convention as described in the doc
  28.  *  for {link {@link #registerMBean(String, String, Object)}
  29.  *
  30.  */
  31. public class MBeanUtil {
  32.   /**
  33.    * Register the MBean using our standard MBeanName format
  34.    * "hadoop:service=<serviceName>,name=<nameName>"
  35.    * Where the <serviceName> and <nameName> are the supplied parameters
  36.    *    
  37.    * @param serviceName
  38.    * @param nameName
  39.    * @param theMbean - the MBean to register
  40.    * @return the named used to register the MBean
  41.    */
  42.   static public ObjectName registerMBean(final String serviceName, 
  43.    final String nameName,
  44.    final Object theMbean) {
  45.     final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
  46.     ObjectName name = getMBeanName(serviceName, nameName);
  47.     try {
  48.       mbs.registerMBean(theMbean, name);
  49.       return name;
  50.     } catch (InstanceAlreadyExistsException ie) {
  51.       // Ignore if instance already exists 
  52.     } catch (Exception e) {
  53.       e.printStackTrace();
  54.     }
  55.     return null;
  56.   }
  57.   
  58.   static public void unregisterMBean(ObjectName mbeanName) {
  59.     final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
  60.     if (mbeanName == null) 
  61.         return;
  62.     try {
  63.       mbs.unregisterMBean(mbeanName);
  64.     } catch (InstanceNotFoundException e ) {
  65.       // ignore
  66.     } catch (Exception e) {
  67.       e.printStackTrace();
  68.     } 
  69.   }
  70.   
  71.   static private ObjectName getMBeanName(final String serviceName,
  72.     final String nameName) {
  73.     ObjectName name = null;
  74.     try {
  75.       name = new ObjectName("hadoop:" +
  76.                   "service=" + serviceName + ",name=" + nameName);
  77.     } catch (MalformedObjectNameException e) {
  78.       e.printStackTrace();
  79.     }
  80.     return name;
  81.   }
  82. }