type=page
status=published
title=update-node-dcom
next=update-node-ssh001.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,oac_no_warn]
----
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
  \{product---name} software on the host, for example,
  `/export/glassfish3/`.
`--nodedir`::
  The path to the directory that is to contain \{product---name}
  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 \{product---name}
  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,oac_no_warn]
----
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,oac_no_warn]
----
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:\glassfish3\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)]


