type=page
status=published
title=list-applications
next=list-audit-modules.html
prev=list-application-refs.html
~~~~~~

list-applications
=================

[[list-applications-1]][[GSRFM00148]][[list-applications]]

list-applications
-----------------

Lists deployed applications

[[sthref1308]]

=== Synopsis

[source]
----
asadmin [asadmin-options] list-applications [--help]
[--long={false|true}] [--resources] [--subcomponents]
[--type type] [target]
----

[[sthref1309]]

=== Description

The `list-applications` subcommand lists deployed Java EE applications
and the type of each application that is listed.

If the `--type` option is not specified, all applications are listed. If
the type option is specified, you must specify a type. The possible
types are listed in the Options section of this help page.

If multiple versions of a module or application are deployed, this
subcommand lists all versions. To list which version is enabled, set the
`--long` option to `true`. For more information about module and
application versions, see "link:../application-deployment-guide/overview.html#GSDPG00324[Module and Application
Versions]" in GlassFish Server Open Source Edition Application
Deployment Guide.

This subcommand is supported in remote mode only.

[[sthref1310]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--long`::
  If `true`, displays whether each module or application listed is
  enabled. The default is `false`.
`--resources`::
  Lists the application-scoped resources for each application. If the
  `--subcomponents` option is also used, lists the application-scoped
  resources for each component within the application.
`--subcomponents`::
  Lists the subcomponents of each application. The subcomponents listed
  depend on the application type. For example, for a Java EE application
  (EAR file), modules are listed. For a web application, servlets and
  JSP pages are listed. For an EJB module, EJB subcomponents are listed.
`--type`::
  Specifies the type of the applications that are to be listed. The
  options are as follows:

  * `application`
  * `appclient`
  * `connector`
  * `ejb`
  * `web`
  * `webservice`

+
If no type is specified, all applications are listed.

[[sthref1311]]

=== Operands

`--target`::
  This is the name of the target upon which the subcommand operates. The
  valid values are as follows:
+
  `server`;;
    Lists the applications for the default server instance `server` and
    is the default value.
  `domain`;;
    Lists the applications for the domain.
  cluster_name;;
    Lists the applications for the cluster.
  instance_name;;
    Lists the applications for a particular stand-alone server instance.

[[sthref1312]]

=== Examples

[[GSRFM636]][[sthref1313]]

==== Example 1   Listing the Web Applications

[source]
----
asadmin> list-applications --type web
hellojsp <web>
Command list-applications executed successfully
----

[[sthref1314]]

=== Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref1315]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:list-components.html#list-components-1[`list-components`(1)],
link:list-sub-components.html#list-sub-components-1[`list-sub-components`(1)],
link:show-component-status.html#show-component-status-1[`show-component-status`(1)]

link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source Edition Application Deployment
Guide]


