Version 3

    The purpose of this docuement is to list all the required capabilities of the deployment subsystem in the domain-model era (AS 7).

    Deployment Types

    The following deployment types shall be supported initially in 7.0:

    1. JavaEE Types
      1. EAR
      2. WAR
      3. EJB JAR
      4. RAR
    2. ...

        Deployment Plans

        A deployment shall be allowed to include a plan controlling aspects of the deployment action.  The plan shall include:

        1. The ability to specify what server group(s) a deployment should be installed into
        2. ...

        Deployment API Requirements

        The Domain Controller shall provide an API for deployment which is required to provide a set of features as follows.

        1. Any supported deployment type shall be deployable via the deployment API.
        2. All supported deployment plan configuration shall be specifiable via the deployment API.
        3. The deployment API shall provide a mechanism by which the deployment state of the domain can be rolled back to an earlier state.

         

        Deployment SPI Requirements

        The SPI for deployments shall provide the following features.

        1. Deployers shall have the capability to intercept and process deployments for purposes including but not limited to:
          1. Adding implied deployed services (e.g. a web service implicitly adding a servlet deployment)
          2. Adding or modifying implied configuration (e.g. JSF modifying a web deployment)
          3. Creating the final deployment (i.e. converting the final configuration into actual services which are started)

        Deployer Implementation General Requirements

        Deployers shall be expected to meet the following general requirements:

        1. Deployers shall refrain from causing their associated subsystem modules to be loaded until and unless a deployment utilizing their features is introduced.

         

        Deployment Type Requirements

        1. JavaEE Types
          1. JavaEE deployments will all have the following APIs (and no others) available to them (i.e., "in their classpath") by default:
            1. The JavaSE APIs, except when they are superceded by an equivalent JavaEE APIs
            2. All JavaEE javax.* APIs
            3. Others...?
          2. JavaEE deployments shall have access to a JBoss-specific mechanism to request that additional APIs be made available to the deployment classloader.
          3. EAR Deployments
            1. An EAR deployment is recognized as a deployment whose name ends in ".ear".
            2. EAR deployments shall recognize the following deployment descriptors:
              1. JavaEE standard application.xml (required)
              2. JBoss jboss-app.xml (optional)
            3. EAR deployments shall recognize nested JAR deployments as follows:
              1. Any nested JAR inside the lib/ directory is considered a bundled library as per EE.8.2.1
              2. Any nested JAR inside the lib/ directory which contains a persistence.xml descriptor is an EJB subdeployment
              3. Any module listed in the application.xml descriptor is a subdeployment of corresponding type
              4. Any nested JAR with an extension of .war is a WAR subdeployment
              5. Any nested JAR with an extension of .rar is a RAR subdeployment
              6. Any nested JAR containing a Main-Class in its manifest, OR a application-client.xml descriptor in META-INF, is an application client subdeployment
              7. Any nested JAR containing a ejb-jar.xml descriptor in META-INF, OR any class with an EJB component annotation from the javax.ejb package, is an EJB JAR subdeployment
              8. Any other nested JAR is ignored unless it is explicitly referenced by a Class-Path attribute in another, non-ignored submodule
            4. EAR deployments shall have a single class loader which is used for all classes in the deployment, EXCEPT:
              1. Nested WAR modules shall have their own classloader which delegates to the EAR classloader as a parent, and
              2. Nested RAR modules shall have their own classloader which delegates to the EAR classloader as a parent
          4. WAR Deployments
            1. A WAR deployment is recognized as EITHER:
              1. a JAR whose name ends in ".war", OR
              2. a JAR containing a web.xml file within the root WEB-INF directory
            2. WAR deployments shall recognize the following deployment descriptors:
              1. JavaEE standard web.xml (required)
              2. JBoss jboss-web.xml (optional)
            3. WAR deployments shall recognized the following annotations:
            4. WAR deployment classloaders shall be configured as follows:
              1. The classloader shall load classes from the WAR classloader first ("child-first") in accordance to the JavaEE specification
              2. Classes shall be loaded from the following locations (in this order):
                1. WEB-INF/classes
                2. WEB-INF/lib/*.jar
          5. EJB JAR Deployments
            1. An EJB JAR deployment is recognized by one of:
              1. (?)
            2. EJB JAR deployments shall recognize the following deployment descriptors:
              1. (?)
            3. EJB JAR deployments shall recognize the following annotations:
              1. (?)
            4. EJB JAR deployment classloaders shall be configured as follows:
              1. Classes shall be loaded from the following locations (in this order):
                1. The EJB JAR itself
                2. Any JARs referenced by Class-Path manifest attributes
                3. Any JARs referenced by Extension-* manifest attributes
          6. RAR Deployments
            1. A RAR deployment is recognized by one of:
              1. a JAR whose name ends in ".rar"
            2. RAR deployments shall recognize the following deployment descriptors:
              1. META-INF/ra.xml
            3. RAR deployments shall recognize the following annotations:
              1. @javax.resource.spi.Connector
            4. RAR deployment classloaders shall be configured as follows:
              1. Classes shall be loaded from the following locations (in this order):
                1. The RAR itself
                2. (?)