| /* | |
| * Copyright (c) 2002, 2007, 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 com.sun.jmx.mbeanserver; | |
| import javax.management.MBeanServer; | |
| import javax.management.MBeanServerDelegate; | |
| import javax.management.MBeanServerBuilder; | |
| /** | |
| * This class represents a builder that creates | |
| * {@link javax.management.MBeanServer} implementations. | |
| * The JMX {@link javax.management.MBeanServerFactory} allows | |
| * for applications to provide their custom MBeanServer | |
| * implementation. This class is not used when the whole Sun Reference JMX | |
| * Implementation is used. However it may be used to substitute Sun | |
| * MBeanServer implementation to another JMX implementation. | |
| * <p> | |
| * Contrarily to the default {@link javax.management.MBeanServerBuilder | |
| * javax.management.MBeanServerBuilder} this MBeanServerBuilder returns | |
| * MBeanServers on which | |
| * {@link com.sun.jmx.interceptor.MBeanServerInterceptor}s are enabled. | |
| * | |
| * @since 1.5 | |
| */ | |
| public class JmxMBeanServerBuilder extends MBeanServerBuilder { | |
| /** | |
| * This method creates a new MBeanServerDelegate for a new MBeanServer. | |
| * When creating a new MBeanServer the | |
| * {@link javax.management.MBeanServerFactory} first calls this method | |
| * in order to create a new MBeanServerDelegate. | |
| * <br>Then it calls | |
| * <code>newMBeanServer(defaultDomain,outer,delegate)</code> | |
| * passing the <var>delegate</var> that should be used by the MBeanServer | |
| * implementation. | |
| * <p>Note that the passed <var>delegate</var> might not be directly the | |
| * MBeanServerDelegate that was returned by this method. It could | |
| * be, for instance, a new object wrapping the previously | |
| * returned object. | |
| * | |
| * @return A new {@link javax.management.MBeanServerDelegate}. | |
| **/ | |
| public MBeanServerDelegate newMBeanServerDelegate() { | |
| return JmxMBeanServer.newMBeanServerDelegate(); | |
| } | |
| /** | |
| * This method creates a new MBeanServer implementation object. | |
| * When creating a new MBeanServer the | |
| * {@link javax.management.MBeanServerFactory} first calls | |
| * <code>newMBeanServerDelegate()</code> in order to obtain a new | |
| * {@link javax.management.MBeanServerDelegate} for the new | |
| * MBeanServer. Then it calls | |
| * <code>newMBeanServer(defaultDomain,outer,delegate)</code> | |
| * passing the <var>delegate</var> that should be used by the | |
| * MBeanServer implementation. | |
| * <p>Note that the passed <var>delegate</var> might not be directly the | |
| * MBeanServerDelegate that was returned by this implementation. It could | |
| * be, for instance, a new object wrapping the previously | |
| * returned delegate. | |
| * <p>The <var>outer</var> parameter is a pointer to the MBeanServer that | |
| * should be passed to the {@link javax.management.MBeanRegistration} | |
| * interface when registering MBeans inside the MBeanServer. | |
| * If <var>outer</var> is <code>null</code>, then the MBeanServer | |
| * implementation is free to use its own <code>this</code> pointer when | |
| * invoking the {@link javax.management.MBeanRegistration} interface. | |
| * <p>This makes it possible for a MBeanServer implementation to wrap | |
| * another MBeanServer implementation, in order to implement, e.g, | |
| * security checks, or to prevent access to the actual MBeanServer | |
| * implementation by returning a pointer to a wrapping object. | |
| * <p> | |
| * This MBeanServerBuilder makes it possible to create MBeanServer | |
| * which support {@link com.sun.jmx.interceptor.MBeanServerInterceptor}s. | |
| * | |
| * @param defaultDomain Default domain of the new MBeanServer. | |
| * @param outer A pointer to the MBeanServer object that must be | |
| * passed to the MBeans when invoking their | |
| * {@link javax.management.MBeanRegistration} interface. | |
| * @param delegate A pointer to the MBeanServerDelegate associated | |
| * with the new MBeanServer. The new MBeanServer must register | |
| * this MBean in its MBean repository. | |
| * | |
| * @return A new private implementation of an MBeanServer. | |
| **/ | |
| public MBeanServer newMBeanServer(String defaultDomain, | |
| MBeanServer outer, | |
| MBeanServerDelegate delegate) { | |
| return JmxMBeanServer.newMBeanServer(defaultDomain,outer,delegate, | |
| true); | |
| } | |
| } |