type=page
status=published
title=Administering Domains
next=jvm.html
prev=general-administration.html
~~~~~~

= Administering Domains

[[GSADG00006]][[ggnop]]


[[administering-domains]]
== 3 Administering Domains

This chapter provides procedures for administering domains in the
GlassFish Server Open Source Edition environment by using the `asadmin`
command-line utility.

The following topics are addressed here:

* link:#ggoek[About Administering Domains]
* link:#gitvz[Creating, Logging In To, and Deleting a Domain]
* link:#gitwj[Starting and Stopping a Domain]
* link:#gglqp[Configuring a DAS or a GlassFish Server Instance for Automatic Restart]
* link:#gityo[Backing Up and Restoring a Domain]
* link:#gglri[Re-Creating the Domain Administration Server (DAS)]
* link:#gitvn[Additional Domain Tasks]

Instructions for accomplishing the tasks in this chapter by using the
Administration Console are contained in the Administration Console
online help.

[[ggoek]][[GSADG00535]][[about-administering-domains]]

=== About Administering Domains

A domain contains a group of GlassFish Server instances that are
administered together. Each domain has a domain administration server
(DAS) that hosts administrative applications. These concepts are
explained in more detail in the following sections:

* link:#geolm[GlassFish Server Instances]
* link:#geojp[Domains for Administering GlassFish Server]
* link:#geojl[Domain Administration Server (DAS)]

[[geolm]][[GSADG00715]][[glassfish-server-instances]]

==== GlassFish Server Instances

A GlassFish Server instance is a single Virtual Machine for the Java
platform (Java Virtual Machine or JVM machine) on a single node in which
GlassFish Server is running. A node defines the host where the GlassFish
Server instance resides. The JVM machine must be compatible with the
Java Platform, Enterprise Edition (Jakarta EE).

GlassFish Server instances form the basis of an application deployment.

Whenever a domain is created, GlassFish Server creates a default
instance that is named `server`. If a single instance meets your
requirements, you can use this instance for deploying applications
without the need to administer GlassFish Server instances explicitly.
You administer the default instance when you administer its domain.

If you require multiple instances, you must administer the instances
explicitly. For more information, see "link:../ha-administration-guide/instances.html#GSHAG00006[Administering
GlassFish Server Instances]" in GlassFish Server Open Source Edition
High Availability Administration Guide.

For an instance, you can also create virtual servers. Virtual servers do
not span instances. For many purposes, you can use virtual servers
instead of multiple instances in operational deployments. Virtual
servers enable you to offer, within a single instance, separate domain
names, IP addresses, and some administration capabilities to
organizations or individuals. To these users, a virtual server behaves
like a dedicated web server, but without the hardware and basic web
server maintenance.

For more information about virtual servers, see
link:http_https.html#ggncs[Administering Virtual Servers].

[[geojp]][[GSADG00716]][[domains-for-administering-glassfish-server]]

==== Domains for Administering GlassFish Server

A domain is an administrative boundary that contains a group of
GlassFish Server instances that are administered together. Each instance
can belong to only one domain. A domain provides a preconfigured runtime
for user applications. Each domain has its own configuration data, log
files, and application deployment areas that are independent of other
domains. If the configuration is changed for one domain, the
configurations of other domains are not affected.

Domains enable different organizations and administrators to share
securely a single GlassFish Server installation. Each organization or
administrator can administer the instances in a single domain without
affecting the instances in other domains.

At installation time, GlassFish Server creates a default domain that is
named `domain1`. After installation, you can create additional domains
as necessary.

When a domain is created, you are prompted for the administration user
name and password. If you accept the default, the user `admin` is
created without password. To reset the administration password, see
"link:../security-guide/system-security.html#GSSCG00095[To Change an Administration Password]" in GlassFish
Server Open Source Edition Security Guide.

[[geojl]][[GSADG00717]][[domain-administration-server-das]]

==== Domain Administration Server (DAS)

The domain administration server (DAS) is a specially designated
GlassFish Server instance that hosts administrative applications. The
DAS is similar to any other GlassFish Server instance, except that the
DAS has additional administration capabilities. The DAS authenticates
the administrator, accepts requests from administration tools, and
communicates with other instances in the domain to carry out the
requests from administration tools.

Each domain has its own DAS with a unique administration port number.
The default administration port is 4848, but a different port can be
specified when a domain is created.

The DAS has the master copy of the configuration data for all instances
in a domain. If an instance is destroyed, for example, because a host
failed, the instance can be re-created from the data in the DAS.

The DAS is the default GlassFish Server instance in a domain and is
named `server`. If a single instance meets your requirements, you can
use the DAS for deploying applications and for administering the domain.

The graphical Administration Console communicates with a specific DAS to
administer the domain that is associated with the DAS. Each
Administration Console session enables you to configure and manage only
one domain. If you create multiple domains, you must start a separate
Administration Console session to manage each domain.

[[gitvz]][[GSADG00536]][[creating-logging-in-to-and-deleting-a-domain]]

=== Creating, Logging In To, and Deleting a Domain

The following topics are addressed here:

* link:#ggoei[To Create a Domain]
* link:#gldel[To Create a Domain From a Custom Template]
* link:#ggoco[To List Domains]
* link:#ghhjz[To Log In to a Domain]
* link:#ggofa[To Delete a Domain]

[[ggoei]][[GSADG00330]][[to-create-a-domain]]

==== To Create a Domain

After installing GlassFish Server and creating the default domain
(`domain1`), you can create additional domains by using the local
`create-domain` subcommand. This subcommand creates the configuration of
a domain. Any user who has access to the `asadmin` utility on a given
system can create a domain and store the domain configuration in a
folder of choice. By default, the domain configuration is created in the
default directory for domains. You can override this location to store
the configuration elsewhere.

You are required to specify an administrative user when you create a
domain, or you can accept the default login identity which is username
`admin` with no password.

1. Select a name for the domain that you are creating.
You can verify that a name is not already in use by using the
link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand
2. Create a domain by using the link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand.
Information about the options for this subcommand is included in this help page.
3. Type an admin user name and password for the domain.
To avoid setting up an admin login, you can accept the default `admin`,
with no password. Pressing Return also selects the default.

[[GSADG00126]][[ggoeu]]
Example 3-1 Creating a Domain

This example creates a domain named `domain1` . When you type the
command, you might be prompted for login information.

[source]
----
asadmin> create-domain --adminport 4848 domain1
Enter admin user name[Enter to accept default]>
Using port 4848 for Admin.
Default port 8080 for HTTP Instance is in use. Using 1161
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8081 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Default port 8686 for JMX_ADMIN is in use. Using 1162
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=moonbeam.gateway.2wire.net,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST
California,C=US]
Domain domain1 created.
Command create-domain executed successfully.
----

To start the Administration Console in a browser, enter the URL in the
following format:

[source]
----
http://hostname:5000
----

For this example, the domain's log files, configuration files, and
deployed applications now reside in the following directory:

domain-root-dir`/mydomain`

[[GSADG819]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help create-domain` at the command line.

[[gldel]][[GSADG00331]][[to-create-a-domain-from-a-custom-template]]

==== To Create a Domain From a Custom Template

A custom template enables you to customize the configuration of any
domain that you create from the template.

1. Create a domain to use as the basis for the template.
For more information, see link:#ggoei[To Create a Domain].

2. Use the `asadmin` utility or the Administration Console to configure the domain.
Your configuration changes will be included in the template that you create from the domain.

3. Copy the domain's `domain.xml` file under a new name to the
as-install``/lib/templates`` directory.
A domain's `domain.xml` file is located in the domain-dir``/config`` directory.

4. In a plain text editor, edit the file that you copied to replace
with tokens values that are to be substituted when a domain is created.
Each token is identified as `%%%token-name%%%`, where `token-name` is
one of the following names:::
`ADMIN_PORT`::
  Represents the port number of the HTTP port or the HTTPS port for
  administration. This token is replaced with one of the following
  values in the command to create a domain from the template:
  * The value of the `--adminport` option
  * The value of the `domain.adminPort` property
`CONFIG_MODEL_NAME`::
  Represents the name of the configuration that is created for the
  domain that is being created. This token is replaced with the string
  `server-config`.
`DOMAIN_NAME`::
  Represents the name of the domain that is being created. This token is
  replaced with the operand of `create-domain` subcommand.
`HOST_NAME`::
  Represents the name of the host on which the domain is being created.
  This token is replaced with the fully qualified host name of the host
  where the domain is being created.
`HTTP_PORT`::
  Represents the port number of the port that is used to listen for HTTP
  requests. This token is replaced with one of the following values in
  the command to create a domain from the template:
  * The value of the `--instanceport` option
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `domain.instancePort` property
`HTTP_SSL_PORT`::
  Represents the port number of the port that is used to listen for
  secure HTTP requests. This token is replaced with one of the following
  values in the command to create a domain from the template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `http.ssl.port` property
`JAVA_DEBUGGER_PORT`::
  Represents the port number of the port that is used for connections to the
  http://docs.oracle.com/javase/8/docs/technotes/guides/jpda/architecture.html[Java
  Platform Debugger Architecture (JPDA)] debugger.
  This token is replaced with one of the following values in the command to create
  a domain from the template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `java.debugger.port` property
`JMS_PROVIDER_PORT`::
  Represents the port number for the Java Message Service provider.
  This token is replaced with one of the following values in the command to
  create a domain from the template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `jms.port` property
`JMX_SYSTEM_CONNECTOR_PORT`::
  Represents the port number on which the JMX connector listens.
  This token is replaced with one of the following values in the command to
  create a domain from the template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `domain.jmxPort` property
`ORB_LISTENER_PORT`::
  Represents the port number of the port that is used for IIOP
  connections. This token is replaced with one of the following values
  in the command to create a domain from the template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `orb.listener.port` property
`ORB_MUTUALAUTH_PORT`::
  Represents the port number of the port that is used for secure IIOP
  connections with client authentication. This token is replaced with
  one of the following values in the command to create a domain from the
  template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `orb.mutualauth.port` property
`ORB_SSL_PORT`::
  Represents the port number of the port that is used for secure IIOP
  connections. This token is replaced with one of the following values
  in the command to create a domain from the template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `orb.ssl.port` property
`OSGI_SHELL_TELNET_PORT`::
  Represents the port number of the port that is used for connections to the
  http://felix.apache.org/documentation/subprojects/apache-felix-remote-shell.html[Apache
  Felix Remote Shell]. This shell uses the Felix shell service to
  interact with the OSGi module management subsystem. This token is
  replaced with one of the following values in the command to create
  a domain from the template:
  * A value that the `create-domain` subcommand calculates from the
  value of the `--portbase` option
  * The value of the `osgi.shell.telnet.port` property
`SERVER_ID`::
  Represents the name of the DAS for the domain that is being created.
  This token is replaced with the string `server`.
+
[TIP]
====
For information about how these tokens are used in the default template,
examine the as-install`/lib/templates/domain.xml` file.
====

5. Create the domain that you want to be based on a custom template.
In the command to create the domain, pass the name of file that you
edited in the previous step as the `--template` option of the
link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand.

6. Before starting the domain, verify that the domain's `domain.xml` file is valid.
Use the link:../reference-manual/verify-domain-xml.html#GSRFM00260[`verify-domain-xml`]
subcommand for this purpose.
Information about the options for this subcommand is included in the subcommand's help page.

[[GSADG820]]

See Also

* link:#ggoei[To Create a Domain]
* link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
* link:../reference-manual/verify-domain-xml.html#GSRFM00260[`verify-domain-xml`(1)]

You can also view the full syntax and options of the subcommands by
typing the following commands at the command line.

* `asadmin help create-domain`
* `asadmin help verify-domain-xml`

[[ggoco]][[GSADG00332]][[to-list-domains]]

==== To List Domains

Use the `list-domains` subcommand to display a list of domains and their statuses.
If the domain directory is not specified, the contents of the
domain-root-dir, the default for which is as-install`/domains`, is listed.
If there is more than one domain, the domain name must be specified.

To list domains that were created in other directories, specify the `--domaindir` option.

List domains by using the link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand.

[[GSADG00127]][[ggpfv]]
Example 3-2 Listing Domains

This example lists the domains in the default domain root directory:

[source]
----
asadmin> list-domains
Name: domain1 Status: Running
Name: domain4 Status: Not Running
Name: domain6 Status: Not Running
Command list-domains executed successfully.
----

[[GSADG821]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-domain` at the command line.

[[ghhjz]][[GSADG00333]][[to-log-in-to-a-domain]]

==== To Log In to a Domain

All remote subcommands require that credentials be specified in terms of
an administration user name and its password. By default, the domain is
created with an identity that allows an `asadmin` user to perform
administrative operations when no identity is explicitly or implicitly
specified.

The default identity is in the form of a user whose name is `admin` and
has no password. If you specify no user name on the command line or on
prompt, and specify no password in the `--passwordfile` option or on
prompt, and you have never logged in to a domain using either the
`login` subcommand or the `create-domain` subcommand with the
`--savelogin` option, then the `asadmin` utility will attempt to perform
a given administrative operation without specifying any identity.

A server (domain) allows administrative operations to be run using this
default identity if the following conditions are true:

* The server (domain) uses file realm for authentication of administrative users.
If this condition is not true, you will need to specify the user name
and password.
* The file realm has one and only one user (what the user name is does not matter).
If this condition is not true, you will also need to specify the user name.
* That one user has no password.
If this condition is not true, you will need to specify the password.

By default, all of these conditions are true, unless you have created
the domain with a specific user name and password. Thus, by default, the
only administrative user is `admin` with no password.

Use the `login` subcommand in local mode to authenticate yourself (log
in to) a specific domain. After such login, you do not need to specify
the administration user or password for subsequent operations on the
domain. The `login` subcommand can only be used to specify the
administration password. For other passwords that remote subcommands
require, use the `--passwordfile` option, or specify the password at the
command prompt. You are always prompted for the administration user name
and password.

There is no logout subcommand. If you want to log in to another domain,
invoke `asadmin login` with new values for `--host` and `--port`.

1. Determine the name of the domain that you are logging in to.
To list the existing domains:
+
[source]
----
asadmin list-domains
----
2. Log in to the domain by using the olink:GSRFM00210[`login`] command.

[[GSADG00128]][[ghlfx]]
Example 3-3 Logging In To a Domain on a Remote Machine

This example logs into a domain located on another machine. Options are
specified before the `login` subcommand.

[source]
----
asadmin> --host foo --port 8282 login
Please enter the admin user name>admin Please enter the admin password>
Trying to authenticate for administration of server at host [foo] and port [8282] ...
Login information relevant to admin user name [admin]
for host [foo] and admin port [8282] stored at [/.asadminpass] successfully.
Make sure that this file remains protected. Information stored in this
file will be used by asadmin commands to manage associated domain.
----

[[GSADG00129]][[ghldv]]
Example 3-4 Logging In to a Domain on the Default Port of Localhost

This example logs into a domain on `myhost` on the default port. Options
are specified before the login subcommand.

[source]
----
asadmin> --host myhost login
Please enter the admin user name>admin
Please enter the admin password>
Trying to authenticate for administration of server at host [myhost] and port [4848] ...
An entry for login exists for host [myhost] and port [4848], probably from
an earlier login operation.
Do you want to overwrite this entry (y/n)?y
Login information relevant to admin user name [admin] for host [myhost]
and admin port [4848] stored at [/home/joe/.asadminpass] successfully.
Make sure that this file remains protected. Information stored in this file will be used by
asadmin commands to manage associated domain.
----

[[GSADG822]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help login` at the command line. For additional
information about passwords, see "link:../security-guide/system-security.html#GSSCG00144[Administering
Passwords]" in GlassFish Server Open Source Edition Security Guide.

[[ggofa]][[GSADG00334]][[to-delete-a-domain]]

==== To Delete a Domain

Use the `delete-domain` subcommand to delete an existing domain from a
server. Only the root user or the operating system user who is
authorized to administer the domain can run this subcommand.

[[GSADG823]]

Before You Begin

A domain must be stopped before it can be deleted.

1. List domains by using the link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand.
2. If necessary, notify domain users that the domain is being deleted.
3. Ensure that the domain you want to delete is stopped. If needed, see link:#ggoch[To Stop a Domain].
4. Delete the domain by using the link:../reference-manual/delete-domain.html#GSRFM00075[`delete-domain`] subcommand.

[[GSADG00130]][[ggoiy]]
Example 3-5 Deleting a Domain

This example deletes a domain named `domain1` from the location
specified.

[source]
----
asadmin> delete-domain --domaindir ..\domains domain1
Domain domain1 deleted.
Command delete-domain executed successfully.
----

[[GSADG824]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help delete-domain` at the command line.

[[gitwj]][[GSADG00537]][[starting-and-stopping-a-domain]]

=== Starting and Stopping a Domain

The following topics are addressed here:

* link:#ggoda[To Start a Domain]
* link:#ggoch[To Stop a Domain]
* link:#ginqj[To Restart a Domain]

[[ggoda]][[GSADG00335]][[to-start-a-domain]]

==== To Start a Domain

When you start a domain or server, the domain administration server
(DAS) is started. After startup, the DAS runs constantly, listening for
and accepting requests.

If the domain directory is not specified, the domain in the default
domain root directory is started. If there are two or more domains, the
`domain_name` operand must be specified. Each domain must be started
separately.


[NOTE]
====
For Microsoft Windows, you can use an alternate method to start a
domain. From the Windows Start menu, select the command for your
distribution of GlassFish Server:

* If you are using the Full Platform, select Programs > Oracle GlassFish
Server > Start Admin Server.
* If you are using the Web Profile, select Programs > Oracle GlassFish
Server Web Profile > Start Admin Server.
====


This subcommand is supported in local mode only.

Start a domain by using the link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.

[[GSADG00131]][[ggocw]]
Example 3-6 Starting a Domain

This example starts `domain2` in the default domain directory.

[source]
----
asadmin> start-domain domain2
----

If there is only one domain, you can omit the domain name. If you do not
include the password, you might be prompted to supply it.

[source]
----
Name of the domain started: [domain1] and its location:
[C:\prelude\v3_prelude_release\distributions\web\target\glassfish
domains\domain1].
Admin port for the domain: [4848].
----

[[GSADG825]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help start-domain` at the command line.

[[ggoch]][[GSADG00336]][[to-stop-a-domain]]

==== To Stop a Domain

Stopping a domain or server shuts down its domain administration server
(DAS). When stopping a domain, the DAS stops accepting new connections
and then waits for all outstanding connections to complete. This
shutdown process takes a few seconds. While the domain is stopped, the
Administration Console and most of the `asadmin` subcommands cannot be
used. This subcommand is particularly useful in stopping a runaway
server. For more controlled situations, you can use the
link:../reference-manual/restart-domain.html#GSRFM00218[`restart-domain`] subcommand.


[NOTE]
====
For Microsoft Windows, you can use an alternate method to stop a domain.
From the Start menu, select the command for your distribution of
GlassFish Server:

* If you are using the Full Platform, select Programs > Oracle GlassFish
Server > Stop Admin Server.
* If you are using the Web Profile, select Programs > Oracle GlassFish
Server Web Profile > Stop Admin Server.
====


1. If necessary, notify users that you are going to stop the domain.
2. Stop the domain by using the link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]
subcommand.

[[GSADG00132]][[gioes]]
Example 3-7 Stopping a Domain (or Server)

This example stops `domain1` in the default directory, where `domain1`
is the only domain present in the directory.

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

[[GSADG826]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help stop-domain` at the command line.

[[ginqj]][[GSADG00337]][[to-restart-a-domain]]

==== To Restart a Domain

Use the `restart-domain` subcommand in remote mode to restart the Domain
Administration Server (DAS) of the specified host. When restarting a
domain, the DAS stops accepting new connections and then waits for all
outstanding connections to complete. This shutdown process takes a few
seconds. Until the domain has restarted, the Administration Console and
most of the `asadmin` subcommands cannot be used.

This subcommand is particularly useful for environments where the server
machine is secured and difficult to get to. With the right credentials,
you can restart the server from a remote location as well as from the
same machine.

If the server will not restart, use the link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]
subcommand followed by the link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Restart the domain by using the link:../reference-manual/restart-domain.html#GSRFM00218[`restart-domain`] subcommand.

[[GSADG00133]][[ggoet]]
Example 3-8 Restarting a Domain (or Server)

This example restarts `mydoimain4` in the default directory.

[source]
----
asadmin> restart-domain mydomain4
Waiting for the domain to restart ...........
Command restart-domain executed successfully.
----

[[GSADG00134]][[giupx]]
Example 3-9 Restarting a Domain in a Browser

This example invokes the `restart-domain` subcommand in a browser.

[source]
----
http://yourhost:4848/__asadmin/restart-domain
----

[[GSADG827]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help restart-domain` at the command line.

[[gglqp]][[GSADG00538]][[configuring-a-das-or-a-glassfish-server-instance-for-automatic-restart]]

=== Configuring a DAS or a GlassFish Server Instance for Automatic Restart

Use the `create-service` subcommand in local mode to configure your
system to automatically restart a domain administration server (DAS) or
a GlassFish Server instance. GlassFish Server enables you to configure a
DAS or an instance for automatic restart on the following operating
systems:

* Windows
* Linux
* Oracle Solaris

To ensure that automatic restart functions correctly on Windows, you
must prevent service shutdown when a user logs out.

The following topics are addressed here:

* link:#gjzfg[To Configure a DAS or an Instance for Automatic Restart on Windows]
* link:#giurs[To Configure a DAS or an Instance for Automatic Restart on Linux]
* link:#giusi[To Configure a DAS or an Instance for Automatic Restart on Oracle Solaris]
* link:#giurf[To Prevent Service Shutdown When a User Logs Out on Windows]

[[gjzfg]][[GSADG00338]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-windows]]

==== To Configure a DAS or an Instance for Automatic Restart on Windows

On Windows systems, the `create-service` subcommand creates a Windows
service to represent the DAS or instance. The service is created in the
disabled state. After this subcommand creates the service, you must use
the Windows Services Manager or the Windows Services Wrapper to start,
stop, uninstall, or install the service. To administer the service from
the Windows command line, use the `sc.exe` tool.

This subcommand must be run as the OS-level administrator user.

1. Create the service by using the link:../reference-manual/create-service.html#GSRFM00057[`create-service`]
subcommand.
2. After the service is created, start the service by using the Windows
Services Manager or the Windows Services Wrapper.
+
For example, to start the service for the default domain by using the
`sc.exe` tool, type:
+
[source]
----
C:\> sc start domain1
----
If you are using the `sc.exe` tool to administer the service, use the
tool as follows:
* To obtain information about the service, use the `sc query` command.
* To stop the service, use the `sc stop` command.
* To uninstall the service, use the `sc delete` command.

[[GSADG00135]][[gjzix]]
Example 3-10 Creating a Service to Restart a DAS Automatically on
Windows

This example creates a service for the default domain on a system that
is running Windows.

[source]
----
asadmin> create-service
Found the Windows Service and successfully uninstalled it.
The Windows Service was created successfully.  It is ready to be started.  Here are
the details:
ID of the service: domain1
Display Name of the service:domain1 GlassFish Server
Domain Directory: C:\glassfishv3\glassfish\domains\domain1
Configuration file for Windows Services Wrapper: C:\glassfishv3\glassfish\domains\
domain1\bin\domain1Service.xml
The service can be controlled using the Windows Services Manager or you can use the
Windows Services Wrapper instead:
Start Command:  C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe  start
Stop Command:   C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe  stop
Uninstall Command:  C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe
uninstall
Install Command:  C:\glassfishv3\glassfish\domains\domain1\bin\domain1Service.exe
install

This message is also available in a file named PlatformServices.log in the domain's
root directory
Command create-service executed successfully.
----

[[GSADG00136]][[gktso]]
Example 3-11 Querying the Service to Restart a DAS Automatically on
Windows

This obtains information about the service for the default domain on a
system that is running Windows.

[source]
----
C:\> sc query domain1

SERVICE_NAME: domain1
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 1077  (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
----

[[giurs]][[GSADG00339]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-linux]]

==== To Configure a DAS or an Instance for Automatic Restart on Linux

On Linux systems, the `create-service` subcommand creates a
System-V-style initialization script
`/etc/init.d/GlassFish_`domain-or-instance-name and installs a link to
this script in any `/etc/rc`N`.d` directory that is present, where N is
`0`, `1`, `2`, `3`, `4`, `5`, `6`, and `S`. After this subcommand
creates the script, you must use this script to start, stop, or restart
the domain or instance.

The script automatically restarts the domain or instance only during a
reboot. If the domain or instance is stopped, but the host remains
running, the domain or instance is not restarted automatically. To
restart the domain or instance, you must run the script manually.

You might no longer require the domain or instance to be automatically
restarted during a reboot. In this situation, use the operating system
to delete the initialization script and the link to the script that the
`create-service` subcommand creates.

The `create-service` subcommand must be run as the OS-level root user.

Create the service by using the link:../reference-manual/create-service.html#GSRFM00057[`create-service`]
subcommand.

[[GSADG828]][[sthref19]]
Example 3-12 Creating a Service to Restart a DAS Automatically on Linux

This example creates a service for the default domain on a system that
is running Linux.

[source]
----
asadmin> create-service
Found the Linux Service and successfully uninstalled it.
The Service was created successfully. Here are the details:
Name of the service:domain1
Type of the service:Domain
Configuration location of the service:/etc/init.d/GlassFish_domain1
User account that will run the service: root
You have created the service but you need to start it yourself.
Here are the most typical Linux commands of interest:

* /etc/init.d/GlassFish_domain1 start
* /etc/init.d/GlassFish_domain1 stop
* /etc/init.d/GlassFish_domain1 restart

For your convenience this message has also been saved to this file:
/export/glassfish7/glassfish/domains/domain1/PlatformServices.log
Command create-service executed successfully.
----

[[giusi]][[GSADG00340]][[to-configure-a-das-or-an-instance-for-automatic-restart-on-oracle-solaris]]

To Configure a DAS or an Instance for Automatic Restart on Oracle
==== Solaris

On Oracle Solaris systems, the `create-service` subcommand creates an
Oracle Solaris Service Management Facility (SMF) service that restarts a
DAS or an instance. The service grants to the process the privileges of
the user that runs the process. When you create an SMF service, the
default user is the superuser. If you require a different user to run
the process, specify the user in `method_credential`.

If your process is to bind to a privileged port of Oracle Solaris, the
process requires the `net_privaddr` privilege. The privileged ports of
the Oracle Solaris operating system have port numbers less than 1024.

To determine if a user has the `net_privaddr` privilege, log in as that
user and type the command `ppriv -l | grep net_privaddr`.

After you create and enable the SMF service, if the domain or instance
is stopped, SMF restarts it.

[[GSADG829]]

Before You Begin

To run the `create-service` subcommand, you must have `solaris.smf.*`
authorization. For information about how to set the authorizations, see
the
http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
man page and the
http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
man page. You must also have write permission in the directory tree:
`/var/svc/manifest/application/SUNWappserver`. Usually, the superuser
has both of these permissions. Additionally, Oracle Solaris
administration commands such as
http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`],
http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`],
and
http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`]
must be available in the PATH.

If a particular GlassFish Server domain or instance should not have
default user privileges, modify the manifest of the service and reimport
the service.

1. Create the service by using the link:../reference-manual/create-service.html#GSRFM00057[`create-service`]
subcommand.
2. After the service is created, enable the service by using the
`svacdm enable` command.
+
For example, to enable the SMF service for the default domain, type:
+
[source]
----
svacdm enable /appserver/domains/domain1
----

[[GSADG00137]][[giuqp]]
Example 3-13 Creating a Service to Restart a Domain Automatically on
Oracle Solaris

This example creates a service for the default domain on a system that
is running Oracle Solaris.

[source]
----
asadmin> create-service
The Service was created successfully. Here are the details:
Name of the service:application/GlassFish/domain1
Type of the service:Domain
Configuration location of the service:/home/gfuser/glassfish-installations
/glassfishv3/glassfish/domains
Manifest file location on the system:/var/svc/manifest/application
/GlassFish/domain1_home_gfuser_glassfish-installations_glassfishv3
_glassfish_domains/Domain-service-smf.xml.
You have created the service but you need to start it yourself.
Here are the most typical Solaris commands of interest:
* /usr/bin/svcs -a | grep domain1 // status
* /usr/sbin/svcadm enable domain1 // start
* /usr/sbin/svcadm disable domain1 // stop
* /usr/sbin/svccfg delete domain1 // uninstall
Command create-service executed successfully
----

[[GSADG830]]

See Also

For information about administering the service, see the following
Oracle Solaris documentation:

* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1hbrunlevels-25516[Managing
Services (Overview)]" in System Administration Guide: Basic
Administration
* "http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=SYSADV1faauf[Managing
Services (Tasks)]" in System Administration Guide: Basic Administration
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1auths-1[`auths`(1)]
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1svcs-1[`svcs`(1)]
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvcadm-1m[`svcadm`(1M)]
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Msvccfg-1m[`svccfg`(1M)]
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Museradd-1m[`useradd`(1M)]
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN1Musermod-1m[`usermod`(1M)]
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5rbac-5[`rbac`(5)]
* http://www.oracle.com/pls/topic/lookup?ctx=E18752&id=REFMAN5smf-security-5[`smf_security`(5)]

[[giurf]][[GSADG00341]][[to-prevent-service-shutdown-when-a-user-logs-out-on-windows]]

==== To Prevent Service Shutdown When a User Logs Out on Windows

By default, the Java Virtual Machine (VM) receives signals from Windows
that indicate that Windows is shutting down, or that a user is logging
out of Windows, which causes the system to shut itself down cleanly.
This behavior causes the GlassFish Server service to shut down. To
prevent the service from shutting down when a user logs out, you must
set the `-Xrs` Java VM option
(`https://github.com/eclipse-ee4j/glassfishdocumentation`).

1. Ensure that the DAS is running.

2. Set the `-Xrs` Java VM option for the DAS.
Use the link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] subcommand for this purpose.
+
[source]
----
asadmin> create-jvm-options -Xrs
----

3. Set the `-Xrs` Java VM option for the Java VM within which the `asadmin` utility runs.
To set this option, edit the `asadmin.bat` file to add the `-Xrs` option
to the line that runs the `admin-cli.jar` file.
..  In the as-install``\bin\asadmin.bat`` file, edit the line to read as follows:
+
[source]
----
%JAVA% -Xrs -jar "%~dp0..\modules\admin-cli.jar" %*
----
.. In the as-install-parent``\bin\asadmin.bat`` file, edit the line to read as follows:
+
[source]
----
%JAVA% -Xrs -jar "%~dp0..\glassfish\modules\admin-cli.jar" %*
----

4. If the GlassFish Server service is running, restart the service for your changes to take effect.

[[gityo]][[GSADG00541]][[backing-up-and-restoring-a-domain]]

=== Backing Up and Restoring a Domain

The following topics are addressed here:

* link:#ggocq[To Back Up a Domain]
* link:#ggody[To Restore a Domain]
* link:#ghgod[To List Domain Backups]

[[ggocq]][[GSADG00352]][[to-back-up-a-domain]]

==== To Back Up a Domain

Use the `backup-domain` subcommand in local mode to make a backup of a
specified domain.

When you use the `backup-domain` subcommand, GlassFish Server creates a
ZIP file backup of all the files and subdirectories in the domain's
directory, domain-root-dir`/`domain-dir, except for the `backups`
subdirectory.

The `backup-domain` subcommand provides several options to meet
particular needs, including:

* `--backupdir` to specify a directory in which to store the backup
instead of the default domain-root-dir`/`domain-dir`/backups`.
* `--description` to provide a description of the backup to be stored in
the backup itself.

1. Ensure that the domain is stopped .
+
The `backup-domain` subcommand operates only when the domain is stopped.
2. Back up the domain by using the link:../reference-manual/backup-domain.html#GSRFM00003[`backup-domain`]
subcommand.
3. Restore the domain to its previous state, if necessary.
+
Start or resume the domain.

[[GSADG00149]][[ggoxt]]
Example 3-14 Backing Up the Default Domain

This example makes a backup of the default domain, `domain1`, storing
the backup file in `/net/backups.example.com/glassfish`:

[source]
----
asadmin> backup-domain --backupdir /net/backups.example.com/glassfish domain1
Backed up domain1 at Mon Jan 17 08:16:22 PST 2011.
Command backup-domain executed successfully
----

[[GSADG842]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help backup-domain` at the command line.

[[ggody]][[GSADG00353]][[to-restore-a-domain]]

==== To Restore a Domain

Use the `restore-domain` subcommand in local mode to use a backup file
to restore the files and subdirectories in a specified domain's
directory.

The `restore-domain` subcommand can use backup files created by the
`backup-domain` subcommand and by automatic backup configurations, both
full backups and configuration-only backups. Automatic backup
configurations are available only in Oracle GlassFish Server.

1. If necessary, notify domain users that the domain is being restored
from backup.
2. Ensure that the domain is stopped.
+
The `restore-domain` subcommand operates only when the domain is
stopped.
+
To determine whether the domain is running, use the
link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`] subcommand, as described in
link:#ggoco[To List Domains].
+
To stop the domain, use the link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`] subcommand
as described in link:#ggoch[To Stop a Domain].
3. Restore backup files for a domain by using the
link:../reference-manual/restore-domain.html#GSRFM00221[`restore-domain`] subcommand.
4. Verify that the restore has succeeded.
5. If necessary, notify users that the domain has been restored and is
available.

[[GSADG00150]][[ggoys]]
Example 3-15 Restoring the Default Domain

This example restores files for the default domain, `domain1`, from the
most recent backup stored in a specified backup directory:

[source]
----
asadmin> restore-domain --backupdir /net/backups.example.com/glassfish domain1
Restored the domain (domain1) to /home/user1/glassfish7/glassfish/domains/domain1
Command restore-domain executed successfully.
----

[[GSADG843]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin restore-domain --help` at the command line.

[[ghgod]][[GSADG00354]][[to-list-domain-backups]]

==== To List Domain Backups

Use the `list-backups` subcommand in local mode to display information
about backups of a specified domain stored in a specified backup
directory.

The `list-backups` subcommand provides several options to meet
particular needs, including `--backupdir` to specify a directory where
backups are stored instead of the default domain-dir`/backups`.

List backups by using the `list-backups` subcommand.

[[GSADG00151]][[ghgsv]]
Example 3-16 Listing Backups of the Default Domain

This example lists the backups of the default domain, `domain1`, that
are stored in the `/net/backups.example.com/glassfish` directory:

[source]
----
asadmin> list-backups --backupdir /net/backups.example.com/glassfish domain1
CONFIG        USER   BACKUP DATE                   FILENAME
              user1  Mon Jan 17 08:16:22 PST 2011  domain1_2011_01_17_v00001.zip
monthly-full  user1  Wed Dec 01 00:00:00 PST 2010  domain1_2010_12_01_v00001.zip
monthly-full  user1  Sat Jan 01 00:00:03 PST 2011  domain1_2011_01_01_v00001.zip
monthly-full  user1  Tue Feb 01 00:00:01 PST 2011  domain1_2011_02_01_v00001.zip
Command list-backups executed successfully.
----

Note that this listing includes backups created automatically by a
backup configuration. This feature is available only in Oracle GlassFish
Server.

[[GSADG844]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-backups` at the command line.

[[gglri]][[GSADG00542]][[re-creating-the-domain-administration-server-das]]

=== Re-Creating the Domain Administration Server (DAS)

For mirroring purposes, and to provide a working copy of the DAS, you
must have:

* One host (olddashost) that contains the original DAS.
* A second host (apphost) that contains a cluster with server instances
running applications and catering to clients. The cluster is configured
using the DAS on the first host.
* A third host (newdashost) where the DAS needs to be re-created in a
situation where the first host crashes or is being taken out of service.


[NOTE]
====
You must maintain a backup of the DAS from the first host using the
olink:GSRFM00003[`backup-domain`] subcommand as described in
link:#ggocq[To Back Up a Domain]. You can automatically maintain a
backup of the DAS using the automatic backups feature of Oracle
GlassFish Server.
====



[NOTE]
====
Oracle GlassFish Server includes `asadmin` subcommands that simplify
this procedure. If you are using Oracle GlassFish Server, see
link:#gglnp[To Migrate the DAS].
====


[[gglnp]][[GSADG00355]][[to-migrate-the-das]]

==== To Migrate the DAS

The following steps are required to migrate the DAS from the first host
(olddashost) to the third host (newdashost).

1. Install GlassFish Server on newdashost just as it was installed on olddashost.
This is required so that the DAS can be properly restored on newdashost without causing path conflicts.

2. Use the `restore-domain` subcommand to restore the latest backup file onto newdashost.
For example:
+
[source]
----
asadmin> restore-domain --backupdir /net/backups.example.com/glassfish
----
This example assumes that backups are stored in a network-accessible location.
If this is not the case, manually copy the latest backup file
from offline storage to a directory on newdashost.
You can backup any domain. However, while re-creating the domain, the
domain name should be same as the original.

3. Stop the domain on olddashost, if it is running.

4. Start the domain on newdashost by using the
link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`] subcommand.
For example:
+
[source]
----
asadmin> start-domain domain1
----

5. If the domain on olddashost was centrally administered, set up
centralized administration on newdashost.
See "link:../ha-administration-guide/ssh-setup.html#GSHAG00003[Enabling Centralized Administration of GlassFish Server Instances]"
in GlassFish Server Open Source Edition High Availability Administration Guide for instructions.

6. Verify that instances on other hosts are visible to the new DAS on newdashost:
+
[source]
----
asadmin> list-instances --long
----
7. Change the DAS host values for properties under the node on apphost.
In the file as-install``/nodes/``node-name``/agent/config/das.properties``
file, change the `agent.das.host` property value to refer to newdashost
instead of olddasnost.

8. Use the new DAS to restart clusters and standalone instances on apphost:
Restarting the clustered and standalone instances on apphost triggers
their recognition of the new DAS on newdashost.
..  Use the `list-clusters` subcommand to list the clusters in the domain.
..  Use the `stop-cluster` subcommand to stop each cluster.
..  Use the `list-instances` subcommand to list the instances in the domain.
..  Use the `restart-instance` subcommand to restart each standalone instance.
..  Use the `start-cluster` subcommand to start each cluster.
    If the domain does not use centralized administration, use the
    `start-local-instance` subcommand to start the cluster instances on apphost.

9. Verify that instances on apphost are running:
+
[source]
----
asadmin> list-instances --long
----
10. Decommission and discontinue use of the DAS on olddashost.

[[gitvn]][[GSADG00543]][[additional-domain-tasks]]

=== Additional Domain Tasks

The following topics are addressed here:

* link:#ghhnt[To Display Domain Uptime]
* link:#ghmbn[To Switch a Domain to Another Supported Java Version]
* link:#gkvkb[To Change the Administration Port of a Domain]

[[ghhnt]][[GSADG00356]][[to-display-domain-uptime]]

==== To Display Domain Uptime

Use the `uptime` subcommand in remote mode to display the length of time
that the domain administration server (DAS) has been running since it
was last started.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Display uptime by using the link:../reference-manual/uptime.html#GSRFM00258[`uptime`] subcommand.

[[GSADG00152]][[ghlds]]
Example 3-17 Displaying the DAS Uptime

This example displays the length of time that the DAS has been running.

[source]
----
asadmin> uptime
Uptime: 1 Weeks, 4 days, 0 hours, 17 minutes, 14 seconds, Total milliseconds: 951434595
Command uptime executed successfully.
----

[[GSADG845]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help uptime` at the command line.

[[ghmbn]][[GSADG00357]][[to-switch-a-domain-to-another-supported-java-version]]

==== To Switch a Domain to Another Supported Java Version

GlassFish Server 7 requires Java SE 11 as the underlying virtual
machine for the Java platform (Java Virtual Machine or JVM machine).

[NOTE]
====
Do not downgrade to an earlier Java version after a domain has been
created with a newer JVM machine. If you must downgrade your JVM
machine, downgrade it only for individual domains.
====

1. If you have not already done so, download the desired Java SDK (not the JRE) and install it on your system.
The Java SDK can be downloaded from the
https://jdk.java.net/java-se-ri/11[Java SE RI Downloads page] .

2. Start the domain for which you are changing the JDK.
Use the following format:
+
[source]
----
as-install/bin/asadmin start-domain domain-name
----

For a valid JVM installation, locations are checked in the following order:

1. `domain.xml` (`java-home` inside `java-config`)

2. `asenv.conf` (setting `AS_JAVA="path to java home"`)
If a legal JDK is not found, a fatal error occurs and the problem is reported back to you.

3. If necessary, change the JVM machine attributes for the domain.
In particular, you might need to change the `JAVA_HOME` environment
variable. For example, to change the `JAVA_HOME` variable, type:
+
[source]
----
as-install/bin/asadmin set "server.java-config.java-home=path-to-java-home"
----

[[gkvkb]][[GSADG00358]][[to-change-the-administration-port-of-a-domain]]

==== To Change the Administration Port of a Domain

Use the `set` subcommand in remote mode to change the administration
port of a domain.

The HTTP port or the HTTPS port for administration of a domain is
defined by the `--adminport` option of the
link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`] subcommand when the domain is created.
If this port must be reallocated for another purpose, change the port on
which the DAS listens for administration requests.

1. Ensure that the server is running. Remote subcommands require a running server.
2. Set the port number to its new value.
Use the link:../reference-manual/set.html#GSRFM00226[`set`] subcommand for this purpose.
+
[source]
----
$ asadmin set
server-config.network-config.network-listeners.network-listener.admin-listener.port=new-port-number
----
The new-port-number is the new value that you are setting for the port
number.
+
[NOTE]
====
After you set the port number to its new value, running the
`list-domains` subcommand incorrectly reports that the DAS is not
running. The `list-domains` subcommand reports the correct state again
only after you stop and restart the domain as explained in the steps
that follow.
====

3. Stop the domain, specifying the host on which the DAS is running and
the old administration port number of the domain.
You must specify the old port number because the DAS is still listening
for administration requests on this port. If you omit the port number,
the command fails because the `stop-domain` subcommand attempts to
contact the DAS through the new port number.
+
[NOTE]
====
Only the options that are required to complete this task are provided in
this step. For information about all the options for controlling the
behavior of the domain, see the olink:GSRFM00240[`stop-domain`(1)] help
page.
====
+
[source]
----
$ asadmin --host host-name --port old-port-number stop-domain
----
host-name::
  The name of the host on which the DAS is running. If you run the
  `stop-domain` subcommand on the host where the DAS is running, you
  must specify the actual host name and not `localhost`. If you specify
  `localhost`, the `stop-domain` subcommand fails.
old-port-number::
  The value of administration port number of the domain before you
  changed it in the preceding step.

4. Start the domain.
+
[NOTE]
====
Only the options that are required to complete this task are provided in
this step. For information about all the options for controlling the
behavior of the domain, see the olink:GSRFM00235[`start-domain`(1)] help
page.
====
+
[source]
----
$ start-domain [domain-name]
----
The domain-name is the name of the domain to start. If only one domain
subdirectory is contained in the `domains` directory, you may omit this
option.

[[GSADG00153]][[gkvkl]]
Example 3-18 Changing the Administration Port of a Domain

This example changes the administration port of the domain `domain1`
from 4848 to 4849. The DAS is running on the host `xk01.example.com`.

[source]
----
$ asadmin set
server-config.network-config.network-listeners.network-listener.admin-listener.port=4849
server-config.network-config.network-listeners.network-listener.admin-listener.port=4849
Command set executed successfully.
$ asadmin --host xk01.example.com --port 4848 stop-domain
Waiting for the domain to stop ....
Command stop-domain executed successfully.
$ asadmin start-domain
Waiting for domain1 to start ........................
Successfully started the domain : domain1
domain  Location: /export/glassfish7/glassfish/domains/domain1
Log File: /export/glassfish7/glassfish/domains/domain1/logs/server.log
Admin Port: 4849
Command start-domain executed successfully.
----

[[GSADG846]]

See Also

* link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
* link:../reference-manual/set.html#GSRFM00226[`set`(1)]
* link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`(1)]
* link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`(1)]

You can also view the full syntax and options of the subcommands by
typing the following commands at the command line:

* `asadmin help create-domain`
* `asadmin help set`
* `asadmin help start-domain`
* `asadmin help stop-domain`


