| javax.management.MBeanServer
MBeanServer | public interface MBeanServer extends MBeanServerConnection(Code) | | This is the interface for MBean manipulation on the agent
side. It contains the methods necessary for the creation,
registration, and deletion of MBeans as well as the access methods
for registered MBeans. This is the core component of the JMX
infrastructure.
User code does not usually implement this interface. Instead,
an object that implements this interface is obtained with one of
the methods in the
MBeanServerFactory class.
Every MBean which is added to the MBean server becomes
manageable: its attributes and operations become remotely
accessible through the connectors/adaptors connected to that MBean
server. A Java object cannot be registered in the MBean server
unless it is a JMX compliant MBean.
When an MBean is registered or unregistered in the MBean server
a
javax.management.MBeanServerNotificationMBeanServerNotification Notification is emitted. To register an
object as listener to MBeanServerNotifications you should call the
MBean server method
MBeanServer.addNotificationListeneraddNotificationListener with ObjectName the
ObjectName of the
javax.management.MBeanServerDelegate MBeanServerDelegate . This
ObjectName is:
JMImplementation:type=MBeanServerDelegate .
An object obtained from the
MBeanServerFactory.createMBeanServer(String) createMBeanServer or
MBeanServerFactory.newMBeanServer(String) newMBeanServer methods of the
MBeanServerFactory class applies security
checks to its methods, as follows.
First, if there is no security manager (
System.getSecurityManager is null), then an implementation of
this interface is free not to make any checks.
Assuming that there is a security manager, or that the
implementation chooses to make checks anyway, the checks are made
as detailed below. In what follows, className is the
string returned by
MBeanInfo.getClassName for the target
MBean.
If a security check fails, the method throws
SecurityException .
For methods that can throw
InstanceNotFoundException ,
this exception is thrown for a non-existent MBean, regardless of
permissions. This is because a non-existent MBean has no
className .
For the
MBeanServer.invoke invoke method, the caller's
permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, operationName, name, "invoke") .
For the
MBeanServer.getAttribute getAttribute method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, attribute, name, "getAttribute") .
For the
MBeanServer.getAttributes getAttributes method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "getAttribute") .
Additionally, for each attribute a in the
AttributeList , if the caller's permissions do not imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, a, name, "getAttribute") , the
MBean server will behave as if that attribute had not been in the
supplied list.
For the
MBeanServer.setAttribute setAttribute method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, attrName, name, "setAttribute") , where
attrName is
Attribute.getNameattribute.getName() .
For the
MBeanServer.setAttributes setAttributes method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "setAttribute") .
Additionally, for each attribute a in the
AttributeList , if the caller's permissions do not imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, a, name, "setAttribute") , the
MBean server will behave as if that attribute had not been in the
supplied list.
For the addNotificationListener methods,
the caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name,"addNotificationListener") .
For the removeNotificationListener methods,
the caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name,"removeNotificationListener") .
For the
MBeanServer.getMBeanInfo getMBeanInfo method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "getMBeanInfo") .
For the
MBeanServer.getObjectInstance getObjectInstance method,
the caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "getObjectInstance") .
For the
MBeanServer.isInstanceOf isInstanceOf method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "isInstanceOf") .
For the
MBeanServer.queryMBeans queryMBeans method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(null, null, name, "queryMBeans") .
Additionally, for each MBean that matches name ,
if the caller's permissions do not imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "queryMBeans") , the
MBean server will behave as if that MBean did not exist.
Certain query elements perform operations on the MBean server.
If the caller does not have the required permissions for a given
MBean, that MBean will not be included in the result of the query.
The standard query elements that are affected are
Query.attr(String) ,
Query.attr(StringString) , and
Query.classattr .
For the
MBeanServer.queryNames queryNames method, the checks
are the same as for queryMBeans except that
"queryNames" is used instead of
"queryMBeans" in the MBeanPermission
objects. Note that a "queryMBeans" permission implies
the corresponding "queryNames" permission.
For the
MBeanServer.getDomains getDomains method, the caller's
permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(null, null, name, "getDomains") . Additionally,
for each domain d in the returned array, if the caller's
permissions do not imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(null, null, new ObjectName("d:x=x"),"getDomains") , the domain is eliminated from the array. Here,
x=x is any key=value pair, needed to
satisfy ObjectName's constructor but not otherwise relevant.
For the
MBeanServer.getClassLoader getClassLoader method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, loaderName,"getClassLoader") .
For the
MBeanServer.getClassLoaderFor getClassLoaderFor method,
the caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, mbeanName,"getClassLoaderFor") .
For the
MBeanServer.getClassLoaderRepositorygetClassLoaderRepository method, the caller's permissions must
imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(null, null, null, "getClassLoaderRepository") .
For the deprecated deserialize methods, the
required permissions are the same as for the methods that replace
them.
For the instantiate methods, the caller's
permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, null, "instantiate") .
For the
MBeanServer.registerMBean registerMBean method, the
caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "registerMBean") . Here
className is the string returned by
MBeanInfo.getClassName for an object of this class.
If the MBeanPermission check succeeds, the MBean's
class is validated by checking that its
java.security.ProtectionDomain ProtectionDomain implies
MBeanTrustPermission.MBeanTrustPermission(String)MBeanTrustPermission("register") .
Finally, if the name argument is null, another
MBeanPermission check is made using the
ObjectName returned by
MBeanRegistration.preRegister MBeanRegistration.preRegister .
For the createMBean methods, the caller's
permissions must imply the permissions needed by the equivalent
instantiate followed by
registerMBean .
For the
MBeanServer.unregisterMBean unregisterMBean method,
the caller's permissions must imply
MBeanPermission.MBeanPermission(StringStringObjectNameString)MBeanPermission(className, null, name, "unregisterMBean") .
since: 1.5 |
Method Summary | |
public void | addNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback) | public void | addNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback) | public ObjectInstance | createMBean(String className, ObjectName name) | public ObjectInstance | createMBean(String className, ObjectName name, ObjectName loaderName) | public ObjectInstance | createMBean(String className, ObjectName name, Object params, String signature) | public ObjectInstance | createMBean(String className, ObjectName name, ObjectName loaderName, Object params, String signature) | public ObjectInputStream | deserialize(ObjectName name, byte[] data) De-serializes a byte array in the context of the class loader
of an MBean.
Parameters: name - The name of the MBean whose class loader should beused for the de-serialization. Parameters: data - The byte array to be de-sererialized. | public ObjectInputStream | deserialize(String className, byte[] data) De-serializes a byte array in the context of a given MBean
class loader. | public ObjectInputStream | deserialize(String className, ObjectName loaderName, byte[] data) De-serializes a byte array in the context of a given MBean
class loader. | public Object | getAttribute(ObjectName name, String attribute) | public AttributeList | getAttributes(ObjectName name, String[] attributes) | public ClassLoader | getClassLoader(ObjectName loaderName) Return the named
java.lang.ClassLoader .
Parameters: loaderName - The ObjectName of the ClassLoader. | public ClassLoader | getClassLoaderFor(ObjectName mbeanName) Return the
java.lang.ClassLoader that was used for
loading the class of the named MBean.
Parameters: mbeanName - The ObjectName of the MBean. | public ClassLoaderRepository | getClassLoaderRepository() Return the ClassLoaderRepository for this MBeanServer. | public String | getDefaultDomain() | public String[] | getDomains() | public Integer | getMBeanCount() Returns the number of MBeans registered in the MBean server. | public MBeanInfo | getMBeanInfo(ObjectName name) | public ObjectInstance | getObjectInstance(ObjectName name) | public Object | instantiate(String className) Instantiates an object using the list of all class loaders
registered in the MBean server's
javax.management.loading.ClassLoaderRepository Class LoaderRepository . | public Object | instantiate(String className, ObjectName loaderName) Instantiates an object using the class Loader specified by its
ObjectName . If the loader name is null, the
ClassLoader that loaded the MBean Server will be used. | public Object | instantiate(String className, Object params, String signature) Instantiates an object using the list of all class loaders
registered in the MBean server
javax.management.loading.ClassLoaderRepository Class LoaderRepository . | public Object | instantiate(String className, ObjectName loaderName, Object params, String signature) Instantiates an object. | public Object | invoke(ObjectName name, String operationName, Object params, String signature) | public boolean | isInstanceOf(ObjectName name, String className) | public boolean | isRegistered(ObjectName name) | public Set<ObjectInstance> | queryMBeans(ObjectName name, QueryExp query) | public Set<ObjectName> | queryNames(ObjectName name, QueryExp query) | public ObjectInstance | registerMBean(Object object, ObjectName name) Registers a pre-existing object as an MBean with the MBean
server. | public void | removeNotificationListener(ObjectName name, ObjectName listener) | public void | removeNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback) | public void | removeNotificationListener(ObjectName name, NotificationListener listener) | public void | removeNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback) | public void | setAttribute(ObjectName name, Attribute attribute) | public AttributeList | setAttributes(ObjectName name, AttributeList attributes) | public void | unregisterMBean(ObjectName name) |
deserialize | public ObjectInputStream deserialize(String className, ObjectName loaderName, byte[] data) throws InstanceNotFoundException, OperationsException, ReflectionException(Code) | | De-serializes a byte array in the context of a given MBean
class loader. The class loader is the one that loaded the
class with name "className". The name of the class loader to
be used for loading the specified class is specified. If null,
the MBean Server's class loader will be used.
Parameters: className - The name of the class whose class loader should beused for the de-serialization. Parameters: data - The byte array to be de-sererialized. Parameters: loaderName - The name of the class loader to be used forloading the specified class. If null, the MBean Server's classloader will be used. The de-serialized object stream. exception: InstanceNotFoundException - The specified class loaderMBean is not found. exception: OperationsException - Any of the usual Input/Outputrelated exceptions. exception: ReflectionException - The specified class could not beloaded by the specified class loader.MBeanServer.getClassLoader getClassLoader |
getClassLoader | public ClassLoader getClassLoader(ObjectName loaderName) throws InstanceNotFoundException(Code) | | Return the named
java.lang.ClassLoader .
Parameters: loaderName - The ObjectName of the ClassLoader. May benull, in which case the MBean server's own ClassLoader isreturned. The named ClassLoader. If l is the actualClassLoader with that name, and r is the returnedvalue, then either:What this means is that the ClassLoader may be wrapped inanother ClassLoader for security or other reasons. exception: InstanceNotFoundException - if the named ClassLoader is not found. |
getClassLoaderFor | public ClassLoader getClassLoaderFor(ObjectName mbeanName) throws InstanceNotFoundException(Code) | | Return the
java.lang.ClassLoader that was used for
loading the class of the named MBean.
Parameters: mbeanName - The ObjectName of the MBean. The ClassLoader used for that MBean. If lis the MBean's actual ClassLoader, and r is thereturned value, then either:What this means is that the ClassLoader may be wrapped inanother ClassLoader for security or other reasons. exception: InstanceNotFoundException - if the named MBean is not found. |
getClassLoaderRepository | public ClassLoaderRepository getClassLoaderRepository()(Code) | | Return the ClassLoaderRepository for this MBeanServer.
The ClassLoaderRepository for this MBeanServer. |
getMBeanCount | public Integer getMBeanCount()(Code) | | Returns the number of MBeans registered in the MBean server.
the number of registered MBeans, wrapped in an Integer.If the caller's permissions are restricted, this number maybe greater than the number of MBeans the caller can access. |
instantiate | public Object instantiate(String className) throws ReflectionException, MBeanException(Code) | | Instantiates an object using the list of all class loaders
registered in the MBean server's
javax.management.loading.ClassLoaderRepository Class LoaderRepository . The object's class should have a public
constructor. This method returns a reference to the newly
created object. The newly created object is not registered in
the MBean server.
This method is equivalent to
MBeanServer.instantiate(String,Object[],String[])instantiate(className, (Object[]) null, (String[]) null) .
Parameters: className - The class name of the object to be instantiated. The newly instantiated object. exception: ReflectionException - Wraps ajava.lang.ClassNotFoundException or thejava.lang.Exception that occurred when trying toinvoke the object's constructor. exception: MBeanException - The constructor of the object hasthrown an exception exception: RuntimeOperationsException - Wraps ajava.lang.IllegalArgumentException : The classNamepassed in parameter is null. |
instantiate | public Object instantiate(String className, ObjectName loaderName) throws ReflectionException, MBeanException, InstanceNotFoundException(Code) | | Instantiates an object using the class Loader specified by its
ObjectName . If the loader name is null, the
ClassLoader that loaded the MBean Server will be used. The
object's class should have a public constructor. This method
returns a reference to the newly created object. The newly
created object is not registered in the MBean server.
This method is equivalent to
MBeanServer.instantiate(String,ObjectName,Object[],String[])instantiate(className, loaderName, (Object[]) null, (String[])null) .
Parameters: className - The class name of the MBean to be instantiated. Parameters: loaderName - The object name of the class loader to be used. The newly instantiated object. exception: ReflectionException - Wraps ajava.lang.ClassNotFoundException or thejava.lang.Exception that occurred when trying toinvoke the object's constructor. exception: MBeanException - The constructor of the object hasthrown an exception. exception: InstanceNotFoundException - The specified class loaderis not registered in the MBeanServer. exception: RuntimeOperationsException - Wraps ajava.lang.IllegalArgumentException : The classNamepassed in parameter is null. |
instantiate | public Object instantiate(String className, Object params, String signature) throws ReflectionException, MBeanException(Code) | | Instantiates an object using the list of all class loaders
registered in the MBean server
javax.management.loading.ClassLoaderRepository Class LoaderRepository . The object's class should have a public
constructor. The call returns a reference to the newly created
object. The newly created object is not registered in the
MBean server.
Parameters: className - The class name of the object to be instantiated. Parameters: params - An array containing the parameters of theconstructor to be invoked. Parameters: signature - An array containing the signature of theconstructor to be invoked. The newly instantiated object. exception: ReflectionException - Wraps ajava.lang.ClassNotFoundException or thejava.lang.Exception that occurred when trying toinvoke the object's constructor. exception: MBeanException - The constructor of the object hasthrown an exception exception: RuntimeOperationsException - Wraps ajava.lang.IllegalArgumentException : The classNamepassed in parameter is null. |
instantiate | public Object instantiate(String className, ObjectName loaderName, Object params, String signature) throws ReflectionException, MBeanException, InstanceNotFoundException(Code) | | Instantiates an object. The class loader to be used is
identified by its object name. If the object name of the loader
is null, the ClassLoader that loaded the MBean server will be
used. The object's class should have a public constructor.
The call returns a reference to the newly created object. The
newly created object is not registered in the MBean server.
Parameters: className - The class name of the object to be instantiated. Parameters: params - An array containing the parameters of theconstructor to be invoked. Parameters: signature - An array containing the signature of theconstructor to be invoked. Parameters: loaderName - The object name of the class loader to be used. The newly instantiated object. exception: ReflectionException - Wraps a java.lang.ClassNotFoundException or the java.lang.Exception that occurred when trying to invoke the object's constructor. exception: MBeanException - The constructor of the object hasthrown an exception exception: InstanceNotFoundException - The specified class loaderis not registered in the MBean server. exception: RuntimeOperationsException - Wraps ajava.lang.IllegalArgumentException : The classNamepassed in parameter is null. |
|
|