GlassFish Server Open Source Edition 3.1 - Deployment One Pager

1. Introduction

1.1. Project/Component Working Name:

Deployment

1.2. Name(s) and e-mail address of Document Author(s)/Supplier:

Hong Zhang : hzhang_jn@java.net
Tim Quinn : tjquinn@java.net

1.3. Date of This Document:

05/14/2010

2. Project Summary

2.1. Project Description:

  • Clustering deployment, support dynamic deployment to cluster and rolling upgrade
  • Support application related commands in clustering environment
  • Support Weblogic deployment descriptors in Glassfish (partial)
  • Rename sun specific deployment descriptor dtds (sun-.dtd) to glassfish dtds (glassfish-.dtd)
  • Application versioning, support deployment of application with multiple versions

2.2. Risks and Assumptions:

The clustering deployment feature depends on the clustering infrastructure features (basic clustering, synchronization and dynamic reconfiguration). Any delay in the delivery of the depended features will affect the delivery of the clustering deployment feature.

The application versioning feature is done by external contributor SERLI and there is certain risk associated with external contributors.

3. Problem Summary

3.1. Problem Area:

Clustering Deployment

We need to support for this for v2 feature parity. Also this is part of the defining feature set for 3.1.

Support application related commands in clustering environment

We need to support the same set of the application commands for v2 feature parity.

Support WebLogic deployment descriptors in Glassfish (partial)

To enable WebLogic applications developed by ISVs to run on GlassFish.

To allow user to develop applications with simple WebLogic extensions on Glassfish and then run on WebLogic.

Rename sun specific deployment descriptor dtds (sun-.dtd) to glassfish dtds (glassfish-.dtd)

A requirement as part of the Oracle-Sun acquisition.

Application versioning, support deployment of application with multiple versions

To make it easier for users to upgrade/rollback between different versions of the application.

3.2. Justification:

Clustering Deployment

v2 feature parity, part of the release driver for this release.

Support application related commands in clustering environment

v2 feature parity.

Support WebLogic deployment descriptors in Glassfish (partial)

To provide a bridge between Glassfish and WebLogic.

Rename sun specific deployment descriptor dtds (sun-.dtd) to glassfish dtds (glassfish-.dtd)

Acquisition requirement.

Application versioning, support deployment of application with multiple versions

Ease of development.

4. Technical Description:

4.1. Details:

Clustering Deployment

  • Dynamic deployment to cluster

This document describes the high level design for supporting dynamic deployment to cluster.

We will provide v2 feature parity for dynamic deployment to cluster. We will support the same set of operations to manipulate the application lifecycle in the clustering environment without restarting the server instances: deploy, redeploy, undeploy, enable, disable.

The following lists the supported targets of the various deployment mechanisms in the clustering environment:

1. Archive deployment: deploy the application as an archive.
As in v2, the archive deployment could be used to deploy an application to all of the supported targets: standalone instances (including the default server instance) and cluster instances.

2. Directory deployment: deploy the application in a directory format.
In v2, directory deployment can only be used to deploy an application to the default server instance.
In v3, we plan to enhance the directory deployment to deploy to all of the supported targets provided that the application is stored in a shared file system that is mounted in the same place for DAS, remote instance(s) and all instances that participate in the cluster.
Please see this page for more technical details.

3. Dynamic Reloading: redeploy the application by creating/modifying a special .reload file in the applications repository.
As in v2, dynamic reloading will only be used to deploy an application to the default server instance.

4. Automatic deployment: drop the application archive in the autodeploy directory.
As in v2, automatic deployment will only be used to deploy an application to the default server instance.

5. JSR88 deployment.
As in v2, the JSR88 deployment could be used to deploy an application to all of the supported targets: standalone instances (including the default server instance) and cluster instances.

Please see v2.1 doc for sections describing deploying in cluster profile for more details of the feature.

  • Rolling upgrade

We will provide v2 feature parity for application rolling upgrade. Please see v2.1 doc for feature details.

We plan to enhance the application rolling upgrade by taking advantage of the application versioning feature. With the enhancement, no cluster instance restart is needed and the dynamic reconfiguration can be left on (no need to turn it off and then on).

Please see this page for more technical details.

Support application related commands in clustering environment

We will provide v2 feature parity for the application commands in the clustering environment.

These are the new commands which will be added on top of the existing set of v3 commands: create-application-ref, delete-application-ref, list-application-refs.

These are the existing v3 set of the commands which will be now supported/extended in the clustering environment: create-lifecycle-module, delete-lifecycle-module, list-lifecycle-modules, deploy, undeploy, enable, disable, deploydir, redeploy, list-components, show-component-status, list-applications.

Please see v2.1 doc for the detailed syntax on these commands.

Support WebLogic deployment descriptors in Glassfish (partial)

We will support WebLogic deployment descriptors in Glassfish to enable WebLogic applications developed by ISVs to run on GlassFish, and also to allow user to develop applications with simple WebLogic extensions on Glassfish and then run on WebLogic.

This document shows an overview of the current set of the WebLogic deployment descriptors.

In this release, we will only support the subset of the elements in the WebLogic deployment descriptors where Glassfish has equivalent functionality, and the rest elements will be ignored during processing.

This [ page |SupportWLDDInContainers] shows an evaluation of the WebLogic deployment descriptor elements and the Glassfish equivalent deployment descriptor elements when exist.

The weblogic deployment descriptor will be ignored with a warning message when the corresponding glassfish or sun deployment descriptor is present in the same archive.

The deployment module will be responsible for the deployment framework level changes, and the elements in weblogic-application.xml and weblogic-application-client.xml.

Rename sun specific deployment descriptor dtds (sun-.dtd) to glassfish dtds (glassfish-.dtd)

Due to the Oracle-Sun acquisition, we will need to rename all the sun specific deployment descriptor dtds to glassfish dtds.

The sun specific deployment descriptors will continue to be supported (and deprecated) for backward compatibility. The sun deployment descriptor will be ignored with a warning message when the corresponding glassfish deployment descriptor is present in the same archive.

Please see this [ page |GlassfishizeSunDTD] for more technical details.

Application versioning, support deployment of application with multiple versions

With application versioning feature, the user will be able to deploy multiple versions of the application to the Glassfish. And the user can easily upgrade or rollback to one version of the application using the basic set of the commands (deploy/enable/disable). Only one version of the application can be enabled at one time in the runtime.

The name option of the existing application commands is extended to include a version identifier or a version expression to support the application versioning feature. For example, you could deploy the version RC-1.0 of web application foo using the following syntax:

asadmin deploy --name foo:RC-1.0 foo.war

This eliminates the need to update all the existing application commands with an additional option and also greatly simplifies the implementation.

The non-versioned v2 syntax of application commands are continue to be supported where the name option is interpreted as a name with an untagged version.

Please see this [ page |VersioningDesignDocument] for more technical details.

4.2. Bug/RFE Number(s):

Application versioning, issue 4100

Rolling upgrade, issue 4132

4.3. In Scope:

Rolling Upgrade

The application aspect of the rolling upgrade.

Support WebLogic deployment descriptors in Glassfish (partial)

Deployment framework level support for plugging in the processing of the WebLogic deployment descriptors.

Support the subset of the elements in weblogic-application.xml and weblogic-application-client.xml where Glassfish has equivalent functionality.

Application versioning, support deployment of application with multiple versions

We only support application versioning with at most one version enabled at one time in the runtime.

4.4. Out of Scope:

Rolling Upgrade

Load balancer (and its associated cli commands), backup-domain cli command, resource part of the rolling upgrade.

Support WebLogic deployment descriptors in Glassfish (partial)

Support for other weblogic deployment descriptors (weblogic.xml, weblogic-ejb.xml, weblogic-ra.xml, weblogic-webservices.xml). Corresponding container teams will work on those.

Application versioning, support deployment of application with multiple versions

We don't support application runtime versioning where more than one version of the application could be enabled at the same time in the runtime.

4.5. Interfaces:

4.5.1 Public Interfaces

  • Interface: create-application-ref, delete-application-ref, list-application-refs
  • Comment: new CLI application commands for clustering
  • Interface: create-lifecycle-module, delete-lifecycle-module, list-lifecycle-modules, deploy, undeploy, enable, disable, deploydir, redeploy, list-components, list-applications, show-component-status
  • Comment: extend the target option to clustering targets
  • Interface: deploy, undeploy, enable, disable, deploydir, redeploy, get-client-stubs, list-sub-components, show-component-status, create-application-ref, delete-application-ref, list-application-refs
  • Comment: extend the name option to include version identifier/expression to support application versioning
  • Interface: list-components, list-applications, list-application-refs
  • Comment: add a long option to indicate which version of the application is currently enabled
  • Interface: list-components, list-applications
  • Comment: add a subcomponents option for the sub components information
  • Interface: deploy, deploydir, redeploy
  • Comment: add a keepstate option for preserving states across redeployment, a lbenabled option for load balancer, an asyncreplication option for high availability
  • Interface: create-application-ref
  • Comment: add a lbenabled option for load balancer
  • Interface: list-components, list-applications, list-sub-components
  • Comment: add a resources option for the application scoped resource information
  • Interface: weblogic-application-client.xsd, weblogic-application.xsd, weblogic-connector.xsd, weblogic-ejb-jar.xsd, weblogic-javaee.xsd, weblogic-web-app.xsd, weblogic-webservices.xsd, weblogic-jms.xsd, jdbc-data-source.xsd
  • Comment: schemas for weblogic deployment descriptors
  • Interface: glassfish-web-app_3_0-1.dtd, glassfish-ejb-jar_3_1-1.dtd, glassfish-application_6_0-1.dtd, glassfish-application-client_6_0-1.dtd, glassfish-mapping_1_3.dtd
  • Comment: Glassfish dtds to replace the sun dtds.
  • Interface: glassfish-web-app_3_0-1.dtd, glassfish-ejb-jar_3_1-1.dtd, glassfish-application_6_0-1.dtd, glassfish-application-client_6_0-1.dtd
  • Comment: add element version-identifier
  • Interface: glassfish-web-app_3_0-1.dtd, glassfish-ejb-jar_3_1-1.dtd, glassfish-application_6_0-1.dtd
  • Comment: add element keep-state
  • Interface: glassfish-ejb-jar_3_1-1.dtd
  • Comment: add elements compatibility, per-request-load-balancing, disable-nonportable-jndi-names

4.5.2 Private Interfaces

N/A.

4.5.3 Deprecated/Removed Interfaces:

  • Interface: sun-web-app_.dtd, sun-ejb-jar_.dtd, sun-application_.dtd, sun-application-client_.dtd, sun-mapping_*.dtd
  • Reason for Dreprecation: Acquisition requirement: we will use glassfish-web-app_3_0-1.dtd, glassfish-ejb-jar_3_1-1.dtd, glassfish-application_6_0-1.dtd, glassfish-application-client_6_0-1.dtd, glassfish-mapping_1_3.dtd instead.
  • Interface: list-components
  • Reason for Dreprecation: we have list-applications which is doing the exact thing as list-components.

4.6. Doc Impact:

Update man pages for the new/modified CLI commands

Application Deployment Guide/Developer Guide for new features

4.7. Admin/Config Impact:

CLI

New clustering application commands added.

The target option of the existing application commands extends to clustering targets.

The name option of the application commands extends to include version identifier/expression.

GUI

WebLogic deployment descriptors will be exposed through GUI.

The renamed Glassfish deployment descriptors will be exposed through GUI.

Application version will be exposed through GUI.

4.8. HA Impact:

No impact.

4.9. I18N/L10N Impact:

No impact.

4.10. Packaging, Delivery & Upgrade:

4.10.1. Packaging

No impact.

4.10.2. Delivery

No impact.

4.10.3. Upgrade and Migration:

No impact.

4.11. Security Impact:

No impact.

4.12. Compatibility Impact

No compatibility impact. The deprecated sun deployment descriptors will continue to be supported in this release for backward compatibility.

No new requirement on upgrade or migration tool.

4.13. Dependencies:

4.13.1 Internal Dependencies

Clustering infrastructure:

4.13.2 External Dependencies

None

4.14. Testing Impact:

Clustering Deployment

The v2 clustering deployment dev/sqe tests (automated) will be re-enabled and test the deployment to cluster.

Support application related commands in clustering environment

The v2 clustering deployment dev/sqe tests (automated) will be re-enabled and test the application commands.

Support WebLogic deployment descriptors in Glassfish (partial)

Add new tests (automated) to test this feature.

Rename sun specific deployment descriptor dtds (sun-.dtd) to glassfish dtds (glassfish-.dtd)

Add new tests (automated) to test this feature.

Application versioning, support deployment of application with multiple versions

Add new tests (automated) to test this feature.

5. Reference Documents:

3.1 Clustering Design Spec

3.1 Clustering Infrastructure One Pager

3.1 Basic Clustering Wiki Page

3.1 Synchronization Wiki Page

3.1 Dynamic Reconfiguration Wiki Page

v2.1 Application Deployment Guide

v2.1 CLI Man Page

v2.1 Rolling Upgrade Doc

3.1 Rolling Upgrade Wiki Page

An Overview of WebLogic Deployment Descriptors

Renaming Sun Specific Deployment Descriptors Wiki Page

Evaluation of WebLogic Deployment Descriptor Elements Wiki Page

Application Versioning Design Spec

6. Schedule:

6.1. Projected Availability:

Clustering deployment, support dynamic deployment to cluster and rolling upgrade

  • Initially integrated (may not be feature complete) - Milestone 3
  • Feature complete (ready for handoff to QA) - Milestone 4
  • At production quality level - Milestone 6

Support application related commands in clustering environment

  • Initially integrated (may not be feature complete) - Milestone 3
  • Feature complete (ready for handoff to QA) - Milestone 4
  • At production quality level - Milestone 6

Support Weblogic deployment descriptors in Glassfish (partial)

  • Initially integrated (may not be feature complete) - Milestone 4
  • Feature complete (ready for handoff to QA) - Milestone 4
  • At production quality level - Milestone 6

Rename sun specific deployment descriptor dtds (sun-.dtd) to glassfish dtds (glassfish-.dtd)

  • Initially integrated (may not be feature complete) - Milestone 4
  • Feature complete (ready for handoff to QA) - Milestone 4
  • At production quality level - Milestone 6

Application versioning, support deployment of application with multiple versions

  • Initially integrated (may not be feature complete) - Milestone 3
  • Feature complete (ready for handoff to QA) - Milestone 3
  • At production quality level - Milestone 6