Infrastructure for Distributed Deployment of J2EE Applications
Downloads and useful links
To ease the task of J2EE application deployment, especially in distributed
environments, we have developed an infrastructure for automatic dynamic
multi-host deployment of J2EE applications, which specifically addresses
the following issues:
supporting inter-component connectivity specification and defining its
effects on component configuration and deployment
dealing with application component dependencies on application server
services, their configuration and deployment
enabling reuse of services and components to maintain efficient use
of resources on application server nodes.
The infrastructure defines two Architecture Description Languages (ADL)
for component and link description and component assembly respectively:
The Component Description Language is used to describe application components
and links. Its main features are:
a clear separation of system components from application components
a flexible type system for component ports and links, used to define their compatibility
the ability to specify dependencies of both application and system components
on other system components
a flexible declaration and expression language for configurable component properties,
which allows for specification of inter-component dependencies and propagation of
properties between components.
The Component Assembly Language allows for assembly of application components
into application paths (abstraction that represents a deployment of components
on infrastructure nodes) by connecting appropriate ports via links and specifying
the mapping of these components onto participating application server nodes.
Fig. 1. Infrastructure architecture.
The usage of the infrastructure consists of the following set of steps (see Fig. 1):
Initialization. The infrastructure is initialized with a description of
available application server nodes.
System components and application registration.
The descriptions of system and application components as well as links (written
in the Component Description Language) are registered with the
Component Registry Service.
Writing the deployment path specification.
The application deployer writes a deployment path specification in the
Component Assembly Language, where s/he specifies the placement of components
on the server nodes and links that connect them. The deployer may choose to write
the specification by hand, or to use a GUI-based path editing tool (see Fig. 2),
which also serves as a user-friendly portal to the Replication Management Service.
Preparing the application path.
First, an application deployment specification is submitted for preparation to
the Replication Management Service. This service performs initial validation
and passes the deployment specification to the Replica Configuration Service,
which in turn attempts resolution of application component dependencies on system
components. If all component dependencies successfully resolve, the
Replica Configuration Service configures each component replica,
trying to match any previously deployed component replicas
to replicas in the new application deployment based on their configurations.
All new component deployment configurations are then persistently stored in the
data storage. This last step is called committing the prepared path.
Deployment of prepared path.
When the application deployer requests deployment of the prepared application path,
the Replica Deployment Service issues deployment requests to appropriate
Infrastructure Agents, running on nodes involved in providing
services for this path (step 5a). These agents, in turn, request deployable bundles
of component replicas (scheduled for deployment) from a Deployment Unit Factory
Service, located on a nearby node (step 5b). The Deployment Unit Factory Service
locates the corresponding replica configurations in the persistent storage and generates
a properly configured deployment bundles (step 5c), which are then shipped to
the requesting agent. The agent deploys them in an order that respects deployment
Management of deployed paths.
The infrastructure maintains a registry of prepared paths, deployed paths and
current state of application and system component deployments. The application deployer
may request undeployment of previously deployed paths which will result in undeployment
of component replicas that are exclusively used by the undeployed path.
Fig. 2. A screenshot of the GUI path editing tool with a sample two-node deployment of the Java Pet Store application.
We have implemented the infrastructure as a part of the JBoss open source Java
application server, utilizing its extensible micro-kernel architecture, based on the
JMX specification. We have also developed a GUI tool serving as a
Replication Management Service client. With this tool, infrastructure users may:
compose and edit application deployment path specifications for preregistered applications,
rather than writing them manually using the Component Assembly Language
interact with the Replication Management Service for preparing, committing, deploying
and removing application deployment paths.
Downloads and useful links
Additional details about the infrastructure and other related papers:
Automatic Dynamic Deployment of J2EE Applications in Distributed Environments
A. Akkerman, A. Totok, and V. Karamcheti
Proceedings of the 3rd International Working Conference on Component Deployment (CD'2005),
6th International ACM/IFIP/USENIX Middleware Conference, Grenoble, France, November 2005.
See also the conference presentation.
Efficiently Distributing Component-Based Applications
Across Wide-Area Environments
D. Llambiri, A. Totok, and V. Karamcheti
Proceedings of the International Conference on Distributed Computing Systems (ICDCS'2003),
Providence, RI, May 2003.
An extended version of this paper is available as NYU
Computer Science Technical Report TR-2002-832.
See also the conference presentation.
J2EE-deploy-infrastructure.zip - download the distribution
package of the infrastructure that contains the source code, libraries, scripts, documentation, etc.
Size - 19 MB (!!!)
README.TXT - contains the detailed information about
the infrastructure usage (how to compile the project, deploy and run it) and implementation
(source code organization, methodology, etc.). This file is also contained in the ZIP distributon
Back to the Home Page of Alexander Totok
Back to the PDSG Home Page
Last update: Sunday, November 20, 2005.