type=page
status=published
title=restart-local-instance
next=restore-domain.html
prev=restart-instance.html
~~~~~~
restart-local-instance
======================

[[restart-local-instance-1]][[GSRFM00220]][[restart-local-instance]]

restart-local-instance
----------------------

restarts a running \{product---name} instance on the host where the
subcommand is run

[[sthref1994]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] restart-local-instance [--help]
[--nodedir nodedir] [--node node]
[--debug={false|true}]
[--force={true|false}] [--kill={false|true}] 
[instance-name]
----

[[sthref1995]]

Description

The `restart-local-instance` subcommand restarts a \{product---name}
instance on the host where the subcommand is run. This subcommand does
not require secure shell (SSH) to be configured. You must run this
command from the host where the instance resides.

The subcommand can restart any \{product---name} instance, regardless of
how the instance was created. For example, this subcommand can restart
an instance that was created by using the
link:create-instance.html#create-instance-1[`create-instance`(1)]
subcommand.

The `restart-local-instance` subcommand does not contact the domain
administration server (DAS) to determine the node on which the instance
resides. To determine the node on which the instance resides, the
subcommand searches the directory that contains the node directories. If
multiple node directories exist, the node must be specified as an option
of the subcommand.

When this subcommand restarts an instance, the DAS synchronizes the
instance with changes since the last synchronization as follows:

* For the `config` directory, the DAS synchronizes the instance with all
changes.
* For the `applications` directory and `docroot` directory, only a
change to a top-level subdirectory causes the DAS to synchronize all
files under that subdirectory. +
If a file below a top level subdirectory is changed without a change to
a file in the top level subdirectory, full synchronization is required.
In normal operation, files below the top level subdirectories of these
directories are not changed. If an application is deployed and
undeployed, full synchronization is not necessary to update the instance
with the change.

If different synchronization behavior is required, the instance must be
stopped and restarted by using following sequence of subcommands:

1.  link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]
2.  link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)]

This subcommand is supported in local mode. However, to synchronize the
instance with the DAS, this subcommand must be run in remote mode.

[[sthref1996]]

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.
`--nodedir`::
  Specifies the directory that contains the instance's node directory.
  The instance's files are stored in the instance's node directory. The
  default is as-install`/nodes`.
`--node`::
  Specifies the node on which the instance resides. This option may be
  omitted only if the directory that the `--nodedir` option specifies
  contains only one node directory. Otherwise, this option is required.
`--debug`::
  Specifies whether the instance 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 instance is restarted with JPDA debugging enabled and the port
    number for JPDA debugging is displayed.
  `false`;;
    The instance is restarted with JPDA debugging disabled (default). +
  The default is the current setting of this option for the instance
  that is being restarted.
`--force`::
  Specifies whether the instance is forcibly stopped immediately before
  it is restarted. +
  Possible values are as follows: +
  `true`;;
    The instance is forcibly stopped immediately (default).
  `false`;;
    The subcommand waits until all threads that are associated with the
    instance are exited before stopping the instance.
`--kill`::
  Specifies whether the instance is killed before it is restarted by
  using functionality of the operating system to terminate the instance
  process. +
  Possible values are as follows: +
  `false`;;
    The instance is not killed. The subcommand uses functionality of the
    Java platform to terminate the instance process (default).
  `true`;;
    The instance is killed. The subcommand uses functionality of the
    operating system to terminate the instance process.

[[sthref1997]]

Operands

instance-name::
  The name of the \{product---name} instance to restart. If the instance
  is not running, the subcommand displays a warning message and attempts
  to start the instance.

[[sthref1998]]

Examples

[[GSRFM740]][[sthref1999]]

Example 1   Restarting an Instance Locally

This example restarts the instance `ymlsa1` in the domain `domain1` on
the host where the subcommand is run.

[source,oac_no_warn]
----
asadmin> restart-local-instance --node localhost-domain1 ymlsa1
Command restart-local-instance executed successfully.
----

[[sthref2000]]

Exit Status

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

[[sthref2001]]

See Also

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

link:create-instance.html#create-instance-1[`create-instance`(1)],
link:create-local-instance.html#create-local-instance-1[`create-local-instance`(1)],
link:delete-instance.html#delete-instance-1[`delete-instance`(1)],
link:delete-local-instance.html#delete-local-instance-1[`delete-local-instance`(1)],
link:restart-instance.html#restart-instance-1[`restart-instance`(1)],
link:start-instance.html#start-instance-1[`start-instance`(1)],
link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)]

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


