| MBeanServer.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package javax.management;
import java.io.ObjectInputStream;
import java.util.Set;
import javax.management.loading.ClassLoaderRepository;
/**
* The interface used to access the MBean server instances.
*
* @see javax.management.MBeanServerFactory
* @see javax.management.loading.ClassLoaderRepository
*
* @author <a href="mailto:juha@jboss.org">Juha Lindfors</a>.
* @author <a href="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
* @version $Revision: 1.10 $
*/
public interface MBeanServer
extends MBeanServerConnection
{
/**
* Create an MBean registered using the given object name.<p>
*
* Uses the default contructor.
*
* @param className the class name of the mbean
* @param name the object name for registration, can be null
* @return an ObjectInstance describing the registration
* @exception ReflectionException for class not found or an exception
* invoking the contructor
* @exception InstanceAlreadyExistsException for an MBean already registered
* with the passed or generated ObjectName
* @exception MBeanRegistrationException for any exception thrown by the
* MBean's preRegister
* @exception MBeanException for any exception thrown by the MBean's constructor
* @exception NotCompliantMBeanException if the class name does not correspond to
* a valid MBean
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null class name, the ObjectName could not be determined or it is a pattern
*/
public ObjectInstance createMBean(String className, ObjectName name)
throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException;
/**
* Create an MBean registered using the given object name.<p>
*
* The MBean is loaded using the passed classloader. Uses the default contructor.
*
* @param className the class name of the mbean
* @param loaderName an MBean that implements a classloader
* @param name the object name for registration, can be null
* @return an ObjectInstance describing the registration
* @exception ReflectionException for class not found or an exception
* invoking the contructor
* @exception InstanceAlreadyExistsException for an MBean already registered
* with the passed or generated ObjectName
* @exception MBeanRegistrationException for any exception thrown by the
* MBean's preRegister
* @exception MBeanException for any exception thrown by the MBean's constructor
* @exception InstanceNotFoundException if the loaderName is not a classloader registered
* in the MBeanServer
* @exception NotCompliantMBeanException if the class name does not correspond to
* a valid MBean
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null class name, the ObjectName could not be determined or it is a pattern
*/
public ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName)
throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException;
/**
* Create an MBean registered using the given object name.<p>
*
* Uses the specified constructor.
*
* @param className the class name of the mbean
* @param loaderName an MBean that implements a classloader
* @param params the parameters for the constructor
* @param signature the signature of the constructor
* @return an ObjectInstance describing the registration
* @exception ReflectionException for class not found or an exception
* invoking the contructor
* @exception InstanceAlreadyExistsException for an MBean already registered
* with the passed or generated ObjectName
* @exception MBeanRegistrationException for any exception thrown by the
* MBean's preRegister
* @exception MBeanException for any exception thrown by the MBean's constructor
* @exception NotCompliantMBeanException if the class name does not correspond to
* a valid MBean
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null class name, the ObjectName could not be determined or it is a pattern
*/
public ObjectInstance createMBean(String className, ObjectName name, Object[] params, String[] signature)
throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException;
/**
* Create an MBean registered using the given object name.<p>
*
* The MBean is loaded using the passed classloader. Uses the specified constructor.
*
* @param className the class name of the mbean
* @param loaderName an MBean that implements a classloader
* @param name the object name for registration, can be null
* @param params the parameters for the constructor
* @param signature the signature of the constructor
* @return an ObjectInstance describing the registration
* @exception ReflectionException for class not found or an exception
* invoking the contructor
* @exception InstanceAlreadyExistsException for an MBean already registered
* with the passed or generated ObjectName
* @exception MBeanRegistrationException for any exception thrown by the
* MBean's preRegister
* @exception MBeanException for any exception thrown by the MBean's constructor
* @exception InstanceNotFoundException if the loaderName is not a classloader registered
* in the MBeanServer
* @exception NotCompliantMBeanException if the class name does not correspond to
* a valid MBean
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null class name, the ObjectName could not be determined or it is a pattern
*/
public ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, Object[] params, String[] signature)
throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException;
/**
* Registers an mbean.
*
* @param object the mbean implementation to register
* @param name the object name of the mbean to register
* @exception InstanceAlreadyExistsException if the object name is already registered
* in the MBeanServer
* @exception MBeanRegistrationException for any exception thrown by the
* MBean's preDeregister
* @exception NotCompliantMBeanException if the class name does not correspond to
* a valid MBean
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null name, or trying to register a JMX implementation MBean
*/
public ObjectInstance registerMBean(Object object, ObjectName name)
throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException;
/**
* Unregisters an mbean.
*
* @param name the object name of the mbean to unregister
* @exception InstanceNotFoundException if the mbean is not registered
* in the MBeanServer
* @exception MBeanRegistrationException for any exception thrown by the
* MBean's preDeregister
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null name, or trying to unregister a JMX implementation MBean
*/
public void unregisterMBean(ObjectName name)
throws InstanceNotFoundException, MBeanRegistrationException;
/**
* Retrieve an MBean's registration information.
*
* @param name the object name of the mbean
* @exception InstanceNotFoundException if the mbean is not registered
* in the MBeanServer
*/
public ObjectInstance getObjectInstance(ObjectName name)
throws InstanceNotFoundException;
/**
* Retrieve a set of Object instances
*
* @param name an ObjectName pattern, can be null for all mbeans
* @param query a query expression to further filter the mbeans, can be null
* for no query
*/
public Set queryMBeans(ObjectName name, QueryExp query);
/**
* Retrieve a set of Object names
*
* @param name an ObjectName pattern, can be null for all mbeans
* @param query a query expression to further filter the mbeans, can be null
* for no query
*/
public Set queryNames(ObjectName name, QueryExp query);
/**
* Test whether an mbean is registered.
*
* @param name the object name of the mbean
* @return true when the mbean is registered, false otherwise
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null name
*/
public boolean isRegistered(ObjectName name);
/**
* Retrieve the number of mbeans registered in the server.
*
* @return true the number of registered mbeans
*/
public Integer getMBeanCount();
/**
* Retrieve a value from an MBean.
*
* @param name the object name of the mbean
* @param attribute the attribute name of the value to retrieve
* @return the value
* @exception ReflectionException for an exception invoking the mbean
* @exception MBeanException for any exception thrown by the mbean
* @exception InstanceNotFoundException if the mbean is not registered
* @exception AttributeNotFoundException if the mbean has no such attribute
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null name or attribute
*/
public Object getAttribute(ObjectName name, String attribute)
throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException;
/**
* Retrieve a list of values from an MBean.
*
* @param name the object name of the mbean
* @param attributes the attribute names of the values to retrieve
* @return the list of values, attributes with errors are ignored
* @exception ReflectionException for an exception invoking the mbean
* @exception InstanceNotFoundException if the mbean is not registered
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null name or attributes
*/
public AttributeList getAttributes(ObjectName name, String[] attributes)
throws InstanceNotFoundException, ReflectionException;
/**
* Set a value for an MBean.
*
* @param name the object name of the mbean
* @param attribute the attribute name and value to set
* @exception ReflectionException for an exception invoking the mbean
* @exception MBeanException for any exception thrown by the mbean
* @exception InstanceNotFoundException if the mbean is not registered
* @exception AttributeNotFoundException if the mbean has no such attribute
* @exception InvalidAttributeValueException if the new value has an incorrect type
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null name or attribute
*/
public void setAttribute(ObjectName name, Attribute attribute)
throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException;
/**
* Set a list of values for an MBean.
*
* @param name the object name of the mbean
* @param attributes the attribute names and values to set
* @return the list of values, attributes with errors are ignored
* @exception ReflectionException for an exception invoking the mbean
* @exception InstanceNotFoundException if the mbean is not registered
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null name or attributes
*/
public AttributeList setAttributes(ObjectName name, AttributeList attributes)
throws InstanceNotFoundException, ReflectionException;
/**
* Invokes an operation on an mbean.
*
* @param name the object name of the mbean
* @param operationName the operation to perform
* @param params the parameters
* @param signature the signature of the operation
* @return any result of the operation
* @exception ReflectionException for an exception invoking the mbean
* @exception MBeanException for any exception thrown by the mbean
* @exception InstanceNotFoundException if the mbean is not registered
*/
public Object invoke(ObjectName name, String operationName, Object[] params, String[] signature)
throws InstanceNotFoundException, MBeanException, ReflectionException;
/**
* Retrieve the default domain of the mbeanserver.
*
* @return the default domain
*/
public String getDefaultDomain();
/**
* Retrieve the domains of the mbeanserver.
*
* @return the domains
*/
public String[] getDomains();
/**
* Add a notification listener to an MBean.
*
* @param name the name of the MBean broadcasting notifications
* @param listener the listener to add
* @param filter a filter to preprocess notifications
* @param handback a object to add to any notifications
* @exception InstanceNotFoundException if the broadcaster is not registered
*/
public void addNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback)
throws InstanceNotFoundException;
/**
* Add a notification listener to an MBean.
*
* @param name the name of the MBean broadcasting notifications
* @param listener the object name listener to add
* @param filter a filter to preprocess notifications
* @param handback a object to add to any notifications
* @exception InstanceNotFoundException if the broadcaster or listener is not registered
* @exception RuntimeOperationsException wrapping an IllegalArgumentException for a
* null listener or the listener does not implement the Notification Listener interface
*/
public void addNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback)
throws InstanceNotFoundException;
/**
* Removes a listener from an mbean.<p>
*
* All registrations of the listener are removed.
*
* @param name the name of the MBean broadcasting notifications
* @param listener the object name of the listener to remove
* @exception InstanceNotFoundException if the broadcaster or listener is not registered
* @exception ListenerNotFoundException if the listener is not registered against the broadcaster
*/
public void removeNotificationListener(ObjectName name, ObjectName listener)
throws InstanceNotFoundException, ListenerNotFoundException;
/**
* Removes a listener from an mbean.<p>
*
* Only the listener that was registered with the same filter and handback is removed.
*
* @param name the name of the MBean broadcasting notifications
* @param listener the object name of listener to remove
* @param filter the filter of the listener to remove
* @exception InstanceNotFoundException if the broadcaster or listener is not registered
* @exception ListenerNotFoundException if the listener, filter, handback
* is not registered against the broadcaster
*/
public void removeNotificationListener(ObjectName name, ObjectName listener,
NotificationFilter filter, Object handback)
throws InstanceNotFoundException, ListenerNotFoundException;
/**
* Removes a listener from an mbean.<p>
*
* All registrations of the listener are removed.
*
* @param name the name of the MBean broadcasting notifications
* @param listener the listener to remove
* @exception InstanceNotFoundException if the broadcaster is not registered
* @exception ListenerNotFoundException if the listener is not registered against the broadcaster
*/
public void removeNotificationListener(ObjectName name, NotificationListener listener)
throws InstanceNotFoundException, ListenerNotFoundException;
/**
* Removes a listener from an mbean.<p>
*
* Only the listener that was registered with the same filter and handback is removed.
*
* @param name the name of the MBean broadcasting notifications
* @param listener the listener to remove
* @param filter the filter of the listener to remove
* @exception InstanceNotFoundException if the broadcaster is not registered
* @exception ListenerNotFoundException if the listener, filter, handback
* is not registered against the broadcaster
*/
public void removeNotificationListener(ObjectName name, NotificationListener listener,
NotificationFilter filter, Object handback)
throws InstanceNotFoundException, ListenerNotFoundException;
/**
* Retrieves the jmx metadata for an mbean
*
* @param name the name of the mbean
* @return the metadata
* @exception IntrospectionException for any error during instrospection
* @exception InstanceNotFoundException if the mbean is not registered
* @exception ReflectionException for any error trying to invoke the operation on the mbean
*/
public MBeanInfo getMBeanInfo(ObjectName name)
throws InstanceNotFoundException, IntrospectionException, ReflectionException;
/**
* Tests whether an mbean can be cast to the given type
*
* @param name the name of the mbean
* @param className the class name to check
* @return true when it is of that type, false otherwise
* @exception InstanceNotFoundException if the mbean is not registered
*/
public boolean isInstanceOf(ObjectName name, String className)
throws InstanceNotFoundException;
/**
* Instantiates an object using the default loader repository and default
* no-args constructor.
*
* @see javax.management.loading.DefaultLoaderRepository
*
* @param className Class to instantiate. Must have a public no-args
* constructor. Cannot contain a <tt>null</tt> reference.
*
* @return instantiated object
*
* @throws ReflectionException If there was an error while trying to invoke
* the class's constructor or the given class was not found. This
* exception wraps the actual exception thrown.
* @throws MBeanException If the object constructor threw a checked exception
* during the initialization. This exception wraps the actual
* exception thrown.
* @throws RuntimeMBeanException If the class constructor threw a runtime
* exception. This exception wraps the actual exception thrown.
* @throws RuntimeErrorException If the class constructor threw an error.
* This exception wraps the actual error thrown.
* @throws RuntimeOperationsException If the <tt>className</tt> is <tt>null</tt>.
* Wraps an <tt>IllegalArgumentException</tt> instance.
*/
public Object instantiate(String className)
throws ReflectionException, MBeanException;
/**
* Instantiates an object using the given class loader. If the loader name contains
* a <tt>null</tt> reference, the class loader of the MBean server implementation
* will be used. The object must have a default, no-args constructor.
*
* @param className Class to instantiate. Must have a public no args constructor.
* Cannot contain a <tt>null</tt> reference.
* @param loaderName Object name of a class loader that has been registered to the server.
* If <tt>null</tt>, the class loader of the MBean server is used.
* @return instantiated object
*
* @throws ReflectionException If there was an error while trying to invoke
* the class's constructor or the given class was not found. This
* exception wraps the actual exception thrown.
* @throws MBeanException If the object constructor threw a checked exception
* during the initialization. This exception wraps the actual exception
* thrown.
* @throws InstanceNotFoundException if the specified class loader was not
* registered to the agent
* @throws RuntimeMBeanException If the class constructor raised a runtime
* exception. This exception wraps the actual exception thrown.
* @throws RuntimeErrorException If the class constructor raised an error.
* This exception wraps the actual error thrown.
* @throws RuntimeOperationsException if the <tt>className</tt> is <tt>null</tt>.
* Wraps an <tt>IllegalArgumentException</tt> instance.
*/
public Object instantiate(String className, ObjectName loaderName)
throws ReflectionException, MBeanException, InstanceNotFoundException;
/**
* Instantiates an object using the default loader repository and a given constructor.
* The class being instantiated must contain a constructor that matches the
* signature given as an argument to this method call.
*
* @see javax.management.loading.DefaultLoaderRepository
*
* @param className class to instantiate
* @param params argument values for the constructor call
* @param signature signature of the constructor as fully qualified class names
*
* @return instantiated object
*
* @throws ReflectionException If there was an error while trying to invoke
* the class's constructor or the given class was not found. This
* exception wraps the actual exception thrown.
* @throws MBeanException If the object constructor raised a checked exception
* during the initialization. This exception wraps the actual exception
* thrown.
* @throws RuntimeMBeanException If the class constructor raised a runtime
* exception. This exception wraps the actual exception thrown.
* @throws RuntimeErrorException If the class constructor raised an error.
* This exception wraps the actual error thrown.
* @throws RuntimeOperationsException if the <tt>className</tt> is <tt>null</tt>.
* Wraps an <tt>IllegalArgumentException</tt> instance.
*/
public Object instantiate(String className, Object[] params, String[] signature)
throws ReflectionException, MBeanException;
/**
* Instantiates an object using the given class loader. If the loader name contains
* a <tt>null</tt> reference, the class loader of the MBean server implementation
* will be used. The object must contain a constructor with a matching signature
* given as a parameter to this call.
*
* @param className class to instantiate
* @param loaderName object name of a registered class loader in the agent.
* @param params argument values for the constructor call
* @param signature signature of the constructor as fully qualified class name strings
*
* @return instantiated object
*
* @throws ReflectionException If there was an error while trying to invoke the
* class's constructor or the given class was not found. this exception
* wraps the actual exception thrown.
* @throws MBeanException If the object constructor raised a checked exception
* during the initialization. This exception wraps the actual exception thrown.
* @throws InstanceNotFoundException if the specified class loader was not
* registered to the agent.
* @throws RuntimeMBeanException If the class constructor raised a runtime
* exception. This exception wraps the actual exception thrown.
* @throws RuntimeErrorException If the class constructor raised an error.
* This exception wraps the actual error thrown.
* @throws RuntimeOperationsException if the <tt>className</tt> argument is <tt>null</tt>.
* Wraps an <tt>IllegalArgumentException</tt> instance.
*/
public Object instantiate(String className, ObjectName loaderName, Object[] params, String[] signature)
throws ReflectionException, MBeanException, InstanceNotFoundException;
/**
* @deprecated use {@link #getClassLoaderFor(ObjectName)} to obtain the
* appropriate classloader for deserialization
*/
public ObjectInputStream deserialize(ObjectName name, byte[] data)
throws InstanceNotFoundException, OperationsException;
/**
* @deprecated use {@link #getClassLoaderFor(ObjectName)} to obtain the
* appropriate classloader for deserialization
*/
public ObjectInputStream deserialize(String className, byte[] data)
throws OperationsException, ReflectionException;
/**
* @deprecated use {@link #getClassLoaderFor(ObjectName)} to obtain the
* appropriate classloader for deserialization
*/
public ObjectInputStream deserialize(String className, ObjectName loaderName, byte[] data)
throws InstanceNotFoundException, OperationsException, ReflectionException;
/**
* Retrieve the classloader for an mbean
*
* @param name the object name of the mbean
* @return the classloader
* @exception InstanceNotFoundException when the mbean is not registered
*/
public ClassLoader getClassLoaderFor(ObjectName name)
throws InstanceNotFoundException;
/**
* Retrieve the classloader registered as an MBean
*
* @param name the object name of the classloader
* @return the classloader
* @exception InstanceNotFoundException when the mbean is not registered
*/
public ClassLoader getClassLoader(ObjectName name)
throws InstanceNotFoundException;
/**
* Retrieve the classloader repository for this mbean server
*
* @return the classloader repository
*/
public ClassLoaderRepository getClassLoaderRepository();
}
| MBeanServer.java |