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,oac_no_warn]
----
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,oac_no_warn]
----
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]


