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

[[start-instance-1]][[GSRFM00236]][[start-instance]]

start-instance
--------------

starts a \{product---name} instance

[[sthref2133]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] start-instance [--help] 
[--debug={false|true}] [--sync={normal|full|none}] 
instance-name
----

[[sthref2134]]

Description

The `start-instance` subcommand starts a \{product---name} instance.
This subcommand requires the Distributed Component Object Model (DCOM)
remote protocol or secure shell (SSH) to be configured on the machine
where the domain administration server (DAS) is running and on the
machine where the instance resides.


[NOTE]
=======================================================================

DCOM or SSH is not required if the instance resides on a node of type
`CONFIG` that represents the local host. A node of type `CONFIG` is not
enabled for remote communication over DCOM or SSH.

=======================================================================


You may run this subcommand from any machine that can contact the DAS.

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

This command is supported in remote mode only.

[[sthref2135]]

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 instance is started 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 started with JPDA debugging enabled and the port
    number for JPDA debugging is displayed.
  `false`;;
    The instance is started with JPDA debugging disabled (default).
`--sync`::
  The type of synchronization between the DAS and the instance's files
  when the instance is started. +
  Possible values are as follows: +
  `none`;;
    The DAS does not synchronize the instance's files with any changes.
    This type of synchronization minimizes the time that is required to
    start the instance.
  `normal`;;
    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. +
    This value is the default.
  `full`;;
    The DAS synchronizes the instance with all of the instance's files,
    regardless of whether the files have changed since the last
    synchronization. This type of synchronization might delay the
    startup of the instance while the DAS updates all files in the
    instance's directories.

[[sthref2136]]

Operands

instance-name::
  The name of the \{product---name} instance to start.

[[sthref2137]]

Examples

[[GSRFM761]][[sthref2138]]

Example 1   Starting a \{product---name} Instance

This example starts the \{product---name} instance `pmdsa1`.

[source,oac_no_warn]
----
asadmin> start-instance pmdsa1
Waiting for the server to start ..............................
Successfully started the instance: pmdsa1
instance Location: /export/glassfish3/glassfish/nodes/localhost/pmdsa1
Log File: /export/glassfish3/glassfish/nodes/localhost/pmdsa1/logs/server.log
Admin Port: 24848
Command start-local-instance executed successfully.
The instance, pmdsa1, was started on host localhost

Command start-instance executed successfully.
----

[[GSRFM762]][[sthref2139]]

Example 2   Starting a \{product---name} Instance With JPDA Debugging
Enabled

This example starts the \{product---name} instance `ymlsa1` with JPDA
debugging enabled.

[source,oac_no_warn]
----
asadmin> start-instance --debug=true ymlsa1
Waiting for the server to start ...............................
Successfully started the instance: ymlsa1
instance Location: /export/glassfish3/glassfish/nodes/localhost/ymlsa1
Log File: /export/glassfish3/glassfish/nodes/localhost/ymlsa1/logs/server.log
Admin Port: 24849
Debugging is enabled. The debugging port is: 29010
Command start-local-instance executed successfully.
The instance, ymlsa1, was started on host localhost

Command start-instance executed successfully.
----

[[sthref2140]]

Exit Status

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

[[sthref2141]]

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:setup-ssh.html#setup-ssh-1[`setup-ssh`(1)],
link:start-domain.html#start-domain-1[`start-domain`(1)],
link:start-local-instance.html#start-local-instance-1[`start-local-instance`(1)],
link:stop-domain.html#stop-domain-1[`stop-domain`(1)],
link:stop-instance.html#stop-instance-1[`stop-instance`(1)],
link:stop-local-instance.html#stop-local-instance-1[`stop-local-instance`(1)],
link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)]

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


