JBoss.org Community Documentation
JBoss has an extensible deployment architecture that allows one to incorporate components into the bare JBoss JMX microkernel. The MainDeployer
is the deployment entry point. Requests to deploy a component are sent to the MainDeployer
and it determines if there is a subdeployer capable of handling the deployment, and if there is, it delegates the deployment to the subdeployer. We saw an example of this when we looked at how the MainDeployer
used the SARDeployer
to deploy MBean services. Among the deployers provided with JBoss are:
AbstractWebDeployer
: This subdeployer handles web application archives (WARs). It accepts deployment archives and directories whose name ends with a war
suffix. WARs must have a WEB-INF/web.xml
descriptor and may have a WEB-INF/jboss-web.xml
descriptor.
EARDeployer
: This subdeployer handles enterprise application archives (EARs). It accepts deployment archives and directories whose name ends with an ear
suffix. EARs must have a META-INF/application.xml
descriptor and may have a META-INF/jboss-app.xml
descriptor.
EJBDeployer
: This subdeployer handles enterprise bean jars. It accepts deployment archives and directories whose name ends with a jar
suffix. EJB jars must have a META-INF/ejb-jar.xml
descriptor and may have a META-INF/jboss.xml
descriptor.
JARDeployer
: This subdeployer handles library JAR archives. The only restriction it places on an archive is that it cannot contain a WEB-INF
directory.
RARDeployer
: This subdeployer handles JCA resource archives (RARs). It accepts deployment archives and directories whose name ends with a rar
suffix. RARs must have a META-INF/ra.xml
descriptor.
SARDeployer
: This subdeployer handles JBoss MBean service archives (SARs). It accepts deployment archives and directories whose name ends with a sar
suffix, as well as standalone XML files that end with service.xml
. SARs that are jars must have a META-INF/jboss-service.xml
descriptor.
XSLSubDeployer
: This subdeployer deploys arbitrary XML files. JBoss uses the XSLSubDeployer to deploy ds.xml
files and transform them into service.xml
files for the SARDeployer
. However, it is not limited to just this task.
HARDeployer
: This subdeployer deploys hibernate archives (HARs). It accepts deployment archives and directories whose name ends with a har
suffix. HARs must have a META-INF/hibernate-service.xml
descriptor.
AspectDeployer
: This subdeployer deploys AOP archives. It accepts deployment archives and directories whose name ends with an aop
suffix as well as aop.xml
files. AOP archives must have a META-INF/jboss-aop.xml
descriptor.
ClientDeployer
: This subdeployer deploys J2EE application clients. It accepts deployment archives and directories whose name ends with a jar
suffix. J2EE clients must have a META-INF/application-client.xml
descriptor and may have a META-INF/jboss-client.xml
descriptor.
BeanShellSubDeployer
: This subdeployer deploys bean shell scripts as MBeans. It accepts files whose name ends with a bsh
suffix.
The MainDeployer, JARDeployer and SARDeployer are hard coded deployers in the JBoss server core. All other deployers are MBean services that register themselves as deployers with the MainDeployer using the addDeployer(SubDeployer)
operation.
The MainDeployer
communicates information about the component to be deployed the SubDeployer
using a DeploymentInfo
object. The DeploymentInfo
object is a data structure that encapsulates the complete state of a deployable component.
When the MainDeployer
receives a deployment request, it iterates through its registered subdeployers and invokes the accepts(DeploymentInfo)
method on the subdeployer. The first subdeployer to return true is chosen. The MainDeployer will delegate the init, create, start, stop and destroy deployment life cycle operations to the subdeployer.