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


