type=page
status=published
title=restart-domain
next=restart-instance.html
prev=remove-library.html
~~~~~~

restart-domain
==============

[[restart-domain-1]][[GSRFM00218]][[restart-domain]]

restart-domain
--------------

Restarts the DAS of the specified domain

[[sthref1978]]

=== Synopsis

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

[[sthref1979]]

=== Description

The `restart-domain` subcommand stops and then restarts the domain
administration server (DAS) of the specified domain. If a domain is not
specified, the default domain is assumed. If the domains directory
contains two or more domains, the domain-name operand must be specified.
If the DAS is not already running, the subcommand attempts to start it.

The `restart-domain` subcommand does not exit until the subcommand has
verified that the domain has been stopped and restarted.

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.

[[sthref1980]]

=== 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.
`--debug`::
  Specifies whether the domain is restarted with
  http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
  Platform Debugger Architecture (JPDA)]
  (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
  debugging enabled.
  Possible values are as follows:

  `true`;;
    The domain is restarted with JPDA debugging enabled and the port
    number for JPDA debugging is displayed.
  `false`;;
    The domain is restarted with JPDA debugging disabled (default).

+
The default is the current setting of this option for the domain that
  is being restarted.
`--domaindir`::
  The domain root directory, which contains the directory of the domain
  that is to be restarted. If specified, the path must be accessible in
  the file system. The default location of the domain root directory is
  as-install`/domains`.
`--force`::
  Specifies whether the domain is forcibly stopped immediately before it
  is restarted. 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 before it is restarted 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.

[[sthref1981]]

=== Operands

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

[[sthref1982]]

=== Examples

[[GSRFM738]][[sthref1983]]

==== Example 1   Restarting a Domain

This example restarts `mydomain4` in the default domains directory.

[source]
----
asadmin> restart-domain mydomain4
Successfully restarted the domain
Command restart-domain executed successfully.
----

[[sthref1984]]

=== Exit Status

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

[[sthref1985]]

=== 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:start-domain.html#start-domain-1[`start-domain`(1)],
link:stop-domain.html#stop-domain-1[`stop-domain`(1)]

Java Platform Debugger Architecture (JPDA)
(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)


