1 /* 2 * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package com.sun.jmx.mbeanserver; 27 28 import javax.management.DynamicMBean; 29 import javax.management.MBeanServer; 30 import javax.management.ObjectName; 31 32 /** 33 * A dynamic MBean that wraps an underlying resource. A version of this 34 * interface might eventually appear in the public JMX API. 35 * 36 * @since 1.6 37 */ 38 public interface DynamicMBean2 extends DynamicMBean { 39 /** 40 * The resource corresponding to this MBean. This is the object whose 41 * class name should be reflected by the MBean's 42 * getMBeanInfo().getClassName() for example. For a "plain" 43 * DynamicMBean it will be "this". For an MBean that wraps another 44 * object, like javax.management.StandardMBean, it will be the wrapped 45 * object. 46 */ getResource()47 public Object getResource(); 48 49 /** 50 * The name of this MBean's class, as used by permission checks. 51 * This is typically equal to getResource().getClass().getName(). 52 * This method is typically faster, sometimes much faster, 53 * than getMBeanInfo().getClassName(), but should return the same 54 * result. 55 */ getClassName()56 public String getClassName(); 57 58 /** 59 * Additional registration hook. This method is called after 60 * {@link javax.management.MBeanRegistration#preRegister preRegister}. 61 * Unlike that method, if it throws an exception and the MBean implements 62 * {@code MBeanRegistration}, then {@link 63 * javax.management.MBeanRegistration#postRegister postRegister(false)} 64 * will be called on the MBean. This is the behavior that the MBean 65 * expects for a problem that does not come from its own preRegister 66 * method. 67 */ preRegister2(MBeanServer mbs, ObjectName name)68 public void preRegister2(MBeanServer mbs, ObjectName name) 69 throws Exception; 70 71 /** 72 * Additional registration hook. This method is called if preRegister 73 * and preRegister2 succeed, but then the MBean cannot be registered 74 * (for example because there is already another MBean of the same name). 75 */ registerFailed()76 public void registerFailed(); 77 } 78