| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package javax.jbi.component; |
| |
| import javax.jbi.management.DeploymentException; |
| |
| /** |
| * This interface defines component-supplied methods for managing service |
| * unit deployments, and is implemented by the component. The JBI |
| * implementation queries the component for the implementation of this |
| * interface using the {@link Component#getServiceUnitManager()} method. |
| * |
| * @author JSR208 Expert Group |
| */ |
| public interface ServiceUnitManager { |
| |
| /** |
| * Deploy a Service Unit to the component. This is called by the JBI |
| * implementation in order to deploy the given artifact to the implementing |
| * component. |
| * |
| * Upon successful deployment, a non-empty result string must be returned, |
| * that starts with the JBI-defined component-task-result element. For example: |
| * <pre> |
| * <component-task-result> |
| * <component-name>BC1</component-name> |
| * <component-task-result-details |
| * xmlns="http://java.sun.com/xml/ns/jbi/management-message"> |
| * <task-result-details> |
| * <task-id>deploy</task-id> |
| * <task-result>SUCCESS</task-result> |
| * </task-result-details> |
| * </component-task-result-details> |
| * </component-task-result> |
| * </pre> |
| * A failed deployment of the service unit must be reported using the |
| * <code>component-task-result</code> element as well; the |
| * <code>task-result</code> must be set to FAILED. |
| * |
| * @param serviceUnitName name of the service unit being deployed; must be |
| * non-null and non-empty and unique among service units already |
| * deployed to the component. |
| * @param serviceUnitRootPath path of the service unit artifact root, in |
| * platform specific format; must be non-null and non-empty. |
| * @return a deployment status message, which is an XML string that conforms |
| * to the schema given in the <i>MBean Status and Result Strings</i> |
| * section of the <i><b>Management</b></i> chapter of the JBI |
| * specification; must be non-null and non-empty. |
| * @exception DeploymentException if the deployment operation is |
| * unsuccessful. |
| */ |
| String deploy(String serviceUnitName, String serviceUnitRootPath) throws DeploymentException; |
| |
| /** |
| * Initialize the given deployed service unit. This is the first phase of |
| * a two-phase start, where the component must prepare to receive service |
| * requests related to the deployment (if any). |
| * <p> |
| * The serviceUnitRootPath parameter is provided to facilitate restart of |
| * the component. This allows simple components to rely entirely on JBI's |
| * ability to persist deployment information, avoiding the need for the |
| * component to provide its own persistence mechanism. |
| * |
| * @param serviceUnitName name of the service unit being initialized; must |
| * be non-null, non-empty, and match the name of a previously |
| * deployed (but not yet undeployed) service unit. |
| * @param serviceUnitRootPath path of the service unit artifact root, in |
| * platform specific format; must be non-null and non-empty. |
| * @exception DeploymentException if the service unit is not deployed, or |
| * if it is in an incorrect state. |
| */ |
| void init(String serviceUnitName, String serviceUnitRootPath) throws DeploymentException; |
| |
| /** |
| * Start the deployed service unit. This is the second phase of a two-phase |
| * start, where the component can now initiate service requests related to |
| * the deployment. |
| * |
| * @param serviceUnitName the name of the service unit being started; must |
| * be non-null, non-empty, and match the name of a previously |
| * deployed (but not yet undeployed) service unit. |
| * @exception DeploymentException if the service unit is not deployed, or |
| * if it is in an incorrect state. |
| */ |
| void start(String serviceUnitName) throws DeploymentException; |
| |
| /** |
| * Stop the deployed service unit. This causes the component to cease |
| * generating service requests related to the given service unit. This |
| * returns the service unit to a state equivalent to after |
| * {@link #init(String, String)} was called. |
| * |
| * @param serviceUnitName name of the service unit being stopped; must |
| * be non-null, non-empty, and match the name of a previously |
| * deployed (but not yet undeployed) service unit. |
| * @exception DeploymentException if the service unit is not deployed, or |
| * if it is in an incorrect state. |
| */ |
| void stop(String serviceUnitName) throws DeploymentException; |
| |
| /** |
| * Shut down the deployment. This causes the deployment to return to the |
| * to the state it was in after {@link #deploy(String, String)}, and before |
| * {@link #init(String, String)}. |
| * |
| * @param serviceUnitName name of the service unit being shut down; must |
| * be non-null, non-empty, and match the name of a previously |
| * deployed (but not yet undeployed) service unit. |
| * @exception DeploymentException if the service unit is not deployed, or |
| * if it is in an incorrect state. |
| */ |
| void shutDown(String serviceUnitName) throws DeploymentException; |
| |
| /** |
| * Undeploy a service unit from the component. The service unit must be |
| * shut down to undeploy it. |
| * |
| * @param serviceUnitName name of the service unit being undeployed; must |
| * be non-null, non-empty, and match the name of a previously |
| * deployed (but not yet undeployed) service unit. |
| * @param serviceUnitRootPath path of the service unit artifact root, in |
| * platform specific format; must be non-null and non-empty. |
| * @return deployment status message, which is an XML string that conforms |
| * to the <code>component-task-result</code> type from |
| * the schema given in the <i>MBean Status and Result Strings</i> |
| * section of the <i><b>Management</b></i> chapter of the JBI |
| * specification; must be non-null and non-empty. |
| * @exception DeploymentException if undeployment operation is unsuccessful, |
| * or if the service unit is in an incorrect state. |
| */ |
| String undeploy(String serviceUnitName, String serviceUnitRootPath) throws DeploymentException; |
| } |