type=page
status=published
title=Administering GlassFish Server Nodes
next=clusters.html
prev=ssh-setup.html
~~~~~~
Administering GlassFish Server Nodes
====================================

[[GSHAG00004]][[gkrle]]


[[administering-glassfish-server-nodes]]
3 Administering GlassFish Server Nodes
--------------------------------------

A node represents a host on which the GlassFish Server software is
installed. A node must exist for every host on which GlassFish Server
instances reside. A node's configuration contains information about the
host such as the name of the host and the location where the GlassFish
Server is installed on the host.

The following topics are addressed here:

* link:#gksgh[Types of GlassFish Server Nodes]
* link:#CHDBIHFJ[Creating, Listing, Testing, and Deleting `DCOM` Nodes]
* link:#gkrkn[Creating, Listing, Testing, and Deleting `SSH` Nodes]
* link:#gkrnp[Creating, Listing, and Deleting `CONFIG` Nodes]
* link:#gksjd[Updating and Changing the Type of a Node]

[[gksgh]][[GSHAG00179]][[types-of-glassfish-server-nodes]]

Types of GlassFish Server Nodes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Each GlassFish Server node is one of the following types of node:

`DCOM`::
  A `DCOM` node supports communication over the Distributed Component
  Object Model (DCOM) remote protocol. The DCOM remote protocol is
  available only on Windows systems. If DCOM is set up and you plan to
  administer your GlassFish Server instances centrally, the instances
  must reside on `DCOM` nodes. +
  A `DCOM` node's configuration contains the information that is
  required to connect to the host through DCOM. This information
  includes, for example, the user name of the Windows user and the port
  number for DCOM connections to the host.
`SSH`::
  An `SSH` node supports communication over secure shell (SSH). If SSH
  is set up and you plan to administer your GlassFish Server instances
  centrally, the instances must reside on `SSH` nodes. +
  An `SSH` node's configuration contains the information that is
  required to connect to the host through SSH. This information
  includes, for example, the user name of the SSH user and the port
  number for SSH connections to the host.
`CONFIG`::
  A `CONFIG` node does not support remote communication. If neither DCOM
  nor SSH is set up and you plan to administer your instances locally,
  the instances can reside on `CONFIG` nodes. You cannot use `CONFIG`
  nodes for instances that you plan to administer centrally. +
  Each domain contains a predefined `CONFIG` node that is named
  `localhost-`domain, where domain is the name of the domain. On the
  host where the domain administration server (DAS) is running, this
  node represents the local host.

[[CHDBIHFJ]][[GSHAG463]][[creating-listing-testing-and-deleting-dcom-nodes]]

Creating, Listing, Testing, and Deleting `DCOM` Nodes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A `DCOM` node supports communication over DCOM. If DCOM is set up and
you plan to administer your GlassFish Server instances centrally, the
instances must reside on `DCOM` nodes. For information about setting up
DCOM, see link:ssh-setup.html#gkshg[Enabling Centralized Administration
of GlassFish Server Instances].

GlassFish Server enables you to create `DCOM` nodes for use by
instances, obtain information about `DCOM` nodes, test if `DCOM` nodes
are reachable, and delete `DCOM` nodes that are no longer required.

The following topics are addressed here:

* link:#CHDIGBJB[To Create a `DCOM` Node]
* link:#CHDDCBEG[To List `DCOM` Nodes in a Domain]
* link:#CHDIFJCC[To Test if a `DCOM` Node is Reachable]
* link:#CHDCFHBA[To Delete a `DCOM` Node]

[[CHDIGBJB]][[GSHAG464]][[to-create-a-dcom-node]]

To Create a `DCOM` Node
^^^^^^^^^^^^^^^^^^^^^^^

Use the `create-node-dcom` subcommand in remote mode to create a `DCOM`
node.

[[GSHAG465]]

Before You Begin

Ensure that the Windows user can use DCOM to connect to the host that
the node will represent. By default, the `create-node-dcom` subcommand
validates the node's parameters and the DCOM connection to the host. If
the Windows user cannot use DCOM to connect to the host, the validation
fails.


[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

For information about how to determine whether the Windows user can use
DCOM to connect to the host, see link:ssh-setup.html#CEGJFADH[To Test the
Connection Over DCOM to a Remote Host].

|=======================================================================


1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `create-node-dcom` subcommand. +
Specify the file that contains the alias for the Windows user's password
through the `--passwordfile` option of the `asadmin` utility. For more
information about this file, see link:ssh-setup.html#CEGCDCEF[To Set Up
Password Authentication for the Windows User]. +

[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

Only the options that are required to complete this task are provided in
this step. For information about all the options for configuring the
node, see the link:../reference-manual/create-node-dcom.html#GSRFM510[`create-node-dcom`(1)] help page.

|=======================================================================

[source,oac_no_warn]
----
C:\> asadmin --passwordfile filename create-node-dcom
--nodehost node-host [--installdir install-dir ]
node-name
----
filname::
  The name of the file that contains the alias for the Windows user's
  password.
node-host::
  The name of the host that the node represents. The name of the host
  must be specified. Otherwise, an error occurs.
install-dir::
  The full path to the parent of the base installation directory of the
  GlassFish Server software on the host, for example, `C:\glassfish3`.
  If the GlassFish Server software is installed in the same directory on
  the node's host and the DAS host, you can omit this option.
node-name::
  Your choice of name for the node that you are creating.

[[GSHAG466]][[sthref13]]


Example 3-1 Creating a `DCOM` Node

This example creates the `DCOM` node `wpmdl1` to represent the host
`wpmdl1.example.com`. The GlassFish Server software is installed in the
same directory on the DAS host and on the host `wpmdl1.example.com`.

[source,oac_no_warn]
----
C:\> asadmin --passwordfile aspwalias.txt create-node-dcom
--nodehost wpmdl1.example.com wpmdl1
Command create-node-dcom executed successfully.
----

[[GSHAG467]]

See Also

* link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)]
* link:../reference-manual/create-node-dcom.html#GSRFM510[`create-node-dcom`(1)]

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

[[GSHAG468]]

Next Steps

After creating a node, you can create instances on the node as explained
in the following sections:

* link:instances.html#gkqch[To Create an Instance Centrally]
* link:instances.html#gkqbl[To Create an Instance Locally]

[[CHDDCBEG]][[GSHAG469]][[to-list-dcom-nodes-in-a-domain]]

To List `DCOM` Nodes in a Domain
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `list-nodes-dcom` subcommand in remote mode to obtain
information about existing `DCOM` nodes in a domain.


[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

To obtain information about all existing nodes in a domain, use the
link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.

|=======================================================================


1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the link:../reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`] subcommand. +
[source,oac_no_warn]
----
asadmin> list-nodes-dcom
----

[[GSHAG470]][[sthref14]]


Example 3-2 Listing Basic Information About All `DCOM` Nodes in a Domain

This example lists the name, type, and host of all `DCOM` nodes in the
current domain.

[source,oac_no_warn]
----
asadmin> list-nodes-dcom
xkyd  DCOM  xkyd.example.com
wpmdl2  DCOM  wpmdl2.example.com
wpmdl1  DCOM  wpmdl1.example.com
Command list-nodes-dcom executed successfully.
----

[[GSHAG471]][[sthref15]]


Example 3-3 Listing Detailed Information About All `DCOM` Nodes in a
Domain

This example lists detailed information about all `DCOM` nodes in the
current domain.

[source,oac_no_warn]
----
asadmin> list-nodes-dcom --long=true
NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
xkyd         DCOM   xkyd.example.com     C:\glassfish3
wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish3       wdi2
wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish3       wdi1
Command list-nodes-dcom executed successfully.
----

[[GSHAG472]]

See Also

* link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
* link:../reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`(1)]

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

* `asadmin help list-nodes`
* `asadmin help list-nodes-dcom`

[[CHDIFJCC]][[GSHAG473]][[to-test-if-a-dcom-node-is-reachable]]

To Test if a `DCOM` Node is Reachable
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `ping-node-dcom` subcommand in remote mode to test if a `DCOM`
node is reachable.

[[GSHAG474]]

Before You Begin

Ensure that DCOM is configured on the host where the DAS is running and
on the host that the node represents.

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `ping-node-dcom` subcommand. +

[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

Only the options that are required to complete this task are provided in
this step. For information about all the options for testing the node,
see the link:../reference-manual/ping-node-dcom.html#GSRFM728[`ping-node-dcom`(1)] help page.

|=======================================================================

[source,oac_no_warn]
----
asadmin> ping-node-dcom node-name
----
node-name::
  The name of the node to test.

[[GSHAG475]][[sthref16]]


Example 3-4 Testing if a `DCOM` Node Is Reachable

This example tests if the `DCOM` node `wpmdl2` is reachable.

[source,oac_no_warn]
----
asadmin> ping-node-dcom wpmdl2
Successfully made DCOM connection to node wpmdl2 (wpmdl2.example.com)
Command ping-node-dcom executed successfully.
----

[[GSHAG476]]

See Also

link:../reference-manual/ping-node-dcom.html#GSRFM728[`ping-node-dcom`(1)]

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

[[CHDCFHBA]][[GSHAG477]][[to-delete-a-dcom-node]]

To Delete a `DCOM` Node
^^^^^^^^^^^^^^^^^^^^^^^

Use the `delete-node-dcom` subcommand in remote mode to delete a `DCOM`
node.

Deleting a node removes the node from the configuration of the DAS. The
node's directories and files are deleted when the last GlassFish Server
instance that resides on the node is deleted.

[[GSHAG478]]

Before You Begin

Ensure that no GlassFish Server instances reside on the node that you
are deleting. For information about how to delete an instance, see the
following sections.

* link:instances.html#gkqcw[To Delete an Instance Centrally]
* link:instances.html#gkqed[To Delete an Instance Locally]

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Confirm that no instances reside on the node that you are deleting. +
[source,oac_no_warn]
----
asadmin> list-nodes-dcom --long=true
----
3.  Run the olink:GSRFM00100[`delete-node-dcom`] subcommand. +
[source,oac_no_warn]
----
asadmin> delete-node-dcom node-name
----
node-name::
  The name of the node that you are deleting.

[[GSHAG479]][[sthref17]]


Example 3-5 Deleting a `DCOM` Node

This example confirms that no instances reside on the `DCOM` node `xkyd`
and deletes the node `xkyd`.

[source,oac_no_warn]
----
asadmin> list-nodes-dcom --long=true
NODE NAME    TYPE   NODE HOST            INSTALL DIRECTORY   REFERENCED BY
xkyd         DCOM   xkyd.example.com     C:\glassfish3
wpmdl2       DCOM   wpmdl2.example.com   C:\glassfish3       wdi2
wpmdl1       DCOM   wpmdl1.example.com   C:\glassfish3       wdi1
Command list-nodes-dcom executed successfully.
asadmin> delete-node-dcom xkyd
Command delete-node-dcom executed successfully.
----

[[GSHAG480]]

See Also

* link:instances.html#gkqcw[To Delete an Instance Centrally]
* link:instances.html#gkqed[To Delete an Instance Locally]
* link:../reference-manual/delete-node-dcom.html#GSRFM569[`delete-node-dcom`(1)]
* link:../reference-manual/list-nodes-dcom.html#GSRFM693[`list-nodes-dcom`(1)]

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

* `asadmin help delete-node-dcom`
* `asadmin help list-nodes-dcom`

[[gkrkn]][[GSHAG00180]][[creating-listing-testing-and-deleting-ssh-nodes]]

Creating, Listing, Testing, and Deleting `SSH` Nodes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

An `SSH` node supports communication over SSH. If SSH is set up and you
plan to administer your GlassFish Server instances centrally, the
instances must reside on `SSH` nodes. For information about setting up
SSH, see link:ssh-setup.html#gkshg[Enabling Centralized Administration of
GlassFish Server Instances].


[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

Windows systems also support communications over DCOM as an alternative
to SSH.

|=======================================================================


GlassFish Server enables you to create `SSH` nodes for use by instances,
obtain information about `SSH` nodes, test if `SSH` nodes are reachable,
and delete `SSH` nodes that are no longer required.

The following topics are addressed here:

* link:#gkrnf[To Create an `SSH` Node]
* link:#gkrme[To List `SSH` Nodes in a Domain]
* link:#gksig[To Test if an `SSH` Node is Reachable]
* link:#gkrlz[To Delete an `SSH` Node]

[[gkrnf]][[GSHAG00088]][[to-create-an-ssh-node]]

To Create an `SSH` Node
^^^^^^^^^^^^^^^^^^^^^^^

Use the `create-node-ssh` subcommand in remote mode to create an `SSH`
node.

[[GSHAG347]]

Before You Begin

Ensure that the SSH user can use SSH to log in to the host that the node
will represent. By default, the `create-node-ssh` subcommand validates
the node's parameters and the SSH connection to the host. If the SSH
user cannot use SSH to log in to the host, the validation fails.

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `create-node-ssh` subcommand. +

[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

Only the options that are required to complete this task are provided in
this step. For information about all the options for configuring the
node, see the link:../reference-manual/create-node-ssh.html#GSRFM00048[`create-node-ssh`(1)] help page.

If you are using password authentication for the SSH user, you must
specify a password file through the `--passwordfile` option of the
link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`] utility. For more information about SSH user
authentication, see link:ssh-setup.html#gkshh[Setting Up SSH User
Authentication].

|=======================================================================

[source,oac_no_warn]
----
asadmin> create-node-ssh --nodehost node-host [--installdir install-dir ]
node-name
----
node-host::
  The name of the host that the node represents. The name of the host
  must be specified. Otherwise, an error occurs.
install-dir::
  The full path to the parent of the base installation directory of the
  GlassFish Server software on the host, for example,
  `/export/glassfish3/`. If the GlassFish Server software is installed
  in the same directory on the node's host and the DAS host, you can
  omit this option.
node-name::
  Your choice of name for the node that you are creating.

[[GSHAG00020]][[gksih]]


Example 3-6 Creating an `SSH` Node

This example creates the `SSH` node `sj01` to represent the host
`sj01.example.com`. The GlassFish Server software is installed in the
same directory on the DAS host and on the host `sj01.example.com`.

[source,oac_no_warn]
----
asadmin> create-node-ssh --nodehost sj01.example.com sj01
Command create-node-ssh executed successfully.
----

[[GSHAG348]]

Troubleshooting

The `create-node-ssh` subcommand might fail to create the node and
report the error `Illegal sftp packet len`. If this error occurs, ensure
that no the startup file on the remote host displays text for
noninteractive shells. Examples of startup files are `.bashrc`,
`.cshrc`, `.login`, and `.profile`.

The SSH session interprets any text message that is displayed during
login as a file-transfer protocol packet. Therefore, any statement in a
startup file that displays text messages corrupts the SSH session,
causing this error.

[[GSHAG349]]

See Also

link:../reference-manual/create-node-ssh.html#GSRFM00048[`create-node-ssh`(1)]

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

[[GSHAG350]]

Next Steps

After creating a node, you can create instances on the node as explained
in the following sections:

* link:instances.html#gkqch[To Create an Instance Centrally]
* link:instances.html#gkqbl[To Create an Instance Locally]

[[gkrme]][[GSHAG00089]][[to-list-ssh-nodes-in-a-domain]]

To List `SSH` Nodes in a Domain
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `list-nodes-ssh` subcommand in remote mode to obtain information
about existing `SSH` nodes in a domain.


[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

To obtain information about all existing nodes in a domain, use the
link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.

|=======================================================================


1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the link:../reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`] subcommand. +
[source,oac_no_warn]
----
asadmin> list-nodes-ssh
----

[[GSHAG00021]][[gkskt]]


Example 3-7 Listing Basic Information About All `SSH` Nodes in a Domain

This example lists the name, type, and host of all `SSH` nodes in the
current domain.

[source,oac_no_warn]
----
asadmin> list-nodes-ssh
sj01  SSH  sj01.example.com
sj02  SSH  sj02.example.com
Command list-nodes-ssh executed successfully.
----

[[GSHAG00022]][[gkske]]


Example 3-8 Listing Detailed Information About All `SSH` Nodes in a
Domain

This example lists detailed information about all `SSH` nodes in the
current domain.

[source,oac_no_warn]
----
asadmin> list-nodes-ssh --long=true
NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY
sj01        SSH    sj01.example.com   /export/glassfish3   pmd-i1
sj02        SSH    sj02.example.com   /export/glassfish3   pmd-i2
Command list-nodes-ssh executed successfully.
----

[[GSHAG351]]

See Also

* link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
* link:../reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`(1)]

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

* `asadmin help list-nodes`
* `asadmin help list-nodes-ssh`

[[gksig]][[GSHAG00090]][[to-test-if-an-ssh-node-is-reachable]]

To Test if an `SSH` Node is Reachable
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `ping-node-ssh` subcommand in remote mode to test if an `SSH`
node is reachable.

[[GSHAG352]]

Before You Begin

Ensure that SSH is configured on the host where the DAS is running and
on the host that the node represents.

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `ping-node-ssh` subcommand. +

[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

Only the options that are required to complete this task are provided in
this step. For information about all the options for testing the node,
see the link:../reference-manual/ping-node-ssh.html#GSRFM00215[`ping-node-ssh`(1)] help page.

|=======================================================================

[source,oac_no_warn]
----
asadmin> ping-node-ssh node-name
----
node-name::
  The name of the node to test.

[[GSHAG00023]][[gkshk]]


Example 3-9 Testing if an `SSH` Node Is Reachable

This example tests if the `SSH` node `sj01` is reachable.

[source,oac_no_warn]
----
asadmin> ping-node-ssh sj01
Successfully made SSH connection to node sj01 (sj01.example.com)
Command ping-node-ssh executed successfully.
----

[[GSHAG353]]

See Also

link:../reference-manual/ping-node-ssh.html#GSRFM00215[`ping-node-ssh`(1)]

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

[[gkrlz]][[GSHAG00091]][[to-delete-an-ssh-node]]

To Delete an `SSH` Node
^^^^^^^^^^^^^^^^^^^^^^^

Use the `delete-node-ssh` subcommand in remote mode to delete an `SSH`
node.

Deleting a node removes the node from the configuration of the DAS. The
node's directories and files are deleted when the last GlassFish Server
instance that resides on the node is deleted.

[[GSHAG354]]

Before You Begin

Ensure that no GlassFish Server instances reside on the node that you
are deleting. For information about how to delete an instance, see the
following sections.

* link:instances.html#gkqcw[To Delete an Instance Centrally]
* link:instances.html#gkqed[To Delete an Instance Locally]

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Confirm that no instances reside on the node that you are deleting. +
[source,oac_no_warn]
----
asadmin> list-nodes-ssh --long=true
----
3.  Run the olink:GSRFM00100[`delete-node-ssh`] subcommand. +
[source,oac_no_warn]
----
asadmin> delete-node-ssh node-name
----
node-name::
  The name of the node that you are deleting.

[[GSHAG00024]][[gksjg]]


Example 3-10 Deleting an `SSH` Node

This example confirms that no instances reside on the `SSH` node `sj01`
and deletes the node `sj01`.

[source,oac_no_warn]
----
asadmin> list-nodes-ssh --long=true
NODE NAME   TYPE   NODE HOST          INSTALL DIRECTORY    REFERENCED BY
sj01        SSH    sj01.example.com   /export/glassfish3
sj02        SSH    sj02.example.com   /export/glassfish3   pmd-i2
Command list-nodes-ssh executed successfully.
asadmin> delete-node-ssh sj01
Command delete-node-ssh executed successfully.
----

[[GSHAG355]]

See Also

* link:instances.html#gkqcw[To Delete an Instance Centrally]
* link:instances.html#gkqed[To Delete an Instance Locally]
* link:../reference-manual/delete-node-ssh.html#GSRFM00100[`delete-node-ssh`(1)]
* link:../reference-manual/list-nodes-ssh.html#GSRFM00189[`list-nodes-ssh`(1)]

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

* `asadmin help delete-node-ssh`
* `asadmin help list-nodes-ssh`

[[gkrnp]][[GSHAG00181]][[creating-listing-and-deleting-config-nodes]]

Creating, Listing, and Deleting `CONFIG` Nodes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

A `CONFIG` node does not support remote communication. If neither DCOM
nor SSH is set up and you plan to administer your instances locally, the
instances can reside on `CONFIG` nodes. You cannot use `CONFIG` nodes
for instances that you plan to administer centrally.

GlassFish Server enables you to create `CONFIG` nodes for use by
instances, obtain information about `CONFIG` nodes, and delete `CONFIG`
nodes that are no longer required.

The following topics are addressed here:

* link:#gkrll[To Create a `CONFIG` Node]
* link:#gkrjr[To List `CONFIG` Nodes in a Domain]
* link:#gkrms[To Delete a `CONFIG` Node]

[[gkrll]][[GSHAG00092]][[to-create-a-config-node]]

To Create a `CONFIG` Node
^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `create-node-config` command in remote mode to create a `CONFIG`
node.


[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

If you create an instance locally on a host for which no nodes are
defined, you can create the instance without creating a node beforehand.
In this situation, GlassFish Server creates a `CONFIG` node for you. The
name of the node is the unqualified name of the host. For more
information, see link:instances.html#gkqbl[To Create an Instance
Locally].

|=======================================================================


1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `create-node-config` subcommand. +

[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

Only the options that are required to complete this task are provided in
this step. For information about all the options for configuring the
node, see the link:../reference-manual/create-node-config.html#GSRFM00047[`create-node-config`(1)] help page.

|=======================================================================

[source,oac_no_warn]
----
asadmin> create-node-config [--nodehost node-host] [--installdir install-dir ]
node-name
----
node-host::
  The name of the host that the node represents. You may omit this
  option. The name of the host can be determined when instances that
  reside on the node are created.
install-dir::
  The full path to the parent of the base installation directory of the
  GlassFish Server software on the host, for example,
  `/export/glassfish3/`. You may omit this option. The installation
  directory can be determined when instances that reside on the node are
  created.
node-name::
  Your choice of name for the node that you are creating.

[[GSHAG00025]][[gkshu]]


Example 3-11 Creating a `CONFIG` Node

This example creates the `CONFIG` node `cfg01`. The host that the node
represents and the installation directory of the GlassFish Server
software on the host are to be determined when instances are added to
the node.

[source,oac_no_warn]
----
asadmin> create-node-config cfg01
Command create-node-config executed successfully.
----

[[GSHAG356]]

See Also

link:../reference-manual/create-node-config.html#GSRFM00047[`create-node-config`(1)]

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

[[GSHAG357]]

Next Steps

After creating a node, you can create instances on the node as explained
in link:instances.html#gkqbl[To Create an Instance Locally].

[[gkrjr]][[GSHAG00093]][[to-list-config-nodes-in-a-domain]]

To List `CONFIG` Nodes in a Domain
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `list-nodes-config` subcommand in remote mode to obtain
information about existing `CONFIG` nodes in a domain.


[width="100%",cols="<100%",]
|=======================================================================
a|
Note:

To obtain information about all existing nodes in a domain, use the
link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`] subcommand.

|=======================================================================


1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the link:../reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`] subcommand. +
[source,oac_no_warn]
----
asadmin> list-nodes-config
----

[[GSHAG00026]][[gkskp]]


Example 3-12 Listing Basic Information About All `CONFIG` Nodes in a
Domain

This example lists the name, type, and host of all `CONFIG` nodes in the
current domain.

[source,oac_no_warn]
----
asadmin> list-nodes-config
localhost-domain1  CONFIG  localhost
cfg01  CONFIG  cfg01.example.com
cfg02  CONFIG  cfg02.example.com
Command list-nodes-config executed successfully.
----

[[GSHAG00027]][[gksjs]]


Example 3-13 Listing Detailed Information About All `CONFIG` Nodes in a
Domain

This example lists detailed information about all `CONFIG` nodes in the
current domain.

[source,oac_no_warn]
----
asadmin> list-nodes-config --long=true
NODE NAME           TYPE     NODE HOST            INSTALL DIRECTORY    REFERENCED BY
localhost-domain1   CONFIG   localhost            /export/glassfish3
cfg01               CONFIG   cfg01.example.com    /export/glassfish3   yml-i1
cfg02               CONFIG   cfg02.example.com    /export/glassfish3   yml-i2
Command list-nodes-config executed successfully.
----

[[GSHAG358]]

See Also

* link:../reference-manual/list-nodes.html#GSRFM00187[`list-nodes`(1)]
* link:../reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`(1)]

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

* `asadmin help list-nodes`
* `asadmin help list-nodes-config`

[[gkrms]][[GSHAG00094]][[to-delete-a-config-node]]

To Delete a `CONFIG` Node
^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `delete-node-config` subcommand in remote mode to delete a
`CONFIG` node.

Deleting a node removes the node from the configuration of the DAS. The
node's directories and files are deleted when the last GlassFish Server
instance that resides on the node is deleted.

[[GSHAG359]]

Before You Begin

Ensure that no GlassFish Server instances reside on the node that you
are deleting. For information about how to delete an instance that
resides on a `CONFIG` node, see link:instances.html#gkqed[To Delete an
Instance Locally].

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Confirm that no instances reside on the node that you are deleting. +
[source,oac_no_warn]
----
asadmin> list-nodes-config --long=true
----
3.  Run the olink:GSRFM00099[`delete-node-config`] subcommand. +
[source,oac_no_warn]
----
asadmin> delete-node-config node-name
----
node-name::
  The name of the node that you are deleting.

[[GSHAG00028]][[gksla]]


Example 3-14 Deleting a `CONFIG` Node

This example confirms that no instances reside on the `CONFIG` node
`cfg01` and deletes the node `cfg01`.

[source,oac_no_warn]
----
asadmin> list-nodes-config --long=true
NODE NAME           TYPE     NODE HOST           INSTALL DIRECTORY    REFERENCED BY
localhost-domain1   CONFIG   localhost           /export/glassfish3
cfg01               CONFIG   cfg01.example.com   /export/glassfish3
cfg02               CONFIG   cfg02.example.com   /export/glassfish3   yml-i2
Command list-nodes-config executed successfully.
asadmin> delete-node-config cfg01
Command delete-node-config executed successfully.
----

[[GSHAG360]]

See Also

* link:instances.html#gkqed[To Delete an Instance Locally]
* link:../reference-manual/delete-node-config.html#GSRFM00099[`delete-node-config`(1)]
* link:../reference-manual/list-nodes-config.html#GSRFM00188[`list-nodes-config`(1)]

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

* `asadmin help delete-node-config`
* `asadmin help list-nodes-config`

[[gksjd]][[GSHAG00182]][[updating-and-changing-the-type-of-a-node]]

Updating and Changing the Type of a Node
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server enables you to update the configuration data of any
node and to change the type of a node.

The following topics are addressed here:

* link:#CHDHHAAE[To Update a `DCOM` Node]
* link:#gksjq[To Update an `SSH` Node]
* link:#gksjv[To Update a `CONFIG` Node]
* link:#gkski[To Change the Type of a Node]

[[CHDHHAAE]][[GSHAG481]][[to-update-a-dcom-node]]

To Update a `DCOM` Node
^^^^^^^^^^^^^^^^^^^^^^^

Use the `update-node-dcom` subcommand in remote mode to update a `DCOM`
node.

Options of this subcommand specify the new values of the node's
configuration data. If you omit an option, the existing value is
unchanged.

[[GSHAG482]]

Before You Begin

Ensure that the following prerequisites are met:

* DCOM is configured on the host where the DAS is running and on the
host that the node represents.
* The node that you are updating exists.

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `update-node-dcom` subcommand. +
[source,oac_no_warn]
----
asadmin> update-node-dcom options node-name
----
options::
  Options of the `update-node-dcom` subcommand for changing the node's
  configuration data. For information about these options, see the
  link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)] help page.
node-name::
  The name of the `DCOM` node to update.

[[GSHAG483]][[sthref18]]


Example 3-15 Updating a `DCOM` Node

This example updates the host that the node `wpmdl1` represents to
`wj01`.

[source,oac_no_warn]
----
asadmin> update-node-dcom --nodehost wj01 wpmdl1
Command update-node-dcom executed successfully.
----

[[GSHAG484]]

See Also

link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)]

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

[[gksjq]][[GSHAG00095]][[to-update-an-ssh-node]]

To Update an `SSH` Node
^^^^^^^^^^^^^^^^^^^^^^^

Use the `update-node-ssh` subcommand in remote mode to update an `SSH`
node.

Options of this subcommand specify the new values of the node's
configuration data. If you omit an option, the existing value is
unchanged.

[[GSHAG361]]

Before You Begin

Ensure that the following prerequisites are met:

* SSH is configured on the host where the DAS is running and on the host
that the node represents.
* The node that you are updating exists.

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `update-node-ssh` subcommand. +
[source,oac_no_warn]
----
asadmin> update-node-ssh options node-name
----
options::
  Options of the `update-node-ssh` subcommand for changing the node's
  configuration data. For information about these options, see the
  link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help page.
node-name::
  The name of the `SSH` node to update.

[[GSHAG00029]][[gkslc]]


Example 3-16 Updating an `SSH` Node

This example updates the host that the node `sj01` represents to
`adc01.example.com`.

[source,oac_no_warn]
----
asadmin> update-node-ssh --nodehost adc01.example.com sj01
Command update-node-ssh executed successfully.
----

[[GSHAG362]]

See Also

link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]

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

[[gksjv]][[GSHAG00096]][[to-update-a-config-node]]

To Update a `CONFIG` Node
^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `update-node-config` subcommand in remote mode to update a
`CONFIG` node.

Options of this subcommand specify the new values of the node's
configuration data. If you omit an option, the existing value is
unchanged.

[[GSHAG363]]

Before You Begin

Ensure that the node that you are updating exists.

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the `update-node-config` subcommand. +
[source,oac_no_warn]
----
asadmin> uupdate-node-config options node-name
----
options::
  Options of the `update-node-config` subcommand for changing the node's
  configuration data. For information about these options, see the
  link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
node-name::
  The name of the `CONFIG` node to update.

[[GSHAG00030]][[gkskc]]


Example 3-17 Updating a `CONFIG` Node

This example updates the host that the node `cfg02` represents to
`adc02.example.com`.

[source,oac_no_warn]
----
asadmin> update-node-config --nodehost adc02.example.com cfg02
Command update-node-config executed successfully.
----

[[GSHAG364]]

See Also

link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]

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

[[gkski]][[GSHAG00097]][[to-change-the-type-of-a-node]]

To Change the Type of a Node
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The subcommands for updating a node can also be used to change the type
of a node.

Changing the type of a `CONFIG` node enables remote communication for
the node. The type of the node after the change determines the protocol
over which the node is enabled for remote communication:

* A `DCOM` node is enabled for communication over DCOM.
* An `SSH` node is enabled for communication over SSH.

As part of the process of changing the type of a node, you can also
change other configuration data for the node.

Options of the subcommands for updating a node specify the new values of
the node's configuration data. For most options, if you omit the option,
the existing value is unchanged. However, default values are applied in
the following situations:

* Any of the following options of the `update-node-dcom` subcommand is
omitted:

** `--windowsuser`

** `--windowsdomain`
* Any of the following options of the `update-node-ssh` subcommand is
omitted:

** `--sshport`

** `--sshuser`

** `--sshkeyfile`


[width="100%",cols="<100%",]
|=======================================================================
a|
Caution:

Changing a `DCOM` node or an `SSH` node to a `CONFIG` node disables
remote communication for the node.

|=======================================================================


[[GSHAG365]]

Before You Begin

Ensure that the following prerequisites are met:

* SSH or DCOM is configured on the host where the DAS is running and on
the host that the node represents.
* The node the type of which you are changing exists.

1.  Ensure that the DAS is running. +
Remote subcommands require a running server.
2.  Run the appropriate subcommand for updating a node, depending on the
type of the node after the change.
* To change the type of a node to `DCOM`, run the `update-node-dcom`
subcommand on the node. +
[source,oac_no_warn]
----
asadmin> update-node-dcom [options] config-or-ssh-node-name
----
options::
  Options of the `update-node-dcom` subcommand for changing the node's
  configuration data. For information about these options, see the
  link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)] help page.
config-or-ssh-node-name::
  The name of the `CONFIG` node or the `SSH` node to change.
* To change the type of a node to `SSH`, run the `update-node-ssh`
subcommand on the node. +
[source,oac_no_warn]
----
asadmin> update-node-ssh [options] config-or-dcom-node-name
----
options::
  Options of the `update-node-ssh` subcommand for changing the node's
  configuration data. For information about these options, see the
  link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)] help page.
config-or-dcom-node-name::
  The name of the `CONFIG` node or the `DCOM` node to change.
* To change the type of a node to `CONFIG`, run the `update-node-config`
subcommand on the node. +
[source,oac_no_warn]
----
asadmin> update-node-config [options] dcom-or-ssh-node-name
----
options::
  Options of the `update-node-config` subcommand for changing the node's
  configuration data. For information about these options, see the
  link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)] help page.
dcom-or-ssh-node-name::
  The name of the `DCOM` node or the `SSH` node to change.

[[GSHAG00031]][[gkshw]]


Example 3-18 Changing a `CONFIG` Node to an `SSH` Node

This example changes the `CONFIG` node `cfg02` to an `SSH` node.

[source,oac_no_warn]
----
asadmin> update-node-ssh cfg02
Command update-node-ssh executed successfully.
----

[[GSHAG366]]

See Also

* link:../reference-manual/update-node-config.html#GSRFM00255[`update-node-config`(1)]
* link:../reference-manual/update-node-ssh.html#GSRFM789[`update-node-dcom`(1)]
* link:../reference-manual/update-node-ssh001.html#GSRFM00256[`update-node-ssh`(1)]

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

* `asadmin help update-node-config`
* `asadmin help update-node-dcom`
* `asadmin help update-node-ssh`
