type=page
status=published
title=create-node-dcom
next=create-node-ssh.html
prev=create-node-config.html
~~~~~~

= create-node-dcom

[[create-node-dcom-1]][[GSRFM510]][[create-node-dcom]]

== create-node-dcom

Creates a node that is enabled for communication over DCOM

[[sthref453]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-node-dcom [--help]
--nodehost node-host
[--installdir as-install-parent] [--nodedir node-dir]
[--windowsuser windows-user] [--windowsdomain windows-domain]
[--force={false|true}]
[--install={false|true}] [--archive archive]
node-name
----

[[sthref454]]

=== Description

The `create-node-dcom` subcommand creates a node that is enabled for
communication over the Distributed Component Object Model (DCOM) remote
protocol. The DCOM protocol is available only on Windows systems.

A node represents a host on which the {productName} software is
installed. A node must exist for every host on which {productName}
instances reside.

In a DCOM-enabled network, the domain administration server (DAS)
contacts a node's host through the DCOM connector to manage
{productName} instances that reside on the node. DCOM is used only
for communications between hosts. DCOM is never used for communications
within a single host.

By default, the subcommand fails and the node is not created if the DAS
cannot contact the node's host through DCOM. To force the node to be
created in the DAS configuration even if the host cannot be contacted
through DCOM, set the `--force` option to `true`.

The `create-node-dcom` subcommand cannot create a node that represents
the local host, that is, the host on which the subcommand is run. The
subcommand fails regardless of how the local host is specified, for
example, by using the keyword `localhost`, the Internet Protocol (IP)
address of the host, or the host name.

This subcommand is supported in remote mode only.

[[sthref455]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--nodehost`::
  The name of the host that the node represents. The name of the host
  must be specified. Otherwise, an error occurs.
`--installdir`::
  The full path to the parent of the base installation directory of the
  {productName} software on the host, for example, `C:\glassfish7`.
  The default is the parent of the default base installation directory
  of the {productName} software for the DAS. This default is useful
  only if {productName} is installed in the same location on all
  hosts.
`--nodedir`::
  The path to the directory that is to contain {productName}
  instances that are created on the node. The default is
  as-install`\nodes`, where as-install is the base installation
  directory of the {productName} software on the host. If a relative
  path is specified, the path is relative to the as-install directory.
`--windowsuser`::
`-w`::
  The user on this node's host that is to run the process for connecting
  to the host through DCOM. The default is the user that is running the
  DAS process. If the `--nodehost` option is set to ``localhost-``domain,
  the `--windowsuser` option is ignored
`--windowsdomain`::
`-d`::
  The name of the Windows domain that contains the user that the
  `--windowsuser` option specifies. The default is the name of the host
  on which the subcommand is run.
`--force`::
  Specifies whether the node is created in the DAS configuration even if
  validation of the node's parameters fails. To validate a node's
  parameters, the DAS must be able to contact the node's host through
  DCOM. Possible values are as follows:

  `false`;;
    The node is not created if validation of the node's parameters fails
    (default).
  `true`;;
    The node is created even if validation of the node's parameters
    fails.

`--install`::
  Specifies whether the subcommand shall install the {productName}
  software on the host that the node represents. +
  Possible values are as follows:

  `false`;;
    The subcommand shall not install the {productName} software on
    the host (default).
  `true`;;
    The subcommand shall install the {productName} software on the host.

`--archive`::
  The absolute path to the archive file of the {productName}
  software that is to be installed. If this option is omitted and the
  `--install` is `true`, the subcommand creates a ZIP archive of the
  {productName} software from the installation where this subcommand
  is run. The archive does not contain the `domains` directory or the
  `nodes` directory.

[[sthref456]]

=== Operands

node-name::
  The name of the node. +
  The name must meet the following requirements:

  * The name may contain only ASCII characters.
  * The name must start with a letter, a number, or an underscore.
  * The name may contain only the following characters:
  ** Lowercase letters
  ** Uppercase letters
  ** Numbers
  ** Hyphen
  ** Period
  ** Underscore
  * The name must be unique in the domain and must not be the name of
  another node, a cluster, a named configuration, or a {productName}
  instance.
  * The name must not be `domain`, `server`, or any other keyword that
  is reserved by {productName}.

[[sthref457]]

=== Examples

[[GSRFM511]][[sthref458]]

==== Example 1   Creating a Node

This example creates the node `wpmdl1` for the host
`wpmdl1.example.com`. By default, the parent of the base installation
directory of the {productName} software is `C:\glassfish7`.

[source]
----
asadmin> create-node-dcom
--nodehost wpmdl1.example.com wpmdl1
Command create-node-dcom executed successfully.
----

[[GSRFM829]][[sthref459]]

==== Example 2   Creating a Node With a Specific Installation Directory

This example creates the node `wyml1` for the host `wyml1.example.com`.
The parent of the base installation directory of the {productName}
software on this host is `C:\middleware\glassfish7`.

[source]
----
asadmin> create-node-dcom --installdir C:\middleware\glassfish7
--nodehost wyml1.example.com wyml1
Command create-node-dcom executed successfully.
----

[[GSRFM512]][[sthref460]]

==== Example 3   Forcing the Creation of a Node

This example forces the creation of node `xkyd` for the host
`xkyd.example.com`. The node is created despite the failure of the DAS
to contact the host `xkyd.example.com` to validate the node's
parameters.

[source]
----
asadmin> create-node-dcom --force --nodehost xkyd.example.com xkyd
Warning: some parameters appear to be invalid.
com.sun.enterprise.universal.process.WindowsException: Connection in error
Continuing with node creation due to use of --force.
Command create-node-dcom executed successfully.
----

[[sthref461]]

=== Exit Status

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

[[sthref462]]

=== See Also

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

link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)]


