/*
* JBoss, Home of Professional Open Source.
* Copyright 2010, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
/**
* The JBossAS domain deployment subsystem classes.
* <p/>
* Deployment of a unit (typically an archive) has a number of distinct phases.
* <ol>
* <li><b>Phase 0: Domain Controller.</b> This phase runs on the domain controller to perform a first-pass validation of all
* descriptors and other meta-information in the deployment unit. <ol>
* <li><b>Deployment Type Identification.</b> The type of deployment is identified, so that the proper validation sequence
* and deployer chain can be selected.</li>
* <li><b>Descriptor Validation.</b> All descriptors in the deployment are initially validated. This typically will entail a
* simple XSD validation, plus a limited degree of structural validation.</li>
* <li><b>Domain Deployment.</b> This phase runs on the domain controller to install the validated deployment unit into the
* domain model itself, and coordinate the distribution of the domain update to the relevant servers, using the deployment
* plan to coordinate distribution appropriately.</li>
* </ol></li>
* <li><b>Phase 1: Server Deployment Preprocessing.</b> This phase runs on the individual server to prepare a deployment
* unit for execution. After this phase, the "parent" service for the deployment item and the service corresponding to
* the virtual file mount are available.<ol>
* <li><b>Deployment Type Check.</b> If the deployment type corresponds to a subsystem that is not present in the
* current profile, log a message and do no further processing.</li>
* <li><b>Deployment Mount.</b> Mount the deployment unit into the Virtual File System.</li>
* </ol></li>
* <li><b>Phase 2: Server Deployment Unit Processing.</b> This phase runs on the individual server to process the
* deployment unit into actual deployment items. No service batch is active during this phase.<ol>
* <li><b>Deployment Processing.</b> In this phase, the chain of {@link DeploymentUnitProcessor}s which is associated
* with the deployment unit type are executed over the deployment unit to parse any descriptors, add them to the
* {@link DeploymentUnit}, transform them, and/or convert them into {@link DeploymentItem}s. These {@code DeploymentItem}s
* represent the deployed state of the deployment unit.</li>
* </ol></li>
* <li><b>Phase 3: Installation.</b> In this phase the deployment items are actually executed and added to a service
* batch, causing their corresponding services to be resolved and started up.</li>
* </ol>
* <p/>
* The deployment items corresponding to a deployment unit are started, stopped, and removed by way of a unit-wide
* dependency service.
*/
package org.jboss.as.server.deployment;