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:
- JavaEE Types
- EAR
- WAR
- EJB JAR
- RAR
- ...
Deployment Plans
A deployment shall be allowed to include a plan controlling aspects of the deployment action. The plan shall include:
- The ability to specify what server group(s) a deployment should be installed into
- ...
Deployment API Requirements
The Domain Controller shall provide an API for deployment which is required to provide a set of features as follows.
- Any supported deployment type shall be deployable via the deployment API.
- All supported deployment plan configuration shall be specifiable via the deployment API.
- 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.
- Deployers shall have the capability to intercept and process deployments for purposes including but not limited to:
- Adding implied deployed services (e.g. a web service implicitly adding a servlet deployment)
- Adding or modifying implied configuration (e.g. JSF modifying a web deployment)
- 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:
- 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
- JavaEE Types
- JavaEE deployments will all have the following APIs (and no others) available to them (i.e., "in their classpath") by default:
- The JavaSE APIs, except when they are superceded by an equivalent JavaEE APIs
- All JavaEE javax.* APIs
- Others...?
- JavaEE deployments shall have access to a JBoss-specific mechanism to request that additional APIs be made available to the deployment classloader.
- EAR Deployments
- An EAR deployment is recognized as a deployment whose name ends in ".ear".
- EAR deployments shall recognize the following deployment descriptors:
- JavaEE standard application.xml (required)
- JBoss jboss-app.xml (optional)
- EAR deployments shall recognize nested JAR deployments as follows:
- Any nested JAR inside the lib/ directory is considered a bundled library as per EE.8.2.1
- Any nested JAR inside the lib/ directory which contains a persistence.xml descriptor is an EJB subdeployment
- Any module listed in the application.xml descriptor is a subdeployment of corresponding type
- Any nested JAR with an extension of .war is a WAR subdeployment
- Any nested JAR with an extension of .rar is a RAR subdeployment
- Any nested JAR containing a Main-Class in its manifest, OR a application-client.xml descriptor in META-INF, is an application client subdeployment
- 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
- Any other nested JAR is ignored unless it is explicitly referenced by a Class-Path attribute in another, non-ignored submodule
- EAR deployments shall have a single class loader which is used for all classes in the deployment, EXCEPT:
- Nested WAR modules shall have their own classloader which delegates to the EAR classloader as a parent, and
- Nested RAR modules shall have their own classloader which delegates to the EAR classloader as a parent
- WAR Deployments
- A WAR deployment is recognized as EITHER:
- a JAR whose name ends in ".war", OR
- a JAR containing a web.xml file within the root WEB-INF directory
- WAR deployments shall recognize the following deployment descriptors:
- JavaEE standard web.xml (required)
- JBoss jboss-web.xml (optional)
- WAR deployments shall recognized the following annotations:
- WAR deployment classloaders shall be configured as follows:
- The classloader shall load classes from the WAR classloader first ("child-first") in accordance to the JavaEE specification
- Classes shall be loaded from the following locations (in this order):
- WEB-INF/classes
- WEB-INF/lib/*.jar
- A WAR deployment is recognized as EITHER:
- EJB JAR Deployments
- An EJB JAR deployment is recognized by one of:
- (?)
- EJB JAR deployments shall recognize the following deployment descriptors:
- (?)
- EJB JAR deployments shall recognize the following annotations:
- (?)
- EJB JAR deployment classloaders shall be configured as follows:
- Classes shall be loaded from the following locations (in this order):
- The EJB JAR itself
- Any JARs referenced by Class-Path manifest attributes
- Any JARs referenced by Extension-* manifest attributes
- Classes shall be loaded from the following locations (in this order):
- An EJB JAR deployment is recognized by one of:
- RAR Deployments
- A RAR deployment is recognized by one of:
- a JAR whose name ends in ".rar"
- RAR deployments shall recognize the following deployment descriptors:
- META-INF/ra.xml
- RAR deployments shall recognize the following annotations:
- @javax.resource.spi.Connector
- RAR deployment classloaders shall be configured as follows:
- Classes shall be loaded from the following locations (in this order):
- The RAR itself
- (?)
- Classes shall be loaded from the following locations (in this order):
- A RAR deployment is recognized by one of:
- JavaEE deployments will all have the following APIs (and no others) available to them (i.e., "in their classpath") by default:
Comments