|
Table of Contents (Status: Draft, Ready for Review, Reviewed,
ARC'ed ) 1.1 Project/Component Working Name2. Project Summary 2.1 Project Description3. Problem Summary 3.1 Problem Area4. Technical Description
5. References
1. Introduction
|
| Configuration/Other Parameter |
Value for Developer Profile |
Value for Cluster Profile |
Value for Enterprise Profile |
| Security Store | JKS | JKS | NSS |
| Quick Startup | true (enabled) | false (disabled) | false (disabled) |
| Java Platform Security Manager | false (disabled) | false (disabled) | true (enabled) |
| JVM |
|
|
|
| Server Pluggable Feature Factory | PE | EE | EE |
|
(All Profiles get a JPDA Debugger Port(9009/disabled by default)) |
|
|
|
| Admin URL | http://host:admin-port | http://host:admin-port | https://host:admin-port |
| HTTP Access Logging | false (disabled) | false (disabled) | true (enabled) |
| Heart-beat (GMS) | false (disabled) |
true (enabled) |
true (enabled) |
| JMS Implementation Type | EMBEDDED | EMBEDDED for DAS, LOCAL for instances |
EMBEDDED for DAS, |
| Default Startup of Domain (Background/Foreground) |
Background |
Background |
Background
|
| Ability to Create Cluster/Standalone Java EE Engines | Not available | Available | Available |
| Session Replication Mechanism | Not available | Available, in memory. | Available, HADB. |
Table 1: Distinction within Profiles
| Parameter | Few details about what it means |
Reasons to make it a profile-defining -parameter |
| Security Store | Server uses at least a key-store and trust-store each to deal with its certificates and keys. There are two main types of stores: JKS and NSS. These differ in terms of formats and tools that know how to configure the stores. | A particular organization has stringent requirements around these. They might also have processes built around the tools that configure their server side certs, for example. Usually, an enterprise solution (e.g. Java ES) prefers an NSS based security store configuration. |
| Quick Startup | This is an Java-NIO based implementation that is part of on-demand services framework. |
Traditionally, the implementation of Quick Startup gives an impression to a developer that perceived startup of the server is faster than its actual startup. Traditionally, this has not been tried on startup of administration server and any of the non-administration servers in an enterprise domain. We will keep it that way. |
| Java Platform Security Manager | A security manager controls the privileges of a particular piece of Java code in accordance with an administrator-defined security policy. | Developers are not used to carefully look at CodeSources and ProtectionDomains. If the security manager is enabled in this case, developers are likely to be upset by behavior of their application due to (seemingly) unnecessary enablement of the platform security (AccessControlExceptions all over). |
| JVM | By default, we use Sun's JVM's. As such, it is obvious to leverage the optimizations available in the JVM itself, especially the Hotspot VM. | JVM configuration parameters amount to significantly different behavior tailored to certain situations. It is better to configure VM parameters out-of-the-box rather than making users read the (cryptic) VM documentation. |
| Server Pluggable Feature Factory | ||
| Default Static Ports | ||
| Admin URL | ||
| HTTP Access Logging | ||
| Heartbeat enablement for a Cluster (GMs) | ||
| JMS Implementation (SJS MQ Broker) Type | ||
| Default Startup of Domain (Background/Foreground) |
As of now, the only way to start a domain is asadmin start-domain. By default, the domain is started in the background letting the user know the location of the file where the server log is redirected. See a dependency here. |
Competing products liked by developers have this capability. Developers usually like to see the server log records on the console rather than in a file like server.log. In an enterprise scenario, a server instance can only be started by a node-agent and as such it is always in the background. |
| Ability to Create Cluster/Standalone Java EE Engines | Determines whether there is a runtime support to create additional clustered or not Java EE Engines. | A pivotal difference between domains that are cluster-aware and those that are not. |
| Session Replication Mechanism | A mechanism to replicate the session state across various clustered server instances to provide reasonable availability. |
It is needed that users know how their applications are made available. TBD: Need more clarity. |
Table 2: Why a particular parameter is a profile-defining-parameter
4.1.3 Distinction Among Profiles
This specification does not define any specific rules regarding defining a profile. It (defining a profile) is largely an outcome of need. There are various items to consider while defining a profile and hence it is not easy to make any rules around this. In general, it is subjective whether to create a new profile or to make a set of configuration changes a part of an existing profile.
This brings up an interesting point: Why have 2 profiles like developer and enterprise or developer and cluster? Can these be subsumed under one profile?
A reasonable explanation can be provided along the following lines:
Food for thought:
Do developers Need to Create Application Server Clusters? (Do we need yet another profile so that there is a runtime support for clusters)?
4.1.4 Profiles and Administrative Clients
Profiles is a server-side phenomenon. It is not expected that admin clients know the profile of a particular domain and behave differently. Here is how various admin clients will be impacted by profiles:
4.1.5 Profiles and Application Server Installers and GlassFish Bundles
As of now, we have following basic distribution mechanisms (this excludes the Java EE SDK distributions and variations thereof. The Java EE SDK distributions are based on PE distribution).
Following has been decided at the architecture forum in this regard:
| Id | Bundle/Distribution | Comments | Default Profile |
Available
|
| 1 | Standalone Application Server PE Bundle. | Base Application Server. | developer | All |
| 2 | Standalone Application Server EE Bundle. | Base Application Server + Enterprise capable portion + Load balancer plugin + HADB software. |
enterprise |
All |
| 3 | GlassFish Download Zip | Similar to 1, with single XML (setup.xml) for configuration. | developer (User has to run ant setup.xml). | All |
| 4 | GlassFish Download Zip | Similar to 3 with additional support for clusters/instances. Single XML called setup-cluster.xml for configuration. | cluster (User has to run ant setup-cluster.xml). | All |
| 5 | Platform Specific Packages and Java ES Installer. | These is a mode where the application server software is distributed in terms of defined set of packages and post installation scripts. The other software that integrates into Java ES is leveraged, rather than bundling it ourselves unlike 2. | enterprise | All |
To take care of these differences in the way we bundle the application server software, the provision of asaenv.conf[bat] has been made. Ideally, a pluggable architecture that lets users download and use pieces of software is a model we should embrace.
One of the goals for GlassFish V2 is provision of one bundle that has capabilities of clustering. This means that there will be one bundle by merging bundles 3 and 4. The setup.xml will set up the developer profile, whereas the setup-cluster.xml will set up the cluster profile.
Following should be noted in this regard:
Here is something that you should know, about this implementation of profiles:
4.1.7 More about Enterprise and Cluster Profiles
________________________________________________
| ____________ ___________ | NA: Node Agent
| | | | Instance 1|---|cfg1| |
| | DAS | |___________| | |
| |____________| (NA1) |Template| |
| | |Config | |
| ___|___ ___________ | |
| |das-cfg| |Instance 2 |---|cfg2| |--------Domain Boundary
| |_______| |___________| |
| (NA2) |
|________________________________________________|
The enterprise architecture (schematic) of the application server is shown above. DAS is the administration server that manages other Java EE Engines (in that domain) that host the user applications. As an additional benefit, (at additional costs that are arguably unnecessary) DAS is a fully functional, compliant Java EE Engine. Administrators can choose (though they rarely, if at all, do so) to deploy applications to the DAS The essence however, of the enterprise profile is the provision of standalone and clustered server instances. As shown in the diagram, each instance has a configuration (shared or not) that is based on a Template Configuration. Note that Template Configuration applies not only to the existing server instances, but also to the instances that might be created in future. DAS too, has its own configuration (shown as das-cfg) that is independent of the Template Configuration. Thus, following holds:
| DAS:das-cfg | Instances:Template Configuration |
It is quite important then to know what the profile-specific configurations apply to -- DAS Configuration or Template Configuration. It applies to both unless specified otherwise. A significant outcome of this is:
These are indicated throughout the document where applicable. This feature however, is an outcome of various discussion threads on GlassFish Discussion Forum.
All that has been said about realizing usage profiles in Section 4.1 is in scope for this project. Note that the composition of any defined profile is based on experiential knowledge. It is a learning process. For example, we may learn over time that a particular configuration setting is suitable for a particular usage.
Since this entire topic is of general interest and naturally has various interpretations, it is important to list down what this project is not. Following things are not in scope for this project, at least for this release:
| Interface | Stability | Former Stability (if changing) | Comments |
|
asadmin create-domain [--profile (enterprise|cluster|developer)] A new option named profile that takes one of the following values: "developer", "cluster", "enterprise". |
EVOLVING | NA | Exact changes that are made to the domain's configuration for a given profile are subject to change without notice. |
|
asadminenv.conf on all platforms |
EVOLVING | NA |
This file is used to define the defaults to take care of the interplay between profiles and application server installation. The asadmin script will use this file as a preferences file. It is expected that users edit this file judiciously as it affects the installation and "defaults". Note that the contents of this file are supposed to define the default behavior of all the asadmin commands. |
| The default location of asadminenv.conf | EVOLVING | NA |
Standalone Installers (PE/EE/GlassFish): [install-dir]/config Java ES Installers (EE): /opt/SUNWappserver/appserver/config |
| The format of asadminenv.conf | EVOLVING | NA | The format is that of a property file. Each line is supposed to contain either a comment or a '=' separated name-value pair. A line beginning with '#' is a comment. |
| The contents of asadminenv.conf | EVOLVING | NA |
These can be enhanced for releases to come. For this release, A Vanilla PE Solaris installation: # These are install-wide asadmin defaults A Vanilla EE Solaris installation: # These are install-wide asadmin defaults A Vanilla GlassFish installation: # These are install-wide asadmin defaults Note that the default domain that GlassFish users would get is still a developer profile domain. Respective installers are supposed to populate this file appropriately. |
4.5.2 Imported interfaces
| Interface | Stability | Exporting Project: Name, Specification or other Link. | Comments |
4.5.3 Other interfaces (Optional)
| Interface | Stability | Exporting Project: Name, Specification or other Link. | Comments |
There will be considerable impact of this project on documentation. The following will be impacted:
This has been dealt with elsewhere (1, 2). If this dependency is resolved to have an indication of profile in a domain's configuration, the configuration schema might change (although we can leverage a <property> element provision) to accommodate that.
Not applicable.
No considerable impact above and beyond product impact.
Here is the packaging impact:
| Package | Changes | Comments |
| SUNWasu sun-asu-9.1.rpm SUNWasu.zip |
$installdir/lib/install/templates/developer/domain.xml $installdir/lib/install/templates/cluster/domain.xml $installdir/lib/install/templates/enterprise/domain.xml |
These are the XML style sheets used to transform the domain.xml for various profiles. |
For installation impact, see here (section 4.1.5).
Not applicable.
// Incompatible changes to interfaces that others expect
// to be stable may cause other parts of application server or
// other dependent products to break.
// Discuss changes to the imported or exported interfaces.
// Describe how an older version of the interface would
// be handled.
// List any requirements on upgrade tool and migration tool.
No dependencies on other projects. Some subtle dependencies with respect to positioning.
Refer to Product Documentation for Sun's Application Servers, especially
the admin guide.
6.1. Projected Availability
Fully functional implementation by Milestone 3 - GlassFish V2. Refer to overall milestone document.
| Version | Date | Author, Comment |
| 1.00 | 06 January 2007 |
Kedar Mhaswade. Removed classic profiles, cleaned asadminenv.conf related entries. Also, updated GlassFish distribution information. Some changes to fit the current implementation direction. |
| 0.97 | 01 October 2006 | Kedar Mhaswade. Added classic profiles, clarified templates. |
| 0.95 | 14 September 2006 | Kedar Mhaswade. Added various material for profile-defining parameters, installers, asadminenv.conf interface. |
| 0.8 | 11 September 2006 | Kedar Mhaswade, created. |