type=page
status=published
title=undeploy
next=unfreeze-transaction-service.html
prev=stop-local-instance.html
~~~~~~
undeploy
========

[[undeploy-1]][[GSRFM00244]][[undeploy]]

undeploy
--------

removes a deployed component

[[sthref2189]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] undeploy [--help] 
[--target target] [--droptables={true|false}] 
[--cascade={false|true}] name
----

[[sthref2190]]

Description

The `undeploy` subcommand uninstalls a deployed application or module
and removes it from the repository.

This subcommand is supported in remote mode only.

[[sthref2191]]

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.
`--cascade`::
  If set to `true`, deletes all the connection pools and connector
  resources associated with the resource adapter being undeployed. If
  set to `false`, the undeploy fails if any pools and resources are
  still associated with the resource adapter. Then, either those pools
  and resources must be deleted explicitly, or the option must be set to
  `true`. If the option is set to `false`, and if there are no pools and
  resources still associated with the resource adapter, the resource
  adapter is undeployed. This option is applicable to connectors
  (resource adapters) and applications. Default value is false.
`--droptables`::
  If set to true, drops the tables that the application created by using
  CMP beans during deployment. If set to false, tables are not dropped.
  If not specified, the value of the `drop-tables-at-deploy` entry in
  the `cmp-resource` element of the `glassfish-ejb-jar.xml` file
  determines whether or not tables are dropped. Default value is true.
`--target`::
  Specifies the target from which you are undeploying. Valid values are: +
  `server`;;
    Undeploys the component from the default server instance `server`
    and is the default value.
  `domain`;;
    Undeploys the component from the domain.
  cluster_name;;
    Undeploys the component from every server instance in the cluster.
  instance_name;;
    Undeploys the component from a particular stand-alone server
    instance.

[[sthref2192]]

Operands

name::
  Name of the deployed component. +
  The name can include an optional version identifier, which follows the
  name and is separated from the name by a colon (`:`). The version
  identifier must begin with a letter or number. It can contain
  alphanumeric characters plus underscore (`_`), dash (`-`), and period
  (`.`) characters. To delete multiple versions, you can use an asterisk
  (`*`) as a wildcard character. 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.

[[sthref2193]]

Examples

[[GSRFM769]][[sthref2194]]

Example 1   Undeploying an Enterprise Application

This example undeploys an enterprise application named `Cart.ear`.

[source,oac_no_warn]
----
asadmin> undeploy Cart
Command undeploy executed successfully.
----

[[GSRFM770]][[sthref2195]]

Example 2   Undeploying an Enterprise Bean With Container-Managed
Persistence (CMP)

This example undeploys a CMP bean named `myejb` and drops the
corresponding database tables.

[source,oac_no_warn]
----
asadmin> undeploy --droptables=true myejb
Command undeploy executed successfully.
----

[[GSRFM771]][[sthref2196]]

Example 3   Undeploying a Connector (Resource Adapter)

This example undeploys the connector module named `jdbcra` and performs
a cascading delete to remove the associated resources and connection
pools.

[source,oac_no_warn]
----
asadmin> undeploy --cascade=true jdbcra
Command undeploy executed successfully.
----

[[sthref2197]]

Exit Status

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

[[sthref2198]]

See Also

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

link:deploy.html#deploy-1[`deploy`(1)],
link:list-components.html#list-components-1[`list-components`(1)],
link:redeploy.html#redeploy-1[`redeploy`(1)]

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


