JMXs.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,
  13.  * software distributed under the License is distributed on an
  14.  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15.  * KIND, either express or implied.  See the License for the
  16.  * specific language governing permissions and limitations
  17.  * under the License.
  18.  */
  19. package org.apache.commons.jcs3.jcache.jmx;

  20. import javax.management.MBeanServer;
  21. import javax.management.MBeanServerFactory;
  22. import javax.management.ObjectName;
  23. import java.lang.management.ManagementFactory;

  24. public class JMXs
  25. {
  26.     private static final MBeanServer SERVER = findMBeanServer();

  27.     public static MBeanServer server()
  28.     {
  29.         return SERVER;
  30.     }

  31.     public static void register(final ObjectName on, final Object bean)
  32.     {
  33.         if (!SERVER.isRegistered(on))
  34.         {
  35.             try
  36.             {
  37.                 SERVER.registerMBean(bean, on);
  38.             }
  39.             catch (final Exception e)
  40.             {
  41.                 throw new IllegalStateException(e.getMessage(), e);
  42.             }
  43.         }
  44.     }

  45.     public static void unregister(final ObjectName on)
  46.     {
  47.         if (SERVER.isRegistered(on))
  48.         {
  49.             try
  50.             {
  51.                 SERVER.unregisterMBean(on);
  52.             }
  53.             catch (final Exception e)
  54.             {
  55.                 // no-op
  56.             }
  57.         }
  58.     }

  59.     private static MBeanServer findMBeanServer()
  60.     {
  61.         if (System.getProperty("javax.management.builder.initial") != null)
  62.         {
  63.             return MBeanServerFactory.createMBeanServer();
  64.         }
  65.         return ManagementFactory.getPlatformMBeanServer();
  66.     }

  67.     private JMXs()
  68.     {
  69.         // no-op
  70.     }
  71. }