com.sun.jdmk
Interface MBeanInstantiator

All Known Implementing Classes:
MBeanInstantiatorImpl

public interface MBeanInstantiator

Contains methods for instantiating objects, finding the class given its name and using different class loaders, deserializing objects in the context of a given class loader.

Since:
Java DMK 5.0

Method Summary
 Attribute checkTransferAttribute(ClassLoader target, Attribute attribute)
          Check whether the attribute value needs to be transferred in the destination class loader.
 AttributeList checkTransferAttributeList(ClassLoader target, AttributeList attributes)
          Check whether the attribute values needs to be transferred in the destination class loader.
 Object checkTransferObject(ClassLoader targetLoader, Object value)
          Check whether the given value need to be transferred into the target class loader.
 Object[] checkTransferParameters(ClassLoader target, Object[] params)
          Check whether the given parameters need to be transferred into the target class loader.
 ObjectInputStream deserialize(ObjectName name, byte[] data)
          De-serializes a byte array in the context of the class loader of an MBean.
 ObjectInputStream deserialize(String className, byte[] data)
          De-serializes a byte array in the context of a given MBean class loader.
 ObjectInputStream deserialize(String className, ObjectName loaderName, byte[] data, ClassLoader loader)
          De-serializes a byte array in the context of a given MBean class loader.
 Class findClass(String className, ClassLoader loader)
          Gets the class for the specified class name using the MBean Interceptor's classloader
 Class findClass(String className, ObjectName loaderName)
          Gets the class for the specified class name using the specified class loader
 Class findClassWithDefaultLoaderRepository(String className)
          Loads the class with the specified name using this object's Default Loader Repository.
 Class[] findSignatureClasses(String[] signature, ClassLoader loader)
          Return an array of Class corresponding to the given signature, using the specified class loader.
 ModifiableClassLoaderRepository getClassLoaderRepository()
          Return the Default Loader Repository used by this instantiator object.
 Object instantiate(Class theClass)
          Instantiates an object given its class, using its empty constructor.
 Object instantiate(Class theClass, Object[] params, String[] signature, ClassLoader loader)
          Instantiates an object given its class, the parameters and signature of its constructor The call returns a reference to the newly created object.
 Object instantiate(String className)
          Instantiates an object using the list of all class loaders registered in the MBean Interceptor (using its ClassLoaderRepository).
 Object instantiate(String className, Object[] params, String[] signature, ClassLoader loader)
          Instantiates an object using the list of all class loaders registered in the MBean server (using its ClassLoaderRepository).
 Object instantiate(String className, ObjectName loaderName, ClassLoader loader)
          Instantiates an object using the class Loader specified by its ObjectName.
 Object instantiate(String className, ObjectName loaderName, Object[] params, String[] signature, ClassLoader loader)
          Instantiates an object.
 void testCreation(Class c)
          This methods tests if the MBean class makes it possible to instantiate an MBean of this class in the MBeanServer.
 Object transferObject(Object obj, ClassLoader loader)
          Transfer a given object into the context of a different class loader
 

Method Detail

testCreation

void testCreation(Class c)
                  throws NotCompliantMBeanException
This methods tests if the MBean class makes it possible to instantiate an MBean of this class in the MBeanServer. e.g. it must have a public constructor, be a concrete class...

Throws:
NotCompliantMBeanException

findClassWithDefaultLoaderRepository

Class findClassWithDefaultLoaderRepository(String className)
                                           throws ReflectionException
Loads the class with the specified name using this object's Default Loader Repository.

Throws:
ReflectionException

getClassLoaderRepository

ModifiableClassLoaderRepository getClassLoaderRepository()
Return the Default Loader Repository used by this instantiator object.


findClass

Class findClass(String className,
                ClassLoader loader)
                throws ReflectionException
Gets the class for the specified class name using the MBean Interceptor's classloader

Throws:
ReflectionException

findClass

Class findClass(String className,
                ObjectName loaderName)
                throws ReflectionException,
                       InstanceNotFoundException
Gets the class for the specified class name using the specified class loader

Throws:
ReflectionException
InstanceNotFoundException

findSignatureClasses

Class[] findSignatureClasses(String[] signature,
                             ClassLoader loader)
                             throws ReflectionException
Return an array of Class corresponding to the given signature, using the specified class loader.

Throws:
ReflectionException

checkTransferAttributeList

AttributeList checkTransferAttributeList(ClassLoader target,
                                         AttributeList attributes)
Check whether the attribute values needs to be transferred in the destination class loader. Returns an attribute list containing the transferred values.

The method checks if the context of the operation is ok, i.e if all the attribute values are coming from the same class loader. If not, the method will replace the attributes that need to be transferred by a new attribute object transferred in the target class loader.

Parameters:
target - the target class loader.
attributes - the attribute list to be checked.
Returns:
the attribute list, where values have been transferred as needed.

checkTransferAttribute

Attribute checkTransferAttribute(ClassLoader target,
                                 Attribute attribute)
Check whether the attribute value needs to be transferred in the destination class loader. Returns an attribute containing the transferred value.

The method checks if the context of the operation is ok, i.e if all the attribute values are coming from the same class loader. If not, the method will replace the attributes that need to be transferred by a new attribute object transferred in the target class loader.

Parameters:
target - the target class loader.
attribute - attribute to be checked.
Returns:
attribute, or a new attribute containing the transferred value.

checkTransferParameters

Object[] checkTransferParameters(ClassLoader target,
                                 Object[] params)
Check whether the given parameters need to be transferred into the target class loader.

The method checks if the context of the operation is ok, i.e if all the objects are coming from the same class loader. If not, the method will replace the parameters that need to be transferred by a new object transferred in the target class loader.

Parameters:
target - the target class loader.
params - parameters to be checked.
Returns:
params.

checkTransferObject

Object checkTransferObject(ClassLoader targetLoader,
                           Object value)
Check whether the given value need to be transferred into the target class loader.

The method checks if the context of the operation is ok, i.e if the value is coming from the target class loader. If not, the method will return a new object transferred in the target class loader.

Parameters:
targetLoader - the target class loader.
value - object to be checked.
Returns:
value, or the new transferred value.

deserialize

ObjectInputStream deserialize(ObjectName name,
                              byte[] data)
                              throws InstanceNotFoundException,
                                     OperationsException
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 be used for the de-serialization.
data - The byte array to be de-sererialized.
Returns:
The de-serialized object stream.
Throws:
InstanceNotFoundException - The MBean specified is not found.
OperationsException - Any of the usual Input/Output related exceptions.

deserialize

ObjectInputStream deserialize(String className,
                              byte[] data)
                              throws OperationsException,
                                     ReflectionException
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".

Parameters:
className - The name of the class whose class loader should be used for the de-serialization.
data - The byte array to be de-sererialized.
Returns:
The de-serialized object stream.
Throws:
OperationsException - Any of the usual Input/Output related exceptions.
ReflectionException - The specified class could not be loaded by the default loader repository

deserialize

ObjectInputStream deserialize(String className,
                              ObjectName loaderName,
                              byte[] data,
                              ClassLoader loader)
                              throws InstanceNotFoundException,
                                     OperationsException,
                                     ReflectionException
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, a default one has to be provided (for a MBean Server, its own class loader will be used).

Parameters:
className - The name of the class whose class loader should be used for the de-serialization.
loaderName - The name of the class loader to be used for loading the specified class. If null, a default one has to be provided (for a MBean Server, its own class loader will be used).
data - The byte array to be de-sererialized.
loader - default class loader.
Returns:
The de-serialized object stream.
Throws:
InstanceNotFoundException - The specified class loader MBean is not found.
OperationsException - Any of the usual Input/Output related exceptions.
ReflectionException - The specified class could not be loaded by the specified class loader.

instantiate

Object instantiate(String className)
                   throws ReflectionException,
                          MBeanException
Instantiates an object using the list of all class loaders registered in the MBean Interceptor (using its ClassLoaderRepository).

The object's class should have a public constructor.

It returns a reference to the newly created object.

The newly created object is not registered in the MBean Interceptor.

Parameters:
className - The class name of the object to be instantiated.
Returns:
The newly instantiated object.
Throws:
ReflectionException - Wraps a java.lang.ClassNotFoundException or the java.lang.Exception that occurred when trying to invoke the object's constructor.
MBeanException - The constructor of the object has thrown an exception
RuntimeOperationsException - Wraps a java.lang.IllegalArgumentException: the className passed in parameter is null.

instantiate

Object instantiate(String className,
                   ObjectName loaderName,
                   ClassLoader loader)
                   throws ReflectionException,
                          MBeanException,
                          InstanceNotFoundException
Instantiates an object using the class Loader specified by its ObjectName.

If the loader name is null, a default one has to be provided (for a MBean Server, the ClassLoader that loaded it will be used).

The object's class should have a public constructor.

It returns a reference to the newly created object.

The newly created object is not registered in the MBean Interceptor.

Parameters:
className - The class name of the MBean to be instantiated.
loaderName - The object name of the class loader to be used.
Returns:
The newly instantiated object.
Throws:
ReflectionException - Wraps a java.lang.ClassNotFoundException or the java.lang.Exception that occurred when trying to invoke the object's constructor.
MBeanException - The constructor of the object has thrown an exception.
InstanceNotFoundException - The specified class loader is not registered in the MBeanInterceptor.
RuntimeOperationsException - Wraps a java.lang.IllegalArgumentException: the className passed in parameter is null.

instantiate

Object instantiate(String className,
                   Object[] params,
                   String[] signature,
                   ClassLoader loader)
                   throws ReflectionException,
                          MBeanException
Instantiates an object using the list of all class loaders registered in the MBean server (using its ClassLoaderRepository).

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 Interceptor.

Parameters:
className - The class name of the object to be instantiated.
params - An array containing the parameters of the constructor to be invoked.
signature - An array containing the signature of the constructor to be invoked.
Returns:
The newly instantiated object.
Throws:
ReflectionException - Wraps a java.lang.ClassNotFoundException or the java.lang.Exception that occurred when trying to invoke the object's constructor.
MBeanException - The constructor of the object has thrown an exception
RuntimeOperationsException - Wraps a java.lang.IllegalArgumentException: the className passed in parameter is null.

instantiate

Object instantiate(String className,
                   ObjectName loaderName,
                   Object[] params,
                   String[] signature,
                   ClassLoader loader)
                   throws ReflectionException,
                          MBeanException,
                          InstanceNotFoundException
Instantiates an object. The class loader to be used is identified by its object name.

If the object name of the loader is null, a default has to be provided (for example, for a MBean Server, the ClassLoader that loaded it 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.
params - An array containing the parameters of the constructor to be invoked.
signature - An array containing the signature of the constructor to be invoked.
loaderName - The object name of the class loader to be used.
Returns:
The newly instantiated object.
Throws:
ReflectionException - Wraps a java.lang.ClassNotFoundException or the java.lang.Exception that occurred when trying to invoke the object's constructor.
MBeanException - The constructor of the object has thrown an exception
InstanceNotFoundException - The specified class loader is not registered in the MBean Interceptor.
RuntimeOperationsException - Wraps a java.lang.IllegalArgumentException: the className passed in parameter is null.

instantiate

Object instantiate(Class theClass)
                   throws ReflectionException,
                          MBeanException
Instantiates an object given its class, using its empty constructor. The call returns a reference to the newly created object.

Throws:
ReflectionException
MBeanException

instantiate

Object instantiate(Class theClass,
                   Object[] params,
                   String[] signature,
                   ClassLoader loader)
                   throws ReflectionException,
                          MBeanException
Instantiates an object given its class, the parameters and signature of its constructor The call returns a reference to the newly created object.

Throws:
ReflectionException
MBeanException

transferObject

Object transferObject(Object obj,
                      ClassLoader loader)
Transfer a given object into the context of a different class loader


Open Source build 02
opendmk-1.0-b02 2007.10.01_19:17:46_MEST

Copyright 1998-2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.