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

= update-node-dcom

[[update-node-dcom-1]][[GSRFM789]][[update-node-dcom]]

== update-node-dcom

Updates the configuration data of a node

[[sthref2290]]

=== Synopsis

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

[[sthref2291]]

=== Description

The `update-node-dcom` subcommand updates the configuration data of a
node. This subcommand requires the Distributed Component Object Model
(DCOM) remote protocol to be configured on the host where the domain
administration server (DAS) is running and on the host where the node
resides. The DCOM protocol is available only on Windows systems.You may
run this subcommand from any host that can contact the DAS.

This subcommand can update any node, regardless of whether the node is
enabled for remote communication. If the node is not enabled for remote
communication, the subcommand enables DCOM communication for the node
and updates any other specified configuration data.

Options of this subcommand specify the new values of the node's
configuration data. The default for most options is to leave the
existing value unchanged. However, if this subcommand is run to enable
DCOM communication for a node, default values are applied if any of the
following options is omitted:

* `--windowsuser`
* `--windowsdomain`

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

This subcommand is supported in remote mode only.

[[sthref2292]]

=== 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 is to represent after the node is
  updated.
`--installdir`::
  The full path to the parent of the base installation directory of the
  {productName} software on the host, for example,   `/export/glassfish7/`.
`--nodedir`::
  The path to the directory that is to contain {productName}
  instances that are created on the node. If a relative path is
  specified, the path is relative to the as-install directory, where
  as-install is the base installation directory of the {productName}
  software on the host.
`--windowsuser`::
`-w`::
  The user on this node's host that is to run the process for connecting
  to the host through DCOM. The default depends on whether this
  subcommand is run to enable DCOM communication for the node:

  * If the node is already enabled for communication over DCOM, the
    default is to leave the user unchanged.
  * If this subcommand is run to enable DCOM communication for the node,
    the default is the user that is running the DAS process.

+
If the `--nodehost` option is set to `localhost`, the `--windowsuser`
  option is ignored.
`--windowsdomain`::
`-d`::
  The name of the Windows domain that contains the user that the
  `--windowsuser` option specifies. The default depends on whether this
  subcommand is run to enable DCOM communication for the node:

  * If the node is already enabled for communication over DCOM, the
  default is to leave the domain unchanged.
  * If this subcommand is run to enable DCOM communication for the node,
  the default is the name of the host on which the subcommand is run.

`--force`::
  Specifies whether the node is updated 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 updated if validation of the node's parameters fails
    (default).
  `true`;;
    The node is updated even if validation of the node's parameters
    fails.

[[sthref2293]]

=== Operands

node-name::
  The name of the node to update. The node must exist. Otherwise, an
  error occurs.

[[sthref2294]]

=== Examples

[[GSRFM790]][[sthref2295]]

==== Example 1   Updating the Host That a Node Represents

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

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

[[GSRFM791]][[sthref2296]]

==== Example 2   Forcing the Update of a Node

This example forces the update of the node `xkyd` to enable the node to
communicate over DCOM.

[source]
----
asadmin> update-node-dcom --force xkyd
Warning: some parameters appear to be invalid.
Could not find a remote Glassfish installation on host: xkyd.example.com at
C:\glassfish7\glassfish
Continuing with node update due to use of --force.
Command update-node-dcom executed successfully.
----

[[sthref2297]]

=== Exit Status

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

[[sthref2298]]

=== 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-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
link:install-node.html#install-node-1[`install-node`(1)],
link:install-node-dcom.html#install-node-dcom-1[`install-node-dcom`(1)],
link:install-node-ssh.html#install-node-ssh-1[`install-node-ssh`(1)],
link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
link:uninstall-node.html#uninstall-node-1[`uninstall-node`(1)],
link:uninstall-node-dcom.html#uninstall-node-dcom-1[`uninstall-node-dcom`(1)],
link:uninstall-node-ssh.html#uninstall-node-ssh-1[`uninstall-node-ssh`(1)],
link:update-node-config.html#update-node-config-1[`update-node-config`(1)],
link:update-node-ssh001.html#update-node-ssh-1[`update-node-ssh`(1)]


