type=page
status=published
title=ping-node-dcom
next=ping-node-ssh.html
prev=ping-connection-pool.html
~~~~~~

ping-node-dcom
==============

[[ping-node-dcom-1]][[GSRFM728]][[ping-node-dcom]]

ping-node-dcom
--------------

Tests if a node that is enabled for communication over DCOM is usable

[[sthref1934]]

=== Synopsis

[source]
----
asadmin [asadmin-options] ping-node-dcom [--help]
[--validate={false|true}] node-name
----

[[sthref1935]]

=== Description

The `ping-node-dcom` subcommand tests if a node that is enabled for
communication over the Distributed Component Object Model (DCOM) remote
protocol is usable. The DCOM protocol is available only on Windows
systems. This subcommand requires DCOM to be configured on the machine
where the domain administration server (DAS) is running and on the
machine where the node resides. You may run this command from any
machine that can contact the DAS.

If the node is usable, the subcommand displays a confirmation that the
subcommand could connect to the node through DCOM. This confirmation
includes the name of the host that the node represents.

Optionally, the subcommand can also validate the node to determine if
the link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility can run on the
host that the node represents. To validate a node, the subcommand runs
the link:version.html#version-1[`version`(1)] subcommand. If the node is
valid, the subcommand displays the version that the `version` subcommand
returns.

The node that is specified as the operand of this subcommand must be
enabled for communication over DCOM. If the node is not enabled for
communication over DCOM, an error occurs. To determine whether a node is
enabled for communication over DCOM, use the
link:list-nodes.html#list-nodes-1[`list-nodes`(1)] subcommand.


[NOTE]
====
To test whether a node that is enabled for communication over secure
shell (SSH) is usable, use the
link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)] subcommand.
====


This subcommand is supported in remote mode only.

[[sthref1936]]

=== 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.
`--validate`::
  Specifies whether the subcommand validates the node.
  Possible values are as follows:

  `true`;;
    The node is validated.
  `false`;;
    The node is not validated (default).

[[sthref1937]]

=== Operands

node-name::
  The name of the node to test. The node must be enabled for
  communication over DCOM. Otherwise, an error occurs.

[[sthref1938]]

=== Examples

[[GSRFM729]][[sthref1939]]

==== Example 1   Testing if a DCOM-Enabled Node Is Usable

This example tests if the DCOM-enabled node `wpmd2` is usable.

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

[[GSRFM730]][[sthref1940]]

==== Example 2   Validating a DCOM-Enabled Node

This example validates the DCOM-enabled node `adc-node`.

[source]
----
asadmin> ping-node-dcom --validate=true adc-node
Successfully made DCOM connection to node adc-node (adc-node.example.com)
GlassFish version found at C:\glassfish3:
Using locally retrieved version string from version class.
Version = GlassFish Server Open Source Edition 3.1.2 (build 18)
Command version executed successfully.
Command ping-node-dcom executed successfully.
----

[[sthref1941]]

=== Exit Status

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

[[sthref1942]]

=== See Also

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

link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
link:list-nodes.html#list-nodes-1[`list-nodes`(1)],
link:ping-node-ssh.html#ping-node-ssh-1[`ping-node-ssh`(1)],
link:update-node-ssh.html#update-node-dcom-1[`update-node-dcom`(1)],
link:validate-dcom.html#validate-dcom-1[`validate-dcom`(1)],
link:version.html#version-1[`version`(1)]


