1. Introduction 1.1. Project/Component Working Name: Glassfish V2/Sun Java System Application Server 9.1 Update Center 1.2. Name(s) and e-mail address of Document Author(s)/Supplier: Snjezana Sevo-Zenzerovic: snjezana.sevo-zenzerovic@sun.com Satish Viswnatham: satish.viswanatham@sun.com 1.3. Date of This Document: 09/06/2006 2. Project Summary 2.1. Project Description: Update Center functionality enabling the installation of additional components and existing component content update. 2.2. Risks and Assumptions: Download server infrastructure support for required update center content hosting. Availability of sufficient engineering and QA resources to implement and test required functionality. 3. Problem Summary 3.1. Problem Area: In order to improve usability of Glassfish and related products (Sun Java System Application Server, Java EE 5 SDK), it is important to provide user with a simple way to manage lifecycle of Glassfish content and related components. Update Center should address following user scenarios: * User wants to download and install additional addon components which were not selected during the initial installation. Update Center will offer the list of such components and automate their download and installation process. * User gets actively notified about the availability of new or updated addon components. * User wants to download and install core Glassfish component patches and gets actively notified about their availability. 3.2. Justification: It is becoming increasingly difficult to handle download and installation of consolidation products such as Java EE 5 SDK due to increased number of included components and increased bundle download size. 4. Technical Description: 4.1. Details: Proposed implementation of Glassfish update center is loosely based on NetBeans AutoUpdate implementation. Update center functionality is implemented across two tiers: * Server side (web server hosting update center content and corresponding catalog). * Client side (client application delivered as part of core Glassfish/Application Server installation). Proposed Server side directory structure is defined as exported interface in section 4.5.1.1. Update Center catalog is defined as private interface in section 4.5.3.1. Content of downloadable module file is defined as exported interface in section 4.5.1.2. Update Center client application connects to predefined Update Center server URL, downloads available catalog file and uses catalog information to show components available for installation or update. Based on user's choice, client application downloads selected module distribution files, performs their installation and updates local registry of installed modules. It will be possible to invoke Update Center client in following ways: * Windows taskbar icon (implemented using JDIC desktop integration APIs) * Windows program group menu shortcut * asupdate wrapper script * Admin GUI link (depending on Admin GUI resourcing) * Admin Server startup may contact Update Center server, if user configured automatic update checks. Default is check for updates every week. User can also turn off these update checks. In that case Admin Server never checks for updates during startup. 4.2. Bug/RFE Number(s): N/A 4.3. In Scope: N/A 4.4. Out of Scope: N/A 4.5. Interfaces: 4.5.1 Exported Interfaces Interface: Update Center server side file layout Stability: Evolving Former Stability (if changing): N/A Comments: Described in 4.5.1.1 Interface: Downloadable module file structure Stability: Evolving Former Stability (if changing): N/A Comments: Described in 4.5.1.2 Interface: asupdate wrapper script CLI Stability: Evolving Former Stability (if changing): N/A Comments: Described in 4.5.1.3 Interface: Update center client file layout Stability: Evolving Former Stability (if changing): N/A Comments: Described in 4.5.1.4 4.5.1.1 Update Center server side file layout Proposed directory structure of Update Center download web site is as follows (relative to the base URL): /updates/[beta/]update_center_{Glassfish_version}_{DTD_version}.xml (location of catalog file) /modules/[beta/]{Glassfish_version}/{module_distribution_file} (location of module files) 4.5.1.1 Downloadable module file structure Downloadable module file (equivalent of NetBeans NBM file) will be jar archive file with following structure: module_xx.jar | +- info | | | +- info.xml | +- module | | +- locale | | +-module_xx.jar or module_xx.zip module_xx.jar can be addon component installer or configurator jar file as specified in Addon installer and configurator plug-in imported interfaces. Alternatively, module_xx.jar or module_xx.zip can be jar or zip archive containing component files archived relative to Glassfish main installation directory. 4.5.1.3 asupdate wrapper script CLI asupdate and asupdate.bat wrapper scripts will be provided to invoke Update Center client application. Scripts will not require any parameters. 4.5.1.4 Update center client file layout Update center client will introduce following new files into Glassfish file layout: * /updatecenter - top level update center client directory | +---- logs (update log files) | +---- config (client configuration properties) | +---- registry (installed component registry files) | +---- lib (class libs directory) | +---- bin (updatetool.bat and updatetool - wrapper scripts) 4.5.2 Imported interfaces Interface: JDIC 0.9.1 API Stability: External Exporting Project: JDIC 0.9.1, https://jdic.dev.java.net/ Comments: Used for Update Center desktop integration Interface: Addon component packaging Stability: Contract Project Private Exporting Project: Sun Java System Application Server 9, WSARC 2006/339 Comments: Interface: Addon installer plug-in Stability: Contract Project Private Exporting Project: Sun Java System Application Server 9, WSARC 2006/339 Comments: Interface: Addon configurator plug-in Stability: Contract Project Private Exporting Project: Sun Java System Application Server 9, WSARC 2006/339 Comments: 4.5.3 Other interfaces (Optional) Interface: Update Center catalog file DTD Stability: Private Comments: Described in section 4.5.3.1 4.5.3.1 Update Center catalog file DTD Defines the structure of Update Center catalog. Proposed DTD is available at: http://updatecenter.dev.java.net/dtds/updatecenter-catalog-1_0.dtd Attribute descriptions: * module_updates timestamp attribute defines version of the current catalog and it is used by client to determine whether new catalog is available and needs to be downloaded and processed. * module_group Modules can be organized in groups. We can use this feature to present different module sets which correspond to consolidation products such as Java EE 5 SDK. * module This is basic element of catalog. Attribute names are self- explanatory. * description Module description text used by client application to describe the module functionality. * manifest Key source of module information. Most attributes should be self-explanatory. Module-Type attribute denotes type of the module and defines installation procedure which will be used by Update Center client to install this module. Module-Type can be one of these: * archive - module content is jar or zip archive which will be extracted into Glassfish installation directory with no further actions. Appropriate for components such as API docs, Tutorials, etc. * addon_configurator - module content is jar archive which is addon component configurator. Jar file will be placed into /lib/addons directory as mandated by Addon configurator plug-in interface * addon_installer - module content is jar archive which is addon component installer. Jar file will be invoked as defined in Addon installer plug-in interface. *l10n Localized module information, attributes are pointers to the base module. *license License text associated with module. Attribute name is used for license text mapping to appropriate module. 4.6. Doc Impact: Update center will require online and inline help content and changes in Installation Guide and/or Administration Guide documents. 4.7. Admin/Config Impact: It would be desirable to provide access to Update Center client application from Admin GUI interface, but this functionality is optional. 4.8. HA Impact: No direct impact. Impact of clustered environment on addon component installation requirements is out of the scope of this document. 4.9. I18N/L10N Impact: Proposal covers mechanism for the delivery of localized content. Update center client implementation will follow i18n requirements and will be localized as required. 4.10. Packaging & Delivery: Server side content delivery mechanism is covered through Update Center server side file layout, Downloadable module file structure and Update Center catalog file interfaces. Client side will be delivered as part of Glassfish/Sun Java System Application Server installation. 4.11. Security Impact: Proposal is based on current NetBeans Autoupdate implementation which uses unsecure http protocol for client/server communication and content download. 4.12. Compatibility Impact No compatibility impact. This is the first release delivering this functionality and its interfaces. 4.13. Dependencies: This proposal has dependency on continued addon plug-in interfaces support. 5. Reference Documents: * Proposed Update Center catalog DTD: http://updatecenter.dev.java.net/dtds/updatecenter-catalog-1_0.dtd * Proposed Update Center config DTD: http://updatecenter.dev.java.net/dtds/updatecenter-config-1_0.dtd 6. Schedule: 6.1. Projected Availability: Tied to overall Glassfish V2/Sun Java System Application Server 9.1 schedule.