Deployers overview
adrian.brock Jan 5, 2005 7:20 PMThis is definition document so I don't have to repeat everything on the JIRA tasks
DEPLOYER-OVERVIEW
-----------------
The deployer architecture is made up of the following components:
VDF - Virtual Deployment Framework
The VDF works to abstract
deployments meaning the deployers don't have to deal with
the physical structure/protocol of the deployments.
It is responsible for abstracting away:
packed/unpacked deployments
copying remote/nested deployments to a temp location
supplying logical urls for users/config/codebase-protectiondomain/etc
supplying physical urls for classloading/debugging/etc
VDF Context
A VDF context identifies a deployment/subdeployment
holding the information that is identifed by the
structural component deployers.
Deployer
A deployer is made up two components.
1) A structural component that says it recognises a particular
deployment and deconstructs the deployment into its VDF contexts.
2) A deployment component that looks at the deployment
and constructs the objects.
MainDeployer
Like the current main deployer it is reponsible for
deploy(URL) and undeploy(URL). It also serves as a registry
for the other deployers.
MicroContainer
Any bean that implements the "Deployer interface"
will be registered/unregistered with the MainDeployer
as it is instantiated.
Since the structural components have no dependencies
they can be instantiated early and the deployments
identified.
Deployment Chains
Both the structural and deployment components
of the deployers are stored inside the MainDeployer registry
as a chain in a "priority" order.
Structural Chain
For the structural chain, the first deployer in "priority" order
to recognise the deployer wins.
All deployments/subdeployments must be structurally recognised
before the deployment chain is processed.
Deployment Chain
Each deployer gets to process the deployment in the "priority" order.
The chain is processed depth first, i.e. priority order over all
deployments/subdeployments before moving to the next in the chain
Structural Component More Detail
To construct the VDF context the structural component must be
able to identify:
1) The set of urls that make up the deployment classpath
2) The location of the metadata, e.g. META-INF, WEB-INF, etc.
3) The set of possible subdeployments
Deployment Component More Detail
This does the job of deployment for this VDF context
(not subcontexts/deployments).
We want to aim to use the deployment specific
metadata to create microcontainer metadata that can be installed
(instantiated/configured) according to dependencies.
But there are thirdparty components where complete control
of the construction/config is not under IOC/microcontainer control
RAW Deployers
Classloading
JAR
Bean
Classloading Deployer
This has no structural component.
It forms the highest priority (first) deployment component
since very little else can be done reliably until the classes
are available.
It takes it info from the urls identified by the structural
deployments in the VDF contexts.
JAR Deployer
This is the lowest priority (last) structural component.
It takes jars/zips and top level directories (not sub deployments)
and adds the url to the VDF context for classloading.
There is no deployment component.
Bean Deployer
The priority of this deployer is unimportant.
Structural component
It takes .bean with a (META-INF/jboss-bean.xml)
or plain -bean.xml files that contain raw microcontainer
config in xml format.
It identifies the root of the .bean archive (or expanded deployment)
as the classloader url.
Any file in the root of the .bean is eligible as a subdeployment.
Deployment component
Parses the -bean.xml and installs it into the microcontainer
Profile
A profile serves as a collection of deployments.
The simplest implementation is the current JBoss directory
structure, i.e. a static config and a hot deploy config.
A more useful implementation for production
is a versioned/persistent list of deployments.
The profile feeds URLs to the main deployer.
Other Deployers
SAR
RAR
EJB2
EJB3
EAR
-ds.xml
WAR
BSH
Hot Deployment Profile
The hot deployment profile will need the mechanisms
to order deployments like current JBoss