1. Introduction 1.1. Project/Component Working Name: GlassFish v3 Prelude File Layout and Packaging 1.2. Name(s) and e-mail address of Document Author(s)/Supplier: Snjezana Sevo-Zenzerovic: snjezana.sevo-zenzerovic@sun.com 1.3. Date of This Document: 07/28/2008 2. Project Summary 2.1. Project Description: This project defines product packaging and file layout used to deliver the content of GlassFish v3 Prelude release as standalone product distribution. 2.2. Risks and Assumptions: Project depends on the stability and support for its imported interfaces (mainly IPS). 3. Problem Summary 3.1. Problem Area: GlassFish v3 Prelude release has to be delivered as standalone product installation integrated into Update Center 2.0 content delivery mechanism based on Image Packaging System (IPS) Product must have well defined file layout interface which both supports existing product functionality and enables the delivery of additional functional modules. 3.2. Justification: File layout and packaging are essential product interfaces. 4. Technical Description: 4.1. Details: Product file layout will be largely based on WSARC 2006/239 (Filesystem Layout for Unbundled Software: Best Practices and Requirements). 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). Although this document does not cover any other package based distributions of GlassFish v3 Prelude release, following similar file layout and packaging structure will be strongly recommended for any other distributions based on this release (for instance, eventual RPM package based distribution). 4.2. Bug/RFE Number(s): N/A 4.3. In Scope: File layout and packaging for standalone IPS image based distribution of GlassFish v3 Prelude release. 4.4. Out of Scope: File layout and packaging for any other distributions based on GlassFish v3 Prelude release and file layout and packaging for additional product functionality delivered in subsequent GlassFish v3 releases. 4.5. Interfaces: 4.5.1 Exported Interfaces Interface: GlassFish v3 Prelude File Layout Stability: Uncommitted Former Stability (if changing): N/A Comments: Described in section 4.5.1.1 Interface: GlassFish v3 Prelude IPS Packages Stability: Uncommitted Former Stability (if changing): N/A Comments: Described in section 4.5.1.2 4.5.1.1 GlassFish v3 Prelude File Layout File layout for standalone GlassFish v3 Prelude distributions: bin/ Wrappers/links to commonly used utilities (asadmin, pkg, updatetool) felix/ Felix OSGi Framework (as shared component) bin/ bundle/ conf/ glassfish/ GlassFish bin/ Public utilities (asadmin, startserv, stopserv) config/ Installation-wide configuration files icons/ Icon files (installer distribution only) lib/ appclient/ Standalone client support files dtds/ DTD files install/applications/ RA files registration/ Service tag registry schemas/ Schema files templates/ Template files modules/ Module libraries docs/ Bundled documentation files domains/ Domain configurations domain1/ Default domain configuration applications/ Deployed applications autodeploy/ Autodeploy directory bin/ config/ Domain configuration files classes/ Domain specific classes docroot/ Default docroot lib/ Domains specific libraries ext/ logs/ Log files pkg/ IPS CLI client updatetool/ UC 2.0 GUI client 4.5.1.2 GlassFish v3 Prelude IPS Packages This is package list proposal which includes draft alignment with OSGi bundles. Note that this lists only packages produced by GlassFish v3 build and not those produced and delivered to Update Center repository from other sources (such as Metro). Package Name/ Description OSGi Bundle content glassfish-nucleus Nucleus org.glassfish.core:glassfish com.sun.enterprise:hk2 org.glassfish.core:kernel org.glassfish.core:common-util glassfish-api GlassFish API org.glassfish:javax.javaee org.glassfish.common:glassfish-api org.glassfish.common:internal-api glassfish-common Common utilities and components org.glassfish.common:glassfish-ee-api org.glassfish.external:apache-commons org.glassfish.external:ldapbp-repackaged org.glassfish.common:annotation-framework org.glassfish.common:container-common org.glassfish.common:glassfish-naming glassfish-security Security modules org.glassfish.security:securitycommon org.glassfish.security:realms org.glassfish.core:security glassfish-jca Connector modules org.glassfish.connectors:work-management org.glassfish.connectors:connectors-internal-api org.glassfish.connectors:connectors-runtime glassfish-jta Transaction modules org.glassfish.transaction:transaction-internal-api org.glassfish.transaction:jts org.glassfish.transaction:jta glassfish-deployment Deployment Modules org.glasfish.deployment:deployment:common org.glassfish.deployment:deployment-client org.glassfish.deployment:dol org.glassfish.deployment:deployment-javaee-core glassfish-grizzly Grizzly org.glassfish.external:grizzly-module org.glassfish.external:grizzly-optionals glassfish-management Base GlassFish Admin and Monitoring org.glassfish.admin:config-api org.glassfish.admin:monitoring-core org.glassfish.admin:server-mgmt org.glassfish.admin:admin-core org.glassfish.admin:backup org.glassfish.external:jmxremote_optional-repackaged org.glassfish.admin:launcher org.glassfish.admin:admin-util org.glassfish.admin:cli-framework org.glassfish.admin:admin-cli org.glassfish.admin:cli-optional glassfish-amx AMX org.glassfish.common:amx-impl org.glassfish.common:amx-api org.glassfish.common:glassfish-mbeanserver glassfish-management-api REST management API (UC only) glassfish-gui Base Admin GUI (UC only) org.glassfish.admingui:console-plugin-service org.glassfish.admingui:console-web-plugin glassfish-web Web Container Runtime org.glassfish.web:web-core org.glassfish.security:websecurity org.glassfish.web:jstl-impl org.glassfish.web:war-util org.glassfish.web:web-naming org.glassfish.web:web-tier org.glassfish.web:jspimpl org.glassfish.web:gf-web-connector org.glassfish.web:web-common glassfish-jsf - JSF org.glassfish.web:jsf-connector glassfish-web-management Web Container Admin/Monitoring org.glassfish.web:web-cli glassfish-web-gui Web Container Admin GUI (UC only) glassfish-jdbc JDBC Connection Pooling Runtime glassfish-jdbc-management JDBC Admin/Monitoring glassfish-jdbc-gui JDBC Admin GUI (UC only) glassfish-jpa JPA Support (UC only?) org.glassfish.persistance:jpa-connect org.glassfish.persistance:eclipselink-wrapper glassfish-ejb EJB Runtime (UC only) org.glassfish.ejb:ejb-container org.glassfish.external:asm-all-repackaged org.glassfish.ejb:gf-ejb-connector glassfish-ejb-management EJB Container Admin/Monitoring glassfish-ejb-gui EJB Container Admin GUI (UC only) glassfish-registration GlassFish Registration org.glassfish.registration:registration-api org.glassfish.external:commons-codec-repackaged org.glassfish.registration.registration-impl org.glassfish.external:sysnet-registration-repackaged glassfish-scripting Scripting Support org.glassfish.scripting:grizzly-jruby-module org.glassfish.scripting:gf-jruby-connector javadb Java DB (UC only) felix Felix OSGi Framework (shared package) 4.5.2 Imported interfaces Interface: Image Packaging System (IPS) Stability: Uncommitted Exporting Project: http://opensolaris.org/os/project/pkg/documents/pkgtasks/ Comments: IPS is ported to non-Solaris platforms by Update Center 2.0 project Interface: Filesystem Layout for Unbundled Software Stability: Committed Exporting Project: WSARC 2006/239 http://sac.sfbay.sun.com/Archives/CaseLog/arc/WSARC/2006/239/final.m aterials/FSL_Unbundled_v1.0.pdf Comments: Only Sun internal link available at this time. 4.6. Doc Impact: This project impacts all product documentation since it defines product file layout and naming. 4.7. Admin/Config Impact: Project defines the location of product files, including those used for product configuration. 4.8. HA Impact: N/A 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 and locale, i.e. -. 4.10. Packaging & Delivery: The proposal itself defines product packaging and delivery. 4.11. Security Impact: Security considerations will be taken into account while specifying default file/directory access permissions. 4.12. Compatibility Impact Several file layout changes compared to previous major release (GlassFish v2): * Standalone distributions contain glassfish subdirectory in order to comply with unbundled software file layout policy and enable integration with Update Center 2.0. * Product libraries are moved from lib to modules subdirectory. This will be mitigated by providing "wrapper" jar files for javaee.jar, j2ee.jar and appserv-rt.jar in glassfish/lib directory in order to retain backward compatibility. * Addition of felix directory as the result of Felix integration. 4.13. Dependencies: Proposal depends on the delivery of all GlassFish v3 Prelude release product components defined in IPS package interface and it is sensitive to changes in product content and OSGi bundling. 5. Reference Documents: In addition to imported interface documents referenced in section 4.5.2. following documents are of interest: * OSGi Integration One-pager http://wiki.glassfish.java.net/attach/V3FunctionalSpecs/GFv3Prelude-OSGi -onepager-v0.2.txt * List of OSGi bundles and dependencies (snapshot) https://glassfish.dev.java.net/servlets/GetAttachment?list=dev&msgId=170 8016&attachId=1 * IPS Packaging Best Practices - guidelines on IPS package naming and versionsing http://wiki.updatecenter.java.net/Wiki.jsp?page=UC20.Docs.Packaging 6. Schedule: 6.1. Projected Availability: October 2008