package javax.slee.management;
import java.net.MalformedURLException;
import javax.slee.ComponentID;
import javax.slee.SbbID;
import javax.slee.ServiceID;
import javax.slee.EventTypeID;
import javax.slee.InvalidStateException;
import javax.slee.UnrecognizedComponentException;
import javax.slee.UnrecognizedServiceException;
import javax.slee.profile.ProfileSpecificationID;
import javax.slee.resource.ResourceAdaptorID;
import javax.slee.resource.ResourceAdaptorTypeID;
/**
* The <code>DeploymentMBean</code> interface defines deployment-related
* management operations. Using the <code>DeploymentMBean</code> a management
* client may install and remove deployment unit jar files in to and out from
* the SLEE, obtain lists and/or descriptors of the various types of components
* installed in the SLEE, and generate dependency graphs of the installed components.
* <p>
* The JMX Object Name of a <code>DeploymentMBean</code> object is specified by the
* {@link #OBJECT_NAME} constant. The Object Name can also be obtained by a
* management client via the {@link SleeManagementMBean#getDeploymentMBean()} method.
*/
public interface DeploymentMBean {
/**
* The JMX Object Name string of the SLEE Deployment MBean, equal to the string
* "javax.slee.management:name=Deployment".
* @since SLEE 1.1
*/
public static final String OBJECT_NAME = "javax.slee.management:name=Deployment";
/**
* Install a deployable unit jar file into the SLEE. The jar file must
* contain a deployable unit deployment descriptor at the path location
* <code>META-INF/deployable-unit.xml</code>.
* @param url the URL of the jar file to install.
* @return a <code>DeployableUnitID</code> that identifies the installed jar file.
* @throws NullPointerException if <code>url</code> is <code>null</code>.
* @throws MalformedURLException if <code>url</code> is not a properly formatted URL.
* @throws AlreadyDeployedException if the URL has already been installed, or the
* jar file contains a component with the same type and identity as a
* component already installed.
* @throws DeploymentException if the jar file could not be successfully installed
* due to a problem directly related to it or any of it contained components.
* @throws ManagementException if jar file could not be successfully installed
* due to a system-level failure.
*/
public DeployableUnitID install(String url)
throws NullPointerException, MalformedURLException, AlreadyDeployedException, DeploymentException, ManagementException;
/**
* Uninstall a deployable unit jar file out of the SLEE. All the components
* contained within the deployable unit are also uninstalled. A deployable unit
* cannot be uninstalled if any other deployable unit installed in the SLEE contains
* a component that is dependent on one of the components in the deployable unit
* being uninstalled.
* @param id the identifier of the deployable unit to uninstall.
* @throws NullPointerException if <code>id</code> is <code>null</code>.
* @throws UnrecognizedDeployableUnitException if <code>id</code> is not a
* recognizable <code>DeployableUnitID</code> for the SLEE or it does
* not correspond with a deployable unit installed in the SLEE.
* @throws DependencyException if another deployable unit installed in the
* SLEE contains a component that is dependent on the deployable unit
* being uninstalled.
* @throws InvalidStateException if a component in the deployable unit could not
* be uninstalled due to being in an invalid state. For example, a service
* cannot be uninstalled while it is in the ACTIVE state.
* @throws ManagementException if jar file could not be successfully uninstalled
* due to a system-level failure.
*/
public void uninstall(DeployableUnitID id)
throws NullPointerException, UnrecognizedDeployableUnitException, DependencyException, InvalidStateException, ManagementException;
/**
* Get a deployable unit identifier for a deployable unit jar file that has been
* installed.
* @param url the url that the deployable unit jar file was installed from.
* @return a <code>DeployableUnitID</code> that identifies the installed jar file.
* @throws NullPointerException if <code>url</code> is <code>null</code>.
* @throws UnrecognizedDeployableUnitException if <code>url</code> does not
* correspond with the URL of a deployable unit installed in the SLEE.
* @throws ManagementException if the identifier could not be obtained due to a
* system-level failure.
*/
public DeployableUnitID getDeployableUnit(String url)
throws NullPointerException, UnrecognizedDeployableUnitException, ManagementException;
/**
* Get the set of deployable unit identifiers that identify all the deployable
* units installed in the SLEE.
* @return an array of deployable unit identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public DeployableUnitID[] getDeployableUnits()
throws ManagementException;
/**
* Get the set of SBBs installed in the SLEE.
* @return an array of SBB identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public SbbID[] getSbbs()
throws ManagementException;
/**
* Get the set of SBBs that participate in the specified Service.
* @param service the component identifier of the Service.
* @return an array of SBB identifiers.
* @throws NullPointerException if <code>service</code> is null.
* @throws UnrecognizedServiceException if <code>service</code> is not a
* recognizable <code>ServiceID</code> for the SLEE or it does not
* correspond with a Service installed in the SLEE.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
* @since SLEE 1.1
*/
public SbbID[] getSbbs(ServiceID service)
throws NullPointerException, UnrecognizedServiceException, ManagementException;
/**
* Get the set of event types installed in the SLEE.
* @return an array of event type identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public EventTypeID[] getEventTypes()
throws ManagementException;
/**
* Get the set of profile specifications installed in the SLEE.
* @return an array of profile specification identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public ProfileSpecificationID[] getProfileSpecifications()
throws ManagementException;
/**
* Get the set of services installed in the SLEE.
* @return an array of Service identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public ServiceID[] getServices()
throws ManagementException;
/**
* Get the set of resource adaptor types installed in the SLEE.
* @return an array of resource adaptor type identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public ResourceAdaptorTypeID[] getResourceAdaptorTypes()
throws ManagementException;
/**
* Get the set of resource adaptors installed in the SLEE.
* @return an array of resource adaptor identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public ResourceAdaptorID[] getResourceAdaptors()
throws ManagementException;
/**
* Get the set of libraries installed in the SLEE.
* @return an array of library identifiers.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
* @since SLEE 1.1
*/
public LibraryID[] getLibraries()
throws ManagementException;
/**
* Get the set of components that use or make reference to a specified component.
* For example, if an SBB identified by the <code>SbbID</code> <code>sbb</code>
* uses a profile specification identified by the <code>ProfileSpecificationID</code>
* <code>profSpec</code>, the array returned from <code>getReferringComponents(profSpec)</code>
* will contain <code>sbb</code>.
* @return an array of component identifiers for the components that use or make
* reference to the component identified by <code>id</code>.
* @throws NullPointerException if <code>id</code> is <code>null</code>.
* @throws UnrecognizedComponentException if <code>id</code> is not a recognizable
* <code>ComponentID</code> object for the SLEE or it does not correspond
* with a component installed in the SLEE.
* @throws ManagementException if the identifiers could not be obtained due to a
* system-level failure.
*/
public ComponentID[] getReferringComponents(ComponentID id)
throws NullPointerException, UnrecognizedComponentException, ManagementException;
/**
* Get the deployable unit descriptor for a deployable unit.
* @param id the identifier of the deployable unit.
* @return the deployable unit descriptor for the deployable unit.
* @throws NullPointerException if <code>id</code> is <code>null</code>.
* @throws UnrecognizedDeployableUnitException if <code>id</code> is not a recognizable
* <code>DeployableUnitID</code> object for the SLEE or it does not correspond
* with a deployable unit installed in the SLEE.
* @throws ManagementException if the descriptor could not be obtained due to a
* system-level failure.
*/
public DeployableUnitDescriptor getDescriptor(DeployableUnitID id)
throws NullPointerException, UnrecognizedDeployableUnitException, ManagementException;
/**
* Get an array of deployable unit descriptors corresponding to an array of deployable units.
* @param ids the array of deployable unit identifiers.
* @return an array of deployable unit descriptors. This array will be the same length
* as the supplied array, and if <code>descriptors = getDescriptors(ids)</code>
* then <code>descriptors[i] == getDescriptor(ids[i])</code>. Any
* unrecognized deployable unit identifier present in <code>ids</code> results
* in a <code>null</code> value at the corresponding array index in this
* array.
* @throws NullPointerException if <code>ids</code> is <code>null</code>.
* @throws ManagementException if the descriptors could not be obtained due to a
* system-level failure.
*/
public DeployableUnitDescriptor[] getDescriptors(DeployableUnitID[] ids)
throws NullPointerException, ManagementException;
/**
* Get the component descriptor for a component identifier.
* @param id the identifier of the component.
* @return the component descriptor for the component.
* @throws NullPointerException if <code>id</code> is <code>null</code>.
* @throws UnrecognizedComponentException if <code>id</code> is not a recognizable
* <code>ComponentID</code> object for the SLEE or it does not correspond
* with a component installed in the SLEE.
* @throws ManagementException if the descriptor could not be obtained due to a
* system-level failure.
*/
public ComponentDescriptor getDescriptor(ComponentID id)
throws NullPointerException, UnrecognizedComponentException, ManagementException;
/**
* Get an array of component descriptors corresponding to an array of component
* identifiers.
* @param ids the array of component identifiers.
* @return an array of component descriptors. This array will be the same length
* as the supplied array, and if <code>descriptors = getDescriptors(ids)</code>
* then <code>descriptors[i] == getDescriptor(ids[i])</code>. Any
* unrecognized component identifier present in <code>ids</code> results
* in a <code>null</code> value at the corresponding array index in this
* array.
* @throws NullPointerException if <code>ids</code> is <code>null</code>.
* @throws ManagementException if the descriptors could not be obtained due to a
* system-level failure.
*/
public ComponentDescriptor[] getDescriptors(ComponentID[] ids)
throws NullPointerException, ManagementException;
/**
* Test for the presence of a deployable unit.
* @param id the identifier of the deployable unit.
* @return <code>true</code> if <code>id</code> is a recognizable deployable unit
* identifier for the SLEE and it corresponds to a deployable unit that is currently
* installed in the SLEE, <code>false</code> otherwise.
* @throws NullPointerException if <code>id</code> is <code>null</code>.
* @throws ManagementException if the presence of the deployable unit could not be
* determined due to a system-level failure.
*/
public boolean isInstalled(DeployableUnitID id)
throws NullPointerException, ManagementException;
/**
* Test for the presence of a component.
* @param id the identifier of the component.
* @return <code>true</code> if <code>id</code> is a recognizable component
* identifier for the SLEE and it corresponds to a component that is currently
* installed in the SLEE, <code>false</code> otherwise.
* @throws NullPointerException if <code>id</code> is <code>null</code>.
* @throws ManagementException if the presence of the component could not be
* determined due to a system-level failure.
*/
public boolean isInstalled(ComponentID id)
throws NullPointerException, ManagementException;
}