type=page
status=published
title=Overview of GlassFish Server Open Source Edition 7 Application Deployment
next=deploying-applications.html
prev=preface.html
~~~~~~

= Overview of GlassFish Server Open Source Edition 7 Application Deployment

[[GSDPG00003]][[gihxo]]


[[overview-of-glassfish-server-open-source-edition-5.0-application-deployment]]
== 1 Overview of GlassFish Server Open Source Edition 7 Application Deployment

GlassFish Server Open Source Edition 7 provides an environment for
developing and deploying Java applications and web services. GlassFish
Server applications include Java Platform, Enterprise Edition (Jakarta EE
platform) standard features as well as features specific to GlassFish
Server. This guide explains the tools and processes used for deploying
applications and modules in the GlassFish Server environment. Only
GlassFish Server features are described in detail in this document.

The following topics are addressed here:

* link:#gihzx[About Application Deployment]
* link:#giphm[About Assembly and Deployment Events]
* link:#giifh[About Deployment Tools]
* link:#gipud[Additional Information on Application Deployment]

Information and instructions on deploying from the command line are
provided in this document. Information and instructions for
accomplishing the deployment tasks by using the Administration Console
are contained in the Administration Console online help.

[[gihzx]][[GSDPG00061]][[about-application-deployment]]

=== About Application Deployment

Assembly, also known as packaging, is the process of combining discrete
components of an application or module into a single unit that can be
installed on an application server. The GlassFish Server assembly
process conforms to the customary Jakarta EE specifications. The only
difference is that when you assemble applications or modules in
GlassFish Server, you can include optional GlassFish Server deployment
descriptors that enhance functionality.

Deployment is the process of installing an application or module on
GlassFish Server, optionally specifying location-specific information,
such as a list of local users that can access the application, or the
name of the local database. GlassFish Server deployment tools expand the
archive file into an open directory structure that is ready for users.
GlassFish Server deployment tools are described in link:#giifh[About
Deployment Tools].

The following topics are addressed here:

* link:#giptw[General Deployment Functionality]
* link:#gihzc[Deployment Descriptors and Annotations]
* link:#gikhs[Modules and Applications]
* link:#gijla[Access to Shared Framework Classes]
* link:#gihzk[Naming Standards]
* link:#gkhhv[Module and Application Versions]

[[giptw]][[GSDPG00319]][[general-deployment-functionality]]

==== General Deployment Functionality

Various Jakarta EE module types, such as connector module, web module, EJB
module, application client module, can be deployed in the following
ways:

* Archive Deployment. Deploys the application as an archive file. For
instructions, see link:deploying-applications.html#gijmq[To Deploy an
Application or Module].
* Dynamic Reloading. Redeploys the application by creating or modifying
a special `.reload` file in the applications repository. For
instructions, see link:deploying-applications.html#fwakh[To Reload
Changes to Applications or Modules Dynamically].
* Automatic Deployment. Deploys the application archive that is placed
in the autodeployment directory. For instructions, see
link:deploying-applications.html#fvxze[To Deploy an Application or Module
Automatically].
* Directory Deployment. Deploys the application in a directory format.
For instructions, see link:deploying-applications.html#gilcn[To Deploy an
Application or Module in a Directory Format].
* JSR 88 Deployment. A deployment mechanism implemented based on the JSR
88 standard from `jcp.org`. It delivers vendor neutral deployment
options. See link:#beaee[JSR 88 Client] and link:#giiel[JSR 88 Naming].

A deployment plan, which deploys a portable archive along with a
deployment plan containing GlassFish Server deployment descriptors, can
apply to any of these deployment techniques. For instructions, see
link:deploying-applications.html#gijyb[To Deploy an Application or Module
by Using a Deployment Plan].

There are two work situations that require different safeguards and
processes:

* A development environment provides a loose set of tools and work
spaces for a relatively small number of developers who are creating and
testing applications and modules.
* A production environment provides a stable, protected environment
where applications are tuned to maximum efficiency for business use
rather than for development.

Some deployment methods that are used effectively in a development
environment should not be used in production. In addition, whenever a
reload is done, the sessions that are in transit become invalid, which
might not be a concern for development, but can be a serious matter in
production. The client must restart the session, another negative in a
production environment.

For production environments, any upgrade should be performed as a
rolling upgrade, which upgrades applications and modules without
interruption in service. For more information, see
link:../ha-administration-guide/rolling-upgrade.html#GSHAG00010[Upgrading Applications Without Loss of Availability] in
GlassFish Server Open Source Edition High Availability Administration
Guide.

[[gihzc]][[GSDPG00320]][[deployment-descriptors-and-annotations]]

==== Deployment Descriptors and Annotations

A deployment descriptor is an XML file that describes how a Jakarta EE
application or module should be deployed. Each deployment descriptor XML
file has a corresponding Document Type Definition (DTD) file or schema
(XSD) file, which defines the elements, data, and attributes that the
deployment descriptor file can contain. The deployment descriptor
directs a deployment tool to deploy a module or application with
specific container options, and also describes specific configuration
requirements that you must resolve.

Because the information in a deployment descriptor is declarative, it
can be changed without requiring modifications to source code. During
deployment, GlassFish Server reads the information in the deployment
descriptor and deploys the application or module as directed.

The following types of deployment descriptors are associated with
GlassFish Server:

* Jakarta EE Standard Descriptors.
Jakarta EE standard deployment descriptors are described
in the Jakarta EE specification. You can find the
specification at `https://jakarta.ee/specifications/`.
Information about the XML schemas that define Jakarta EE standard
deployment descriptors is available at
`https://jakarta.ee/xml/ns/jakartaee/`.
+
The Jakarta EE specification permits the use of alternate top-level
standard deployment descriptors that reside outside of the application
archive using the `alt-dd` mechanism (alternate module-level deployment
descriptors were permitted prior to Jakarta EE 7). Alternate deployment
descriptors are described in the Jakarta EE 7 specification. You can find
the specification at
`http://www.oracle.com/technetwork/java/javaee/tech/`. Alternate
deployment descriptors override the top-level deployment descriptors
packaged in an application archive. For example, for EAR files, an
alternate deployment descriptor overrides `application.xml`. For
standalone modules, an alternate deployment descriptor overrides the
top-level module descriptor, such as `web.xml`.
* GlassFish Server Descriptors. GlassFish Server provides optional
deployment descriptors for configuring features that are specific to
GlassFish Server. For example, when you assemble an EJB module, you
annotate or create two GlassFish Server deployment descriptor files with
these names: `ejb-jar.xml` and `glassfish-ejb-jar.xml`. If the EJB
component is an entity bean with container-managed persistence (CMP),
you can also create a `.dbschema` file and a `sun-cmp-mapping.xml` file.
For complete descriptions of these files and their elements, see
link:dd-files.html#giida[GlassFish Server Deployment Descriptor Files]
and link:dd-elements.html#beaqi[Elements of the GlassFish Server
Deployment Descriptors].
+
GlassFish Server also permits the use of alternate top-level GlassFish
Server runtime deployment descriptors that reside outside of an
application archive. Alternate GlassFish Server deployment descriptors
override the top-level deployment descriptors packaged in the archive.
For example, for EAR files, an alternate GlassFish Server deployment
descriptor overrides `glassfish-application.xml`. For standalone
modules, an alternate GlassFish Server deployment descriptor overrides
the top-level module descriptor, such as `glassfish-web.xml`. The name
of the GlassFish Server alternate deployment descriptor file must begin
with `glassfish-`. Alternate deployment descriptors do not apply to
`sun-*.xml` deployment descriptors.
+
Unless otherwise stated, settings in the GlassFish Server deployment
descriptors override corresponding settings in the Jakarta EE standard
descriptors and in the GlassFish Server configuration.

An annotation, also called metadata, enables a declarative style of
programming. You can specify information within a class file by using
annotations. When the application or module is deployed, the information
can either be used or overridden by the deployment descriptor. GlassFish
Server supports annotation according to the following specifications:

* http://www.jcp.org/en/jsr/detail?id=250[JSR 250 Common Annotation
Specification]
* http://www.jcp.org/en/jsr/detail?id=181[JSR 181 Annotation for Web
Services Specification]
* http://www.jcp.org/en/jsr/detail?id=318[EJB 3.1 Specification]

The following annotation and deployment descriptor combinations are
supported:

* Jakarta EE applications or modules can be packaged with full Jakarta EE
compliant standard and runtime deployment descriptors. If the standard
deployment descriptors have specified the `metadata-complete` attribute,
annotations in the application or module are ignored.
* Jakarta EE applications or modules can be fully annotated with metadata
defined by the listed specifications. Annotation eliminates the need for
Jakarta EE standard deployment descriptors. In most cases, the GlassFish
Server deployment descriptors are also not needed.
* Jakarta EE applications or modules can be partially annotated with some
deployment information in standard deployment descriptors. In case of
conflicts, deployment descriptor values supersede the annotated
metadata, and a warning message is logged.

[[gikhs]][[GSDPG00321]][[modules-and-applications]]

==== Modules and Applications

An application is a logical collection of one or more modules joined by
application annotations or deployment descriptors. You assemble
components into JAR, WAR, or RAR files, then combine these files and,
optionally, deployment descriptors into an Enterprise archive (EAR) file
which is deployed.

A module is a collection of one or more Jakarta EE components that run in
the same container type, such as a web container or EJB container. The
module uses annotations or deployment descriptors of that container
type. You can deploy a module alone or as part of an application.

The following topics are addressed here:

* link:#beacv[Types of Modules]
* link:#beacu[Module-Based Deployment]
* link:#beacw[Application-Based Deployment]

[[beacv]][[GSDPG00307]][[types-of-modules]]

===== Types of Modules

GlassFish Server supports the following types of modules:

* Web Module. A web module, also known as a web application, is a
collection of servlets, EJBs, HTML pages, classes, and other resources
that you can bundle and deploy to several Jakarta EE application servers. A
web application archive (WAR) file is the standard format for assembling
web applications. A WAR file can consist of the following items:
servlets, JavaServer Pages (JSP) files, JSP tag libraries, utility
classes, static pages, client-side applets, beans, bean classes,
enterprise bean classes, plus annotations or web deployment descriptors
(`web.xml` and `glassfish-web.xml`).
* EJB Module. An EJB module is a deployable software unit that consists
of one or more enterprise beans, plus an EJB deployment descriptor. A
Java archive (JAR) file is the standard format for assembling enterprise
beans. An EJB JAR file contains the bean classes (home, remote, local,
and implementation), all of the utility classes, and annotations or
deployment descriptors (`ejb-jar.xml` and `glassfish-ejb-jar.xml`). If
the EJB component is a version 2.1 or earlier entity bean with container
managed persistence (CMP), you can also include a `.dbschema` file and a
CMP mapping descriptor (`sun-cmp-mapping.xml`).
* Connector Module. A connector module, also known as a resource adapter
module, is a deployable software unit that provides a portable way for
EJB components to access foreign enterprise information system (EIS)
data. A connector module consists of all Java interfaces, classes, and
native libraries for implementing a resource module, plus a resource
deployment descriptor. A resource adapter archive (RAR) is the standard
format for assembling connector modules. Each GlassFish Server connector
has annotations or a deployment descriptor file (`ra.xml`).
+
After deploying a J2EE connector module, you must configure it as
described in link:../application-development-guide/connectors.html#GSDVG00013[Developing Connectors] in GlassFish Server
Open Source Edition Application Development Guide.
* Application Client Module. An application client module is a
deployable software unit that consists of one or more classes, and
application client deployment descriptors (`application-client.xml` and
`glassfish-application-client.xml`). An application client JAR file
applies to a GlassFish Server type of Jakarta EE client. An application
client supports the standard Jakarta EE Application Client specifications.
* Lifecycle Module. A lifecycle module provides a means of running
short-duration or long-duration Java-based tasks within the GlassFish
Server environment. Lifecycle modules are not Jakarta EE standard modules.
See link:../application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners] in GlassFish Server
Open Source Edition Application Development Guide for more information.

[[beacu]][[GSDPG00308]][[module-based-deployment]]

===== Module-Based Deployment

You can deploy web, EJB, and application client modules separately,
outside of any application. Module-based deployment is appropriate when
components need to be accessed by other modules, applications, or
application clients. Module-based deployment allows shared access to a
bean from a web, EJB, or application client component.

The following figure shows separately-deployed EJB, web, and application
client modules.

[[GSDPG00001]][[fwfdj]]


.*Figure 1-1 Module-Based Assembly and Deployment*
image:img/dgdeploy3.png[
"Figure shows EJB, web, and application client module assembly and
deployment."]


[[beacw]][[GSDPG00309]][[application-based-deployment]]

===== Application-Based Deployment

Application-based deployment is appropriate when components need to work
together as one unit.

The following figure shows EJB, web, application client, and connector
modules assembled into a Jakarta EE application.

[[GSDPG00002]][[fvyip]]


.*Figure 1-2 Application-Based Assembly and Deployment*
image:img/dgdeploya.png[
"Figure shows Jakarta EE application assembly and deployment."]


[[gijla]][[GSDPG00322]][[access-to-shared-framework-classes]]

==== Access to Shared Framework Classes

If you assemble a large, shared library into every module that uses it,
the result is a huge file that takes too long to register with the
server. In addition, several versions of the same class could exist in
different class loaders, which is a waste of resources. When Jakarta EE
applications and modules use shared framework classes (such as utility
classes and libraries), the classes can be put in the path for the
common class loader or an application-specific class loader rather than
in an application or module.

To specify an application-specific library file during deployment, use
the `--libraries` option of the `deploy` or `redeploy` subcommand of the
`asadmin` command. To add a library JAR file to the Common class loader
directory, the Java optional package directory, or the
application-specific class loader directory, use the `add-library`
subcommand. You can then list the libraries with `list-libraries` and
remove the libraries with `remove-library`. For more information about
all these commands, see the GlassFish Server Open Source Edition
Reference Manual.

For more information about class loaders, see link:../application-development-guide/class-loaders.html#GSDVG00003[Class
Loaders] in GlassFish Server Open Source Edition Application Development
Guide.


[NOTE]
====
According to the Jakarta EE specification, section 8.1.1.2, "Dependencies,"
you cannot package utility classes within an individually-deployed EJB
module. Instead, you must package the EJB module and utility JAR within
an application using the JAR Extension Mechanism Architecture.
====


[[gihzk]][[GSDPG00323]][[naming-standards]]

==== Naming Standards

Names of applications and individually-deployed modules must be unique
within a GlassFish Server domain. Modules within an application must
have unique names. In addition, for enterprise beans that use
container-managed persistence (CMP), the `.dbschema` file names must be
unique within an application.

You should use a hierarchical naming scheme for module file names, EAR
file names, module names as found in the `module-name` portion of the
`ejb-jar.xml` files, and EJB names as found in the `ejb-name` portion of
the `ejb-jar.xml` files. This hierarchical naming scheme ensures that
name collisions do not occur. The benefits of this naming practice apply
not only to GlassFish Server, but to other Jakarta EE application servers
as well.

The following topics are addressed here:

* link:#gjjfg[Portable Naming]
* link:#giidg[JNDI Naming]
* link:#beada[Directory Structure]
* link:#giiel[JSR 88 Naming]

[[gjjfg]][[GSDPG00310]][[portable-naming]]

===== Portable Naming

Starting in Jakarta EE 6, the Jakarta EE specification defines the portable
`application-name`, which allows you to specify an application name in
the `application.xml` file. For example:

[source,xml]
----
<application-name>xyz</application-name>
----

The Jakarta EE specification also defines the portable `module-name`
element in the module standard deployment descriptors.

GlassFish Server determines the application registration name according
to the following order of precedence:

1. The name specified at deployment time in the Administration Console
or in the `--name` option of the `asadmin deploy` command is used.
2. If no name is specified at deployment time, the portable
`application-name` or `module-name` in the Jakarta EE deployment descriptor
is used.
3. If no name is specified at deployment time or in the deployment
descriptors, the archive name, minus the file type suffix, is used.

[[giidg]][[GSDPG00311]][[jndi-naming]]

===== JNDI Naming

Java Naming and Directory Interface (JNDI) lookup names for EJB
components must also be unique. Establishing a consistent naming
convention can help. For example, appending the application name and the
module name to the EJB name is a way to guarantee unique names, such as,
`jms/qConnPool`.

[[beada]][[GSDPG00312]][[directory-structure]]

===== Directory Structure

Application and module directory structures must follow the structure
outlined in the Jakarta EE specification. During deployment, the
application or module is expanded from the archive file to an open
directory structure. The directories that hold the individual modules
are named with `_jar`, `_rar`, and `_war` suffixes.

If you deploy a directory instead of an EAR file, your directory
structure must follow this same convention. For instructions on
performing directory deployment, see
link:deploying-applications.html#gilcn[To Deploy an Application or Module
in a Directory Format].


[[gkhhv]][[GSDPG00324]][[module-and-application-versions]]

==== Module and Application Versions

Application and module versioning allows multiple versions of the same
application to exist in a GlassFish Server domain, which simplifies
upgrade and rollback tasks. At most one version of an application or
module can be enabled on a server any given time. Versioning provides
extensions to tools for deploying, viewing, and managing multiple
versions of modules and applications, including the Administration
Console and deployment-related `asadmin` subcommands. Different versions
of the same module or application can have the same context root or JNDI
name. Use of versioning is optional.

The following topics are addressed here:

* link:#gkhmg[Version Identifiers and Expressions]
* link:#gkhmm[Choosing the Enabled Version]
* link:#gkhob[Versioning Restrictions and Limitations]

[[gkhmg]][[GSDPG00314]][[version-identifiers-and-expressions]]

===== Version Identifiers and Expressions

The version identifier is a suffix to the module or application name. It
is separated from the name by a colon (`:`). It must begin with a letter
or number. It can contain alphanumeric characters plus underscore (`_`),
dash (`-`), and period (`.`) characters. The following examples show
valid version identifiers for the `foo` application:

[source]
----
foo:1
foo:BETA-2e
foo:3.8
foo:patch39875
----

A module or application without a version identifier is called the
untagged version. This version can coexist with other versions of the
same module or application that have version identifiers.

In some deployment-related `asadmin` commands, you can use an asterisk
(`*`) as a wildcard character to specify a version expression, which
selects multiple version identifiers. Using the asterisk by itself after
the colon selects all versions of a module or application, including the
untagged version. The following table shows example version expressions
and the versions they select.

[width="100%",cols="33%,67%",options="header",]
|===
|Version Expression |Selected Versions
|`foo:*` |All versions of `foo`, including the untagged version
|`foo:BETA*` |All `BETA` versions of `foo`
|`foo:3.*` |All `3.`x versions of `foo`
|`foo:patch*` |All `patch` versions of `foo`
|===


The following table summarizes which `asadmin` subcommands are
identifier-aware or expression-aware. All expression-aware subcommands
are also identifier-aware.

[width="100%",cols="50%,50%",options="header",]
|===
|Identifier-Aware Subcommands |Expression-Aware Subcommands
|`deploy`, `deploydir`, `redeploy` |`undeploy`
|`enable` |`disable`
|`list-sub-components` |`show-component-status`
|`get-client-stubs` |`create-application-ref`, `delete-application-ref`
|===


The `create-application-ref` subcommand is expression-aware only if the
`--enabled` option is set to `false`. Because the `--enabled` option is
set to `true` by default, the `create-application-ref` subcommand is
identifier-aware by default.

The `list-applications` and `list-application-refs` subcommands display
information about all deployed versions of a module or application. To
find out which version is enabled, use the `--long` option.

[[gkhmm]][[GSDPG00315]][[choosing-the-enabled-version]]

===== Choosing the Enabled Version

At most one version of a module or application can be enabled on a
server instance. All other versions are disabled. Enabling one version
automatically disables all others. You can disable all versions of a
module or application, leaving none enabled.

The `--enabled` option of the `deploy` and `redeploy` subcommands is set
to `true` by default. Therefore, simply deploying or redeploying a
module or application with a new version identifier enables the new
version and disables all others. To deploy a new version in a disabled
state, set the `--enabled` option to `false`.

To enable a version that has been deployed previously, use the `enable`
subcommand.

[[gkhob]][[GSDPG00316]][[versioning-restrictions-and-limitations]]

===== Versioning Restrictions and Limitations

Module and application versioning in GlassFish Server is subject to the
following restrictions and limitations:

* Use of the `--name` option is mandatory for modules and applications
that use versioning. There is no automatic version identifier
generation.
* GlassFish Server does not recognize any relationship between versions
such as previous or later versions. All version relationships must be
tracked manually.
* There is no limit to the number of versions you can deploy except what
is imposed by disk space limits.
* A module or application in a directory should not be deployed twice
with a different version identifier. To redeploy a module or application
from a directory with a new version, you must use the `--force` option
of the `deploy` subcommand.
* Database tables created or deleted as part of deployment and
undeployment are global resources and cannot be qualified by an
application version. Be very careful when using global resources among
versions of the same application.
* Web sessions are preserved during redeployment of a new version.
However, preserving sessions among different versions of the same module
or application is complex, because the key used for session variables is
the same for the old and new versions.
* Resources are created with reference to a resource-adapter's module or
application name. This means that an older version's resources do not
automatically refer to a newer version of the module or application.
Therefore, you must explicitly create resources for a newer version of a
module or application. GlassFish Server ignores duplicate exported
global resources and lets deployment succeed.
* OSGi already has its own versioning system. Therefore, when you deploy
an OSGi bundle, GlassFish Server ignores any version information
provided with the name but permits the deployment to succeed with
warnings.

[[giphm]][[GSDPG00062]][[about-assembly-and-deployment-events]]

=== About Assembly and Deployment Events

The deployment tools that are provided by GlassFish Server can be used
by any user authorized as an administrator to deploy applications and
modules into any GlassFish Server environment. However, effective
application deployment requires planning and care. Only the developer
knows exactly what is required by an application, so the developer is
responsible for initial assembly and deployment.

1. Deployment Descriptor or Annotation Creation. The developer creates
the deployment descriptors or equivalent annotations using Java
standards and tools.
+
Details of the GlassFish Server deployment descriptors are contained in
link:dd-files.html#giida[GlassFish Server Deployment Descriptor Files]
and link:dd-elements.html#beaqi[Elements of the GlassFish Server
Deployment Descriptors]. The GlassFish Server sample applications
contain deployment descriptors that can be used as templates for
developing deployment descriptors.
2. Assembly. The developer assembles the archive file(s) using Java
standards and tools, such as the `jar` command. The application or
module is packaged into a JAR, WAR, RAR, or EAR file. For guidelines on
naming, see link:#gihzk[Naming Standards].
+
There are no GlassFish Server issues to consider.
3. Test Deployment. The developer performs a test deployment of the
archive. For instructions, see link:deploying-applications.html#gijmq[To
Deploy an Application or Module].
4. Archive Submission. The developer submits the verified archive to
the administrator for deployment into a production environment. The
developer includes instructions for any additional deployment tasks that
the administrator must perform. For an example of such additional
instructions, see link:#gijla[Access to Shared Framework Classes].
5. Configuration. The administrator applies additional deployment
specifics. Sometimes the developer has indicated additional deployment
needs, such as specifying the production database. In this case, the
administrator edits and reassembles the archive.
6. Production Deployment. The administrator deploys the archive to
production. See link:deploying-applications.html#gijmq[To Deploy an
Application or Module].
7. Troubleshooting. If deployment fails, the administrator returns the
archive to the developer. The developer fixes the problem and resubmits
the archive to the administrator. Sometimes the administrator resolves
the problem, depending on what the problem is.

[[giifh]][[GSDPG00063]][[about-deployment-tools]]

=== About Deployment Tools

GlassFish Server provides tools for assembling and deploying a module or
application.

The following topics are addressed here:

* link:#giijz[Administration Console]
* link:#giijf[The `asadmin` Utility]
* link:#giijq[NetBeans IDE]
* link:#gikwq[Eclipse IDE]
* link:#beaee[JSR 88 Client]

[[giijz]][[GSDPG00325]][[administration-console]]

==== Administration Console

The GlassFish Server Administration Console is a browser-based utility
that features a graphical interface that includes extensive online help
for the administrative tasks. The format for starting the Administration
Console in a web browser is `http://`hostname`:`port. For example:

[source]
----
http://localhost:4848
----

Step-by-step instructions for using the Administration Console for
deployment are provided in the Administration Console online help. You
can display the help material for a page by clicking the Help button.
The initial help page describes the functions and fields of the page
itself. To find instructions for performing associated tasks, click a
link in the See Also list.

[[giijf]][[GSDPG00326]][[the-asadmin-utility]]

==== The `asadmin` Utility

The GlassFish Server `asadmin` utility is a command-line tool that
invokes subcommands for identifying the operation or task that you want
to perform. You can run `asadmin` commands either from a command prompt
or from a script. The format for starting the `asadmin` utility on the
command line is as-install`/bin/asadmin` subcommand --option. For
example:

[source]
----
asadmin list-applications --type web
----

Application deployment commands are listed in
link:asadmin-deployment-subcommands.html#gihzw[The `asadmin` Deployment
Subcommands]. All GlassFish Server `asadmin` subcommands are documented
in the link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference
Manual].

For the most part, you can perform the same administrative tasks by
using either the graphical Administration Console or the `asadmin`
command-line utility, however, there are exceptions. Procedures for
using the command-line utilities are provided in this guide and in the
command-line help pages, which are similar to man pages. You can display
the help material for a command by typing help followed by the
subcommand. For example:

[source]
----
asadmin help list-applications
----

For additional information on the `asadmin` utility, see
"link:../administration-guide/general-administration.html#GSADG00530[Using the `asadmin` Utility]" in GlassFish Server Open
Source Edition Administration Guide and the
link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.

[[giijq]][[GSDPG00329]][[netbeans-ide]]

==== NetBeans IDE

You can use the NetBeans Integrated Development Environment (IDE), or
another IDE, to assemble Jakarta EE applications and modules. The NetBeans
IDE is included in the tools bundle of the Jakarta EE Software Development
Kit (SDK). To download, see
`http://www.oracle.com/technetwork/java/javaee/downloads/index.html`.
For additional information, see `http://www.netbeans.org`.

[[gikwq]][[GSDPG00330]][[eclipse-ide]]

==== Eclipse IDE

In addition to the bundled NetBeans IDE, a plug-in for the Eclipse IDE
extends GlassFish to the Eclipse community.

[[beaee]][[GSDPG00331]][[jsr-88-client]]

==== JSR 88 Client

The syntax of the URI entry for the `getDeploymentManager` method is as
follows:

[source]
----
deployer:Sun:AppServer::admin-host:admin-port[:https]
----

For example:

[source]
----
deployer:Sun:AppServer::localhost:4848:https
----

[[gipud]][[GSDPG00064]][[additional-information-on-application-deployment]]

=== Additional Information on Application Deployment

As specified from Jakarta EE specifications, the relevant specifications
are the following:

* Jakarta EE Platform, Enterprise Edition 10 Specification +
`https://jakarta.ee/specifications/platform/`
* Jakarta EE Application Deployment JSR 88 Specification +
`http://jcp.org/en/jsr/detail?id=88`
* Common Annotations for the Java Platform 1.6 Specification +
`http://jcp.org/en/jsr/detail?id=250`
* Java Servlet 3.0 Specification +
`http://jcp.org/en/jsr/detail?id=315`
* Enterprise JavaBeans 3.1 Specification +
`http://jcp.org/en/jsr/detail?id=318`
* Jakarta EE Connector Architecture 1.6 Specification +
`http://jcp.org/en/jsr/detail?id=322`

The following product documentation might be relevant to some aspects of
application deployment:

* link:../application-development-guide/toc.html#GSDVG[
GlassFish Server Open Source Edition Application Development Guide]
* link:../administration-guide/toc.html#GSADG[
GlassFish Server Open Source Edition Administration Guide]
* link:../add-on-component-development-guide/toc.html#GSACG[
GlassFish Server Open Source Edition Add-On Component Development Guide]
* link:../reference-manual/toc.html#GSRFM[
GlassFish Server Open Source Edition Reference Manual]
* GlassFish Server Administration Console online help

