type=page
status=published
title=stop-domain
next=stop-instance.html
prev=stop-database.html
~~~~~~

= stop-domain

[[stop-domain-1]][[GSRFM00240]][[stop-domain]]

== stop-domain

Stops the Domain Administration Server of the specified domain

[[sthref2165]]

=== Synopsis

[source]
----
asadmin [asadmin-options] stop-domain [--help]
[--domaindir domaindir]
[--force={true|false}] [--kill={false|true}]
[domain-name]
----

[[sthref2166]]

=== Description

The `stop-domain` subcommand stops the Domain Administration Server
(DAS) of the specified domain. If the domain directory is not specified,
the domain in the default domains directory is stopped. If there are two
or more domains in the domains directory, the domain-name operand must
be specified.

This subcommand is supported in local or remote mode. If you specify a
host name, the subcommand assumes you are operating in remote mode,
which means you must correctly authenticate to the remote server. In
local mode, you normally do not need to authenticate to the server as
long as you are running the subcommand as the same user who started the server.

[[sthref2167]]

=== 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.
`--domaindir`::
  Specifies the directory of the domain that is to be stopped. If
  specified, the path must be accessible in the file system. If not
  specified, the domain in the default as-install``/domains`` directory is
  stopped.
`--force`::
  Specifies whether the domain is forcibly stopped immediately. +
  Possible values are as follows:

  `true`;;
    The domain is forcibly stopped immediately (default).
  `false`;;
    The subcommand waits until all threads that are associated with the
    domain are exited before stopping the domain.

`--kill`::
  Specifies whether the domain is killed by using functionality of the
  operating system to terminate the domain process. +
  Possible values are as follows:

  `false`;;
    The domain is not killed. The subcommand uses functionality of the
    Java platform to terminate the domain process (default).
  `true`;;
    The domain is killed. The subcommand uses functionality of the
    operating system to terminate the domain process.

[[sthref2168]]

=== Operands

domain-name::
  The name of the domain you want to stop. Default is the name specified
  during installation, usually `domain1`.

[[sthref2169]]

=== Examples

[[GSRFM766]][[sthref2170]]

==== Example 1   Stopping a Domain

This example stops the domain named `sampleDomain` in the default
domains directory.

[source]
----
asadmin> stop-domain sampleDomain
Waiting for the domain to stop .................
Command stop-domain executed successfully.
----

[[sthref2171]]

=== Exit Status

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

[[sthref2172]]

=== See Also

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

link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
link:list-domains.html#list-domains-1[`list-domains`(1)],
link:restart-domain.html#restart-domain-1[`restart-domain`(1)],
link:start-domain.html#start-domain-1[`start-domain`(1)]


