type=page
status=published
title=disable
next=disable-http-lb-application.html
prev=deploydir.html
~~~~~~

disable
=======

[[disable-1]][[GSRFM00116]][[disable]]

disable
-------

Disables the component

[[sthref1039]]

=== Synopsis

[source]
----
asadmin [asadmin-options] disable [--help]
[--target target_name] component_name
----

[[sthref1040]]

=== Description

The `disable` subcommand immediately disables the specified deployed
component. If the component has not been deployed, an error message is
returned.

This subcommand is supported in remote mode only.

[[sthref1041]]

=== 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.
`--target`::
  This option specifies the target on which you are disabling the
  component. Valid values are:

  `server`;;
    Disables the component on the default server instance `server` and
    is the default value.
  domain_name;;
    Disables the component on the named domain.
  cluster_name;;
    Disables the component on every server instance in the cluster.
  instance_name;;
    Disables the component on a particular clustered or stand-alone
    server instance.

[[sthref1042]]

=== Operands

component_name::
  name of the component to be disabled. +
  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 disable 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.

[[sthref1043]]

=== Examples

[[GSRFM590]][[sthref1044]]

==== Example 1   Disabling a Component

This example disables the deployed component `sampleApp`.

[source]
----
asadmin> disable sampleApp
Command disable executed successfully
----

[[sthref1045]]

=== Exit Status

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

[[sthref1046]]

=== See Also

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

link:deploy.html#deploy-1[`deploy`(1)],
link:enable.html#enable-1[`enable`(1)],
link:undeploy.html#undeploy-1[`undeploy`(1)]

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


