type=page
status=published
title=Overview of {productName} 7 Application Deployment
next=deploying-applications.html
prev=preface.html
~~~~~~

= Overview of {productName} 7 Application Deployment

[[GSDPG00003]][[gihxo]]


[[overview-of-glassfish-server-open-source-edition-5.0-application-deployment]]
== 1 Overview of {productName} 7 Application Deployment

{productName} 7 provides an environment for
developing and deploying Java applications and web services. {productName} applications include Java Platform, Enterprise Edition (Jakarta EE
platform) standard features as well as features specific to {productName}. This guide explains the tools and processes used for deploying
applications and modules in the {productName} environment. Only
{productName} 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 {productName} assembly
process conforms to the customary Jakarta EE specifications. The only
difference is that when you assemble applications or modules in
{productName}, you can include optional {productName} deployment
descriptors that enhance functionality.

Deployment is the process of installing an application or module on
{productName}, optionally specifying location-specific information,
such as a list of local users that can access the application, or the
name of the local database. {productName} deployment tools expand the
archive file into an open directory structure that is ready for users.
{productName} 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 {productName} 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
{productName} 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, {productName} reads the information in the deployment
descriptor and deploys the application or module as directed.

The following types of deployment descriptors are associated with
{productName}:

* 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`.
* {productName} Descriptors. {productName} provides optional
deployment descriptors for configuring features that are specific to
{productName}. For example, when you assemble an EJB module, you
annotate or create two {productName} 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[{productName} Deployment Descriptor Files]
and link:dd-elements.html#beaqi[Elements of the {productName}
Deployment Descriptors].
+
{productName} also permits the use of alternate top-level {productName} runtime deployment descriptors that reside outside of an
application archive. Alternate {productName} deployment descriptors
override the top-level deployment descriptors packaged in the archive.
For example, for EAR files, an alternate {productName} deployment
descriptor overrides `glassfish-application.xml`. For standalone
modules, an alternate {productName} deployment descriptor overrides
the top-level module descriptor, such as `glassfish-web.xml`. The name
of the {productName} 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 {productName} deployment
descriptors override corresponding settings in the Jakarta EE standard
descriptors and in the {productName} 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. {productName} 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 {productName} 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

{productName} 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 {productName} 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 {productName} 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 {productName} 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 {productName} environment. Lifecycle modules are not Jakarta EE standard modules.
See link:application-development-guide/lifecycle-listeners.html#GSDVG00014[Developing Lifecycle Listeners] in {productName} 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 {productName}
Reference Manual.

For more information about class loaders, see link:application-development-guide/class-loaders.html#GSDVG00003[Class
Loaders] in {productName} 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 {productName} 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 {productName}, 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.

{productName} 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 {productName} 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 {productName} 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.
* {productName} 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. {productName} ignores duplicate exported
global resources and lets deployment succeed.
* OSGi already has its own versioning system. Therefore, when you deploy
an OSGi bundle, {productName} 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 {productName} can be used
by any user authorized as an administrator to deploy applications and
modules into any {productName} 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 {productName} deployment descriptors are contained in
link:dd-files.html#giida[{productName} Deployment Descriptor Files]
and link:dd-elements.html#beaqi[Elements of the {productName}
Deployment Descriptors]. The {productName} 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 {productName} 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

{productName} 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 {productName} 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 {productName} `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 {productName} `asadmin` subcommands are documented
in the link:reference-manual.html#GSRFM[{productName} 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 {productName} 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.html#GSDVG[
{productName} Application Development Guide]
* link:administration-guide.html#GSADG[
{productName} Administration Guide]
* link:add-on-component-development-guide.html#GSACG[
{productName} Add-On Component Development Guide]
* link:reference-manual.html#GSRFM[
{productName} Reference Manual]
* {productName} Administration Console online help

