type=page
status=published
title=Preface
next=manvol1.html
prev=title.html
~~~~~~

Preface
=======

[[GSRFM441]][[sthref2]]

[[preface]]
Preface
-------

[NOTE]
====
This documentation is part of the Java Enterprise Edition contribution
to the Eclipse Foundation and is not intended for use in relation to
Java Enterprise Edition or Orace GlassFish. The documentation is in the
process of being revised to reflect the new Jakarta EE branding.
Additional changes will be made as requirements and procedures evolve
for Jakarta EE. Where applicable, references to Java EE or Java
Enterprise Edition should be considered references to Jakarta EE.

Please see the Title page for additional license information.
====

Both novice users and those familiar with GlassFish Server Open Source
Edition can use online man pages to obtain information about the product
and its features. A man page is intended to answer concisely the
question "What does it do?" The man pages in general comprise a
reference manual. They are not intended to be a tutorial.

[[GSRFM442]][[sthref3]]


[[overview]]
Overview
~~~~~~~~

The following contains a brief description of each man page section and
the information it references:

* Section 1 describes, in alphabetical order, the `asadmin` utility subcommands.
* Section 1M describes GlassFish Server utility commands.
* Section 5ASC describes concepts that are related to GlassFish Server administration.

Below is a generic format for man pages. The man pages of each manual
section generally follow this order, but include only needed headings.
For example, if there are no bugs to report, there is no Bugs section.

Name::
  This section gives the names of the commands or functions documented,
  followed by a brief description of what they do.
Synopsis::
  This section shows the syntax of commands or functions.
  The following special characters are used in this section:

  [ ];;
    Brackets. The option or argument enclosed in these brackets is
    optional. If the brackets are omitted, the argument must be
    specified.
  |;;
    Separator. Only one of the arguments separated by this character can
    be specified at a time.

Description::
  This section defines the functionality and behavior of the service.
  Thus it describes concisely what the command does. It does not discuss
  options or cite examples.
Options::
  This section lists the command options with a concise summary of what
  each option does. The options are listed literally and in the order
  they appear in the Synopsis section. Possible arguments to options are
  discussed under the option, and where appropriate, default values are
  supplied.
Operands::
  This section lists the command operands and describes how they affect
  the actions of the command.
Examples::
  This section provides examples of usage or of how to use a command or
  function. Wherever possible a complete example including command-line
  entry and machine response is shown. Examples are followed by
  explanations, variable substitution rules, or returned values. Most
  examples illustrate concepts from the Synopsis, Description, Options,
  and Usage sections.
Exit Status::
  This section lists the values the command returns to the calling
  program or shell and the conditions that cause these values to be
  returned. Usually, zero is returned for successful completion, and
  values other than zero for various error conditions.
See Also::
  This section lists references to other man pages, in-house
  documentation, and outside publications.
Notes::
  This section lists additional information that does not belong
  anywhere else on the page. It takes the form of an aside to the user,
  covering points of special interest. Critical information is never
  covered here.
Bugs::
  This section describes known bugs and, wherever possible, suggests workarounds.

