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 (Java 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://javaee.github.io/glassfish/documentation`).

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 5.0 requires Java SE 8 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
http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java SE 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`


