GlassFish Server Open Source Edition 3.1 - Packaging One Pager

1. Introduction

1.1. Project/Component Working Name:

GlassFish Open Source Edition 3.1 Packaging

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

Snjezana Sevo-Zenzerovic: snjezana@java.net

1.3. Date of This Document:

07/26/2010

2. Project Summary

2.1. Project Description:

This project defines product packaging used to deliver the content of GlassFish Open Source Edition 3.1 release as standalone product distribution.

2.2. Risks and Assumptions:

Project depends on the stability and support for its imported interfaces (mainly IPS). It also depends on the timely delivery of package payload files.

3. Problem Summary

3.1. Problem Area:

GlassFish 3.1 release has to be delivered as standalone product installation integrated into Update Center 2.x content delivery mechanism based on Image Packaging System (IPS).

3.2. Justification:

File layout and packaging are essential product interfaces.

4. Technical Description:

4.1. Details:

Product packages will be organized based on functional component boundaries and will be mapped to OSGi bundles. Package naming and versioning will follow IPS Packaging Best Practices document (see section 5 for link).

All existing GlassFish packages as defined in GlassFish v3 Packager one-pager will continue being maintained and shipped with the exception of glassfish-scripting package. This project will define additional new packages required to deliver new product functionality being implemented in this release.

4.2. Bug/RFE Number(s):

.
Issue Tracker issue 11380 - Packages for OSGi/Java EE support.
Issue Tracker issue 12463 - Removing JRuby from install bundles.
Issue Tracker issue 12676 - Add additional package info metadata to GlassFish packages.

4.3. In Scope:

Packaging for standalone IPS image based distributions of GlassFish Open Source Edition 3.1 release.

4.4. Out of Scope:

Packaging for any other distributions based on GlassFish Open Source Edition 3.1 release and packaging for additional product functionality delivered in subsequent GlassFish 3.x releases or offered as additional content through update center.

4.5. Interfaces:

4.5.1 Public Interfaces

Interface: GlassFish Open Source Edition 3.1 IPS Packages
Stability: Uncommitted
Former Stability: Uncommitted
Comments: Described in section 4.5.1.1

4.5.1.1

This table defines IPS packages which will be newly introduced in 3.1 release:

Package Name Description Depends on Comments
shoal Shoal GMS framework glassfish-nucleus Standalone package for Shoal. Need to be able to remove it and replace with other GMS framework such as Coherence.
glassfish-cluster Product-wide clustering support implementation. glassfish-common, shoal(optional)  
glassfish-ha HA support glassfish-common  
glassfish-jms-ra Generic RA and JMS JCA glassfish-jms Required for WebSphere/WebLogic interop. Available in stable update center repository only; this would replace current glassfish-generic-ra package.
glassfish-ant-tasks GlassFish Ant tasks library - Available as contrib update center repository content only.
felix-gui Felix Admin Console glassfish-osgi-http Available as contrib update center repository content only.

These existing IPS packages will be updated with significant new content or have updated package dependencies:

Package Name Description New content/dependency Comments
glassfish-nucleus Nucleus package Deployment versioning support  
glassfish-common Commons package Clustering and HA API  
glassfish-web Web container package Additional clustering/HA support  
glassfish-ejb-lite EJB lite container package Additional OSGi support  
glassfish-ejb Full EJB container package Additional clustering/HA support  
glassfish-jca JCA package Additional OSGi support  
glassfish-jpa JPA package Additional OSGi support  
glassfish-jms JMS package Additional clustering/HA support  
metro Metro package Additional clustering/HA support  
glassfish-gui Core admin console package New dependency on glassfish-management  

This existing package will be obsoleted:

Package Name Description Comments
glassfish-scripting JRuby scripting support package May require publishing of one-off empty placeholder package in order to handle upgrades from 3.0 and 3.0.1

4.5.2 Private Interfaces

N/A

4.5.3 Deprecated/Removed Interfaces:

glassfish-scripting IPS package.

4.6. Doc Impact:

This project impacts product documentation in areas which need to reference package names and content, such as administration, installation and upgrade guides.

4.7. Admin/Config Impact:

Project defines the packaging of product files, including those used for product configuration. However, domain and server instance configuration files themselves are not under package system control.

4.8. HA Impact:

Project defines packaging of clustering/HA support files, but at this point does not have other impact on clustering and HA implementation.

4.9. I18N/L10N Impact:

Additional localized content will be delivered following Java and OSGi guidelines and locale specific files will be packaged into IPS packages which will be named according to the base package for English version, i.e.<base package name>-l10n. Such packages will have defined dependency on their corresponding base package.

4.10. Packaging, Delivery & Upgrade:

4.10.1. Packaging

See section 4.5.1.1.

4.10.2. Delivery

Installation impact is minimal since installer uses pre-assembled installation image archive as its payload content. This isolates installer implementation from changes in package list used for particular GlassFish distribution.

4.10.3. Upgrade and Migration:

Product upgrades from previous Glassfish 3.x releases will be handled by pkg(5) framework. Care will be taken during package content design to ensure preservation of existing product configuration files which can be modified by user, such as asenv.conf and asenv.bat and existing domain configuration directories. Existing metapackages and incorporation packages will be used to automatically install new packages during existing installation update.
There is no direct impact of this project on side-by-side upgrades since domain configuration files are not under package control.

4.11. Security Impact:

Project defines file ownership and permissions for all product files which are under IPS packaging control and this mechanism will be used to restrict access to product files.

4.12. Compatibility Impact

Package names and content are consistent with those used in previous GlassFish 3.x releases.

4.13. Dependencies:

4.13.1 Internal Dependencies

Project depends on all GlassFish modules which produce content that needs to be included in the GlassFish distribution, including their transitive dependencies.

4.13.1.1 Package Dependencies

Product packages have defined dependencies in order to ensure consistent content of installed product image. In 3.1 release, package dependencies will be more strictly enforced than in previous 3.x releases since package dependency will generally specify both package name and its version up to the level of particular promoted build. This rule may be relaxed for packages which contain independently versioned external content provided that project delivering such packages guarantees their compatibility with multiple GlassFish promoted builds. One example of such package would be jersey.

Project will also continue delivering metapackages (glassfish-web-profile and glassfish-full-profile) and incorporation packages (glassfish-web-incorporation and glassfish-full-incorporation). Metapackages specify set of all packages which are part of particular product distribution (either web profile or full platform) as dependency so the presence of metapackage ensures that no content will be missing from installed image. Incorporation packages also specify dependency on all distribution packages using "incorporates" type dependency which sets both lower and upper bound on package version. However, this type of dependency does not enforce the presence of dependency packages in installed image, so both metapackages and incorporation packages are required to control both aspects of installed image consistency, i.e. the presence of installed packages and their exact versions.

4.13.2 External Dependencies

  • Update Center 2.3 - available under CDDL license, existing dependency.
    • Includes dependency on maven-makepkgs-plugin version 0.5.* and pkg(5).
    • Update Center 2.3 project is currently in maintenance mode, which may affect the delivery of enhancements which are of interest to this project, such as interactive package license acceptance prompt in pkg(5).

4.14. Testing Impact:

This feature is implicitly tested through product functional testing since functional areas will be affected by missing or corrupted files or incorrect permissions.

Specific tests for packager and distribution assembly modules will also be developed. These tests will check for inconsistencies between staged content and corresponding IPS package content and track changes in the package content such as addition and removal of product files.

5. Reference Documents:

6. Schedule:

6.1. Projected Availability:

  • Feature complete in milestone 5 (09/12/2010)
  • At production quality level in milestone 6 (11/21/2010)