type=page
status=published
title=General Administration
next=domains.html
prev=part-runtime-admin.html
~~~~~~
General Administration
======================

[[GSADG00005]][[gitya]]


[[general-administration]]
2 General Administration
------------------------

This chapter provides instructions for performing general administration
tasks in the GlassFish Server Open Source Edition 5.0 environment by
using the `asadmin` command-line utility.

The following topics are addressed here:

* link:#giobi[Using the `asadmin` Utility]
* link:#ghcjc[Administering System Properties]
* link:#CHDJBJDA[Using Configuration Modularity]
* link:#gixps[Administering Resources]
* link:#ggocm[Listing Various System Elements]
* link:#gjipx[Using REST Interfaces to Administer GlassFish Server]

Instructions for accomplishing the tasks in this chapter by using the
Administration Console are contained in the Administration Console
online help.

[[giobi]][[GSADG00530]][[using-the-asadmin-utility]]

Using the `asadmin` Utility
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Use the `asadmin` utility to perform administrative tasks for GlassFish
Server from the command line or from a script. You can use this utility
instead of the Administration Console interface.

The following topics are addressed here:

* link:#giwdb[Path to the `asadmin` Utility]
* link:#givvn[`asadmin` Utility Syntax]
* link:#ghvzx[To Run an `asadmin` Utility Subcommand in Single Mode]
* link:#givlw[To Display Help Information for the `asadmin` Utility or a
Subcommand]
* link:#giodz[To Start a Multimode Session]
* link:#givjn[To End a Multimode Session]
* link:#givjd[To Run a Set of `asadmin` Subcommands From a File]
* link:#CACDDHBA[To Run `asadmin` Subcommands in `--detach` Mode]

[[giwdb]][[GSADG00705]][[path-to-the-asadmin-utility]]

Path to the `asadmin` Utility
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The `asadmin` utility is located in the as-install`/bin` directory. To
run the `asadmin` utility without specifying the path, ensure that this
directory is in your path.

[[givvn]][[GSADG00706]][[asadmin-utility-syntax]]

`asadmin` Utility Syntax
^^^^^^^^^^^^^^^^^^^^^^^^

The syntax for running the `asadmin` utility is as follows:

[source,oac_no_warn]
----
asadmin [asadmin-util-options] [subcommand [subcommand-options] [operands]]
----

The replaceable items in this syntax are described in the subsections
that follow. For full details of this syntax, see the
https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[`asadmin`(1M)]
help page.

[[ghvzn]][[GSADG00631]][[subcommands-of-the-asadmin-utility]]

Subcommands of the `asadmin` Utility
++++++++++++++++++++++++++++++++++++

The subcommand identifies the operation or task that you are performing.
Subcommands are case-sensitive. Each subcommand is either a local
subcommand or a remote subcommand.

* A local subcommand can be run without a running domain administration
server (DAS). However, to run the subcommand and have access to the
installation directory and the domain directory, the user must be logged
in to the machine that hosts the domain.
* A remote subcommand is always run by connecting to a DAS and running
the subcommand there. A running DAS is required.

For a list of the subcommands for this release of GlassFish Server, see
Section 1 of the
https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[GlassFish
Server Open Source Edition Reference Manual].

[[ghvyd]][[GSADG00632]][[asadmin-utility-options-and-subcommand-options]]

`asadmin` Utility Options and Subcommand Options
++++++++++++++++++++++++++++++++++++++++++++++++

Options control the behavior of the `asadmin` utility and its
subcommands. Options are case-sensitive.

The `asadmin` utility has the following types of options:

* `asadmin`utility options. These options control the behavior of the
`asadmin` utility, not the subcommand. The `asadmin` utility options may
precede or follow the subcommand, but `asadmin` utility options after
the subcommand are deprecated. All `asadmin` utility options must either
precede or follow the subcommand. If `asadmin` utility options are
specified both before and after the subcommand, an error occurs. For a
description of the `asadmin` utility options, see the
link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`(1M)] help page.
* Subcommand Options. These options control the behavior of the
subcommand, not the `asadmin` utility. Subcommand options must follow
the subcommand. For a description of a subcommand's options, see the
entry for the subcommand in the
https://javaee.github.io/glassfish/doc/5.0/reference-manual.pdf[GlassFish
Server Open Source Edition Reference Manual]. +

[NOTE]
=======================================================================

Not all subcommand options are supported for this release of GlassFish
Server. If you specify an unsupported option, a syntax error does not
occur. Instead, the command runs successfully and the unsupported option
is silently ignored.

=======================================================================


A subcommand option may have the same name as an `asadmin` utility
option, but the effects of the two options are different.

Options have a long form and a short form.

* The short form of an option has a single dash (`-`) followed by a
single character.
* The long form of an option has two dashes (`--`) followed by an option
word.

For example, the short form and the long form of the option for
specifying terse output are as follows:

* Short form: `-t`
* Long form: `--terse`

Most options require argument values, except Boolean options, which
toggle to enable or disable a feature.

[[ghvyj]][[GSADG00633]][[operands-of-asadmin-utility-subcommands]]

Operands of `asadmin` Utility Subcommands
+++++++++++++++++++++++++++++++++++++++++

Operands specify the items on which the subcommand is to act. Operands
must follow the argument values of subcommand options, and are set off
by a space, a tab, or double dashes (`--`). The `asadmin` utility treats
anything that follows the subcommand options and their values as an
operand.

[[ghvzx]][[GSADG00304]][[to-run-an-asadmin-utility-subcommand-in-single-mode]]

To Run an `asadmin` Utility Subcommand in Single Mode
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In single mode, you must type a separate `asadmin` command for each
subcommand that you want to use. After the subcommand has run, you are
returned to the operating system's command shell. Any `asadmin` utility
options must be specified in each separate `asadmin` command that you
run. If you require the same `asadmin` utility options for multiple
subcommands, use the `asadmin` utility in multimode. For more
information, see link:#giodz[To Start a Multimode Session].

1.  In the operating system's command shell, run the `asadmin` utility,
specifying the subcommand.
2.  If necessary, also specify any required `asadmin` utility options,
subcommand options, and operands.

[[GSADG00098]][[giwdr]]


Example 2-1 Running an `asadmin` Utility Subcommand in Single Mode

This example runs the link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`] subcommand
in single mode. In this example, the default values for all options are
used.

The example shows that the application `hello` is deployed on the local
host.

[source,oac_no_warn]
----
asadmin list-applications
hello <web>
Command list-applications executed successfully.
----

[[GSADG00099]][[giwbf]]


Example 2-2 Specifying an `asadmin` Utility Option With a Subcommand in
Single Mode

This example specifies the `--host` `asadmin` utility option with the
`list-applications` subcommand in single mode. In this example, the DAS
is running on the host `srvr1.example.com`.

The example shows that the applications `basic-ezcomp`, `scrumtoys`,
`ejb31-war`, and `automatic-timer-ejb` are deployed on the host
`srvr1.example.com`.

[source,oac_no_warn]
----
asadmin --host srvr1.example.com list-applications
basic-ezcomp <web>
scrumtoys <web>
ejb31-war <ejb, web>
automatic-timer-ejb <ejb>
Command list-applications executed successfully.
----

[[GSADG00100]][[ghvyk]]


Example 2-3 Specifying an `asadmin` Utility Option and a Subcommand
Option in Single Mode

This example specifies the `--host` `asadmin` utility option and the
`--type` subcommand option with the `list-applications` subcommand in
single mode. In this example, the DAS is running on the host
`srvr1.example.com` and applications of type `web` are to be listed.

[source,oac_no_warn]
----
asadmin --host srvr1.example.com list-applications --type web
basic-ezcomp <web>
scrumtoys <web>
ejb31-war <ejb, web>
Command list-applications executed successfully.
----

[[givlw]][[GSADG00305]][[to-display-help-information-for-the-asadmin-utility-or-a-subcommand]]

To Display Help Information for the `asadmin` Utility or a Subcommand
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GlassFish Server provides help information about the syntax, purpose,
and options of the `asadmin` utility and its subcommands. This help
information is written in the style of UNIX platform man pages. This
help information is also available in the link:../reference-manual/toc.html#GSRFM[GlassFish Server
Open Source Edition Reference Manual].

1.  If you are displaying help information for a remote subcommand,
ensure that the server is running. +
Remote subcommands require a running server.
2.  Specify the subcommand of interest as the operand of the `help`
subcommand. +
If you run the `help` subcommand without an operand, help information
for the `asadmin` utility is displayed.

[[GSADG00101]][[giwgs]]


Example 2-4 Displaying Help Information for the `asadmin` Utility

This example displays the help information for the `asadmin` utility.

[source,oac_no_warn]
----
asadmin help
----

[[GSADG00102]][[giusg]]


Example 2-5 Displaying Help Information for an `asadmin` Utility
Subcommand

This example displays the help information for the
`create-jdbc-resource` subcommand.

[source,oac_no_warn]
----
asadmin help create-jdbc-resource
----

[[GSADG800]]

See Also

To display the available subcommands, use the
link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`] subcommand. Local subcommands are
displayed before remote subcommands. If the server is not running, only
local subcommands are displayed.

[[giodz]][[GSADG00306]][[to-start-a-multimode-session]]

To Start a Multimode Session
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The `asadmin` utility can be used in multiple command mode, or
multimode. In multimode, you run the `asadmin` utility once to start a
multimode session. During the session, the `asadmin` utility continues
to accept subcommands until you end the session and return to the
operating system's command shell. Any `asadmin` utility options that you
set for your multimode session are used for all subsequent subcommands
in the session.


[NOTE]
===========================================================

Starting a multimode session does not require a running DAS.

===========================================================


1.  Do one of the following:
* Run the `asadmin` utility without a subcommand.
* Use the link:../reference-manual/multimode.html#GSRFM00213[`multimode`] subcommand.
2.  If necessary, also specify any `asadmin` utility options that will
apply throughout the multimode session.
3.  In a multimode session, the `asadmin>` prompt is displayed on the
command line. You can now type `asadmin` subcommands at this prompt to
administer GlassFish Server.

[[GSADG00103]][[givuq]]


Example 2-6 Starting a Multimode Session With `asadmin` Utility Options

This example starts a multimode session in which the `asadmin` utility
options `--user` and `--passwordfile` are set for the session.

[source,oac_no_warn]
----
asadmin --user admin1 --passwordfile pwd.txt multimode
----

[[GSADG00104]][[giwgh]]


Example 2-7 Starting a Multimode Session by Using the `multimode`
Subcommand

This example uses the `multimode` subcommand to start a multimode
session in which the default `asadmin` utility options are used.

[source,oac_no_warn]
----
asadmin multimode
----

The `asadmin>` prompt is displayed on the command line.

[[GSADG00105]][[ghvzc]]


Example 2-8 Running a Subcommand in a Multimode Session

This example starts a multimode session and runs the `list-domains`
subcommand in the session.

[source,oac_no_warn]
----
asadmin
Enter commands one per "line", ^D to quit
asadmin> list-domains
Name: domain1 Status: Running
Command list-domains executed successfully.
asadmin>
----

[[GSADG801]]

Starting a Multimode Session From Within an Existing Multimode Session

You can start a multimode session from within an existing session by
running the `multimode` subcommand from within the existing session.
After you end the second multimode session, you return to your original
multimode session.

[[GSADG802]]

See Also

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

[[givjn]][[GSADG00307]][[to-end-a-multimode-session]]

To End a Multimode Session
^^^^^^^^^^^^^^^^^^^^^^^^^^

At the `asadmin>` prompt, type one of the following commands or key
combinations:

* `exit`
* `quit`
* UNIX and Linux systems: Ctrl-D
* Windows systems: Ctrl-Z


[CAUTION]
=======================================================================

Do not type Ctrl-C to end a multimode session. If a domain or GlassFish
Server instance is started from the multimode session, typing Ctrl-C
kills the domain or instance process.

=======================================================================


You are returned to the operating system's command shell and the
`asadmin>` prompt is no longer displayed. If the `asadmin>` prompt is
still displayed, you might have opened a multimode session within a
multimode session. In this situation, repeat this procedure to end the
remaining multimode session.

[[givjd]][[GSADG00308]][[to-run-a-set-of-asadmin-subcommands-from-a-file]]

To Run a Set of `asadmin` Subcommands From a File
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Running a set of `asadmin` subcommands from a file enables you to
automate repetitive tasks.

1.  Create a plain text file that contains the sequence of subcommands
that you want to run.
2.  Run the link:../reference-manual/multimode.html#GSRFM00213[`multimode`] subcommand, specifying the
file that you created. +
If necessary, also specify any `asadmin` utility options that are
required to enable subcommands in the file to run.

[[GSADG00106]][[givul]]


Example 2-9 Running a Set of `asadmin` Subcommands From a File

This example contains the following:

* A listing of a file that is named `commands_file.txt`, which contains
a sequence of `asadmin` subcommands
* The command to run the subcommands in the file `commands_file.txt`

The `commands_file.txt` file contains the `asadmin` utility subcommands
to perform the following sequence of operations:

1.  Creating the domain `customdomain`
2.  Starting the domain `customdomain`
3.  Listing all available subcommands
4.  Stopping the domain `customdomain`
5.  Deleting the domain `customdomain`

The content of the `commands_file.txt` file is as follows:

[source,oac_no_warn]
----
create-domain --portbase 9000 customdomain
start-domain customdomain
list-commands
stop-domain customdomain
delete-domain customdomain
----

This example runs the sequence of subcommands in the `commands_file.txt`
file. Because the `--portbase` option is specified for the
`create-domain` subcommand in the file, the `--port` `asadmin` utility
option must also be set.

[source,oac_no_warn]
----
asadmin --port 9048 multimode --file commands_file.txt
----

[[GSADG803]]

See Also

For more information about the subcommands in the preceding example, see
the following help pages:

* link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`(1)]
* link:../reference-manual/delete-domain.html#GSRFM00075[`delete-domain`(1)]
* link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`(1)]
* link:../reference-manual/multimode.html#GSRFM00213[`multimode`(1)]
* link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`(1)]
* link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`(1)]

[[CACDDHBA]][[GSADG1055]][[to-run-asadmin-subcommands-in---detach-mode]]

To Run `asadmin` Subcommands in `--detach` Mode
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

You can use the `--detach` option of the `asadmin` utility to detach
`asadmin` subcommands and run them in the background in detach mode. The
`asadmin` `--detach` option is useful for long-running subcommands and
enables you to run several independent subcommands from one console or
script.

1.  Ensure that the server is running. +
Remote commands require a running server.
2.  Detach and run the subcommand by using the `asadmin` `--detach`
option.

[[GSADG1056]][[sthref7]]


Example 2-10 Using the `--detach` Option in Single Mode

This example uses the `asadmin` `--detach` option in single mode to run
the `create-cluster` subcommand.

[source,oac_no_warn]
----
asadmin --detach create-cluster Cluster1
Job ID: 1
Command create-cluster started successfully.
----

[[GSADG1057]][[sthref8]]


Example 2-11 Using the `--detach` Option in Multimode

This example uses the `asadmin` `--detach` option in multimode to run
the `create-cluster` subcommand.

[source,oac_no_warn]
----
asadmin> create-cluster Cluster1 --detach
Job ID: 1
Command create-cluster started successfully.
----

Job IDs are assigned to subcommands that are started using the `asadmin`
`--detach` option or that contain progress information. You can use the
`list-jobs` subcommand to list jobs and their job IDs, the `attach`
subcommand to reattach to a job and view its status, and the
`configure-managed-jobs` subcommand to configure how long information
about jobs is kept.

[[GSADG1058]][[sthref9]]


Example 2-12 Listing Jobs

This example runs the `list-jobs` subcommand in multimode to list jobs
and job information.

[source,oac_no_warn]
----
asadmin> list-jobs
JOB ID     COMMAND           STATE       EXIT CODE TIME OF COMPLETION
1          create-cluster    COMPLETED   SUCCESS   2013-02-15 16:16:16 PST
2          deploy            COMPLETED   FAILURE   2013-02-15 18:26:30 PST
Command list-jobs executed successfully
----

[[GSADG1059]][[sthref10]]


Example 2-13 Attaching to a Subcommand and Checking Its Status

This example runs the `attach` subcommand in multimode to attach to the
`create-cluster` subcommand with a job ID of `1`. If a subcommand is
still in progress, the output displays the current status, such as
percentage complete.

[source,oac_no_warn]
----
asadmin> attach 1
Command create-cluster executed with status SUCCESS.
Command attach executed successfully.
----

[[GSADG1060]][[sthref11]]


Example 2-14 Configuring Managed Jobs

This example runs the `configure-managed-jobs` subcommand in multimode
to set the job retention period to 36 hours. Time periods can be
specified in Hh|Mm|Ss for hours, minutes, or seconds.

[source,oac_no_warn]
----
asadmin> configure-managed-jobs --job-retention-period=36h
Command configure-managed-jobs executed successfully.
----

[[GSADG1061]]

See Also

For the full syntax and options of the subcommands in the preceding
examples, see the following help pages:

* link:../reference-manual/attach.html#GSRFM825[`attach`(1)]
* link:../reference-manual/configure-managed-jobs.html#GSRFM836[`configure-managed-jobs`(1)]
* link:../reference-manual/list-jobs.html#GSRFM867[`list-jobs`(1)]

[[ghcjc]][[GSADG00531]][[administering-system-properties]]

Administering System Properties
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Shared server instances will often need to override attributes defined
in their referenced configuration. Any configuration attribute can be
overridden through a system property of the corresponding name.

The following topics are addressed here:

* link:#ggonc[To Create System Properties]
* link:#ggodt[To List System Properties]
* link:#ggomm[To Delete a System Property]

[[ggonc]][[GSADG00309]][[to-create-system-properties]]

To Create System Properties
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `create-system-properties` subcommand in remote mode to create
or update one or more system properties of the domain or configuration.
Any configuration attribute can be overwritten through a system property
of the corresponding name.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  Create system properties by using the
link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`] subcommand. +
Information about properties for the subcommand is included in this help
page.

[[GSADG00107]][[ggovp]]


Example 2-15 Creating a System Property

This example creates a system property associated with
`http-listener-port=1088` on `localhost`.

[source,oac_no_warn]
----
asadmin> create-system-properties http-listener-port=1088
Command create-system-properties executed successfully.
----

[[GSADG804]]

See Also

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

[[ggodt]][[GSADG00310]][[to-list-system-properties]]

To List System Properties
^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `list-system-properties` subcommand in remote mode to list the
system properties that apply to a domain, cluster, or server instance or
configuration.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  List system properties by using the
link:../reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`] subcommand. +
The existing system properties are displayed, including predefined
properties such as `HTTP_LISTENER_PORT` and `HTTP_SSL_LISTENER_PORT`.

[[GSADG00108]][[ggopn]]


Example 2-16 Listing System Properties

This example lists the system properties on host `localhost`.

[source,oac_no_warn]
----
asadmin> list-system-properties
http-listener-port=1088
Command list-system-properties executed successfully.
----

[[GSADG805]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help list-system-properties` at the command line.

[[ggomm]][[GSADG00311]][[to-delete-a-system-property]]

To Delete a System Property
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `delete-system-property` subcommand in remote mode to delete
system properties.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  List the existing system properties by using the
link:../reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`] subcommand.
3.  Delete the system property by using the
link:../reference-manual/delete-system-property.html#GSRFM00110[`delete-system-property`] subcommand.
4.  If necessary, notify users that the system property has been
deleted.

[[GSADG00109]][[ggoph]]


Example 2-17 Deleting a System Property

This example deletes a system property named `http-listener-port` from
`localhost`.

[source,oac_no_warn]
----
asadmin> delete-system-property http-listener-port
Command delete-system-property executed successfully.
----

[[GSADG806]]

See Also

You can also view the full syntax and options of the subcommand by
typing `asadmin help delete-system-property` at the command line.

[[CHDJBJDA]][[GSADG1096]][[using-configuration-modularity]]

Using Configuration Modularity
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

With configuration modularity in GlassFish Server Open Source Edition,
new modules can be added to GlassFish Server distributions without
modifying the global `domain.xml` configuration file. Default
configuration data for modules is stored in the modules themselves,
rather than in `domain.xml`, and loaded when needed.

Module configuration elements are stored in `domain.xml` only when the
default configuration included in the module is changed or when module
configuration elements are added to `domain.xml` using the
`create-module-config` subcommand. The `delete-module-config` subcommand
removes module configuration elements from `domain.xml`, and the
`get-active-module-config` subcommand displays the current active
configuration of a module.

[[CHDGCJCF]][[GSADG1097]][[to-add-the-default-configuration-of-a-module-to-domain.xml]]

To Add the Default Configuration of a Module to `domain.xml`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `create-module-config` subcommand to add the default
configuration of a module to `domain.xml`.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  Add the default configuration of a module to `domain.xml` by using
the link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-module-config`] subcommand.

[[GSADG1098]][[sthref12]]


Example 2-18 Adding Module Configuration to `domain.xml`

This example adds the default configuration of the web container module
to `domain1` in `server-config` (the default configuration). Use the
`--dryrun` option to preview the configuration before it is added.

[source,oac_no_warn]
----
asadmin> create-module-config web-container
Command create-module-config executed successfully.
----

[[GSADG1099]]

See Also

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

[[CHDJCJFA]][[GSADG1100]][[to-remove-the-configuration-of-a-module-from-domain.xml]]

To Remove the Configuration of a Module From `domain.xml`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `delete-module-config` subcommand to remove the configuration of
a module from `domain.xml` and cause the module to use the default
configuration included in the module.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  Remove the configuration of a module from `domain.xml` by using the
link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`delete-module-config`] subcommand.

[[GSADG1101]][[sthref13]]


Example 2-19 Removing Module Configuration From `domain.xml`

This example deletes the configuration of the web container module from
`domain1` in `server-config` (the default configuration).

[source,oac_no_warn]
----
asadmin> delete-module-config web-container
Command delete-module-config executed successfully.
----

[[GSADG1102]]

See Also

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

[[CHDICIJE]][[GSADG1103]][[to-display-the-current-active-configuration-of-a-module]]

To Display the Current Active Configuration of a Module
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `get-active-module-config` subcommand to display the current
active configuration of a module.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  Display the current active configuration of a module by using the
link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`get-active-module-config`] subcommand.

[[GSADG1104]][[sthref14]]


Example 2-20 Displaying the Current Active Configuration of a Module

This example displays the current active configuration of the JMS
service in `server-config` (the default configuration).

[source,oac_no_warn]
----
asadmin> get-active-module-config jms-service
At location: domain/configs/config[server-config]
<jms-service default-jms-host="default_JMS_host" type="EMBEDDED"
  <jms-host port="7676" host="localhost" name="default_JMS_host"/>
</jms-service>
Command get-active-module-config executed successfully.
----

[[GSADG1105]]

See Also

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

[[gixps]][[GSADG00532]][[administering-resources]]

Administering Resources
~~~~~~~~~~~~~~~~~~~~~~~

This section contains instructions for integrating resources into the
GlassFish Server environment. Information about administering specific
resources, such as JDBC, is contained in other chapters.

[[ggoeh]][[GSADG00312]][[to-add-resources-from-an-xml-file]]

To Add Resources From an XML File
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `add-resources` subcommand in remote mode to create the
resources named in the specified XML file. The following resources are
supported: JDBC connection pool and resource, JMS, JNDI, and JavaMail
resources, custom resource, connector resource and work security map,
admin object, and resource adapter configuration.

The XML file must reside in the domain-dir`/config` directory. If you
specify a relative path or simply provide the name of the XML file, this
subcommand will prepend domain-dir`/config` to this operand.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  Add resources from an XML file by using the
link:../reference-manual/add-resources.html#GSRFM00001[`add-resources`] subcommand. +
Information about properties for the subcommand is included in this help
page.
3.  Restart GlassFish Server. +
See link:domains.html#ginqj[To Restart a Domain].

[[GSADG00110]][[ggozc]]


Example 2-21 Adding Resources

This example creates resources using the contents of the `resource.xml`
file on `localhost`.

[source,oac_no_warn]
----
asadmin> add-resources c:\tmp\resource.xml
Command : JDBC resource jdbc1 created successfully.
Command : JDBC connection pool poolA created successfully.
Command add-resources executed successfully.
----

[[GSADG807]]

See Also

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

[[ggocm]][[GSADG00533]][[listing-various-system-elements]]

Listing Various System Elements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following topics are addressed here:

* link:#ghhox[To Display the GlassFish Server Version]
* link:#ggocy[To List Applications]
* link:#ggocv[To List Containers]
* link:#ghlgf[To List Modules]
* link:#ggoeg[To List Subcommands]
* link:#giojd[To List Timers]
* link:#giyjd[To Show Component Status]

[[ghhox]][[GSADG00316]][[to-display-the-glassfish-server-version]]

To Display the GlassFish Server Version
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Use the `version` subcommand in remote mode to display information about
the GlassFish Server version for a particular server. If the subcommand
cannot communicate with the server by using the specified login
(user/password) and target (host/port) information, then the local
version is displayed along with a warning message.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  Display the version by using the link:../reference-manual/version.html#GSRFM00261[`version`]
subcommand.

[[GSADG00114]][[ghjnb]]


Example 2-22 Displaying Version Information

This example displays the version of GlassFish Server on the local host.

[source,oac_no_warn]
----
asadmin> version
Version = Oracle GlassFish Server 3.0.1 (build 19)
Command version executed successfully.
----

[[GSADG811]]

See Also

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

[[ggocy]][[GSADG00317]][[to-list-applications]]

To List Applications
^^^^^^^^^^^^^^^^^^^^

Use the `list-applications` subcommand in remote mode to list the
deployed Java applications. If the `--type` option is not specified, all
applications are listed.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  List applications by using the link:../reference-manual/list-applications.html#GSRFM00148[`list-applications`]
subcommand.

[[GSADG00115]][[ggouk]]


Example 2-23 Listing Applications

This example lists the web applications on `localhost`.

[source,oac_no_warn]
----
asadmin> list-applications --type web
hellojsp <web>
Command list-applications executed successfully.
----

[[GSADG812]]

See Also

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

[[ggocv]][[GSADG00319]][[to-list-containers]]

To List Containers
^^^^^^^^^^^^^^^^^^

Use the `list-containers` subcommand in remote mode to list application
containers.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  List containers by using the link:../reference-manual/list-containers.html#GSRFM00161[`list-containers`]
subcommand.

[[GSADG00116]][[ggown]]


Example 2-24 Listing Containers

This example lists the containers on `localhost`.

[source,oac_no_warn]
----
asadmin> list-containers
List all known application containers
Container : grizzly
Container : ejb
Container : webservices
Container : ear
Container : appclient
Container : connector
Container : jpa
Container : web
Container : security
Container : webbeans
Command list-containers executed successfully.
----

[[GSADG813]]

See Also

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

[[ghlgf]][[GSADG00320]][[to-list-modules]]

To List Modules
^^^^^^^^^^^^^^^

Use the `list-modules` subcommand in remote mode to list the modules
that are accessible to the GlassFish Server module subsystem. The status
of each module is included. Possible statuses include NEW and READY.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  List modules by using the link:../reference-manual/list-modules.html#GSRFM00185[`list-modules`]
subcommand.

[[GSADG00117]][[ghlfw]]


Example 2-25 Listing Modules

This example lists the accessible modules.

[source,oac_no_warn]
----
asadmin> list-modules
----

Information similar to the following is displayed (partial output):

[source,oac_no_warn]
----
List Of Modules
Module : org.glassfish.web.jstl-connector:10.0.0.b28
    properties=(visibility=public,State=READY,Sticky=true)
    Module Characteristics : List of Jars implementing the module
        Jar : file:/C:/Preview/v3_Preview_release/distributions/web/target/glass
fish/modules/web/jstl-connector.jar
    Module Characteristics : List of imported modules
    Module Characteristics : Provides to following services
Module : org.glassfish.admingui.console-common:10.0.0.b28
    properties=(visibility=public,State=NEW,Sticky=true)
Module : org.glassfish.admin.launcher:10.0.0.b28
    properties=(visibility=public,State=NEW,Sticky=true)
Module : org.glassfish.external.commons-codec-repackaged:10.0.0.b28
    properties=(visibility=public,State=NEW,Sticky=true)
Module : com.sun.enterprise.tiger-types-osgi:0.3.32.Preview-b28
    properties=(visibility=public,State=READY,Sticky=true)
    Module Characteristics : List of imported modules
    Module Characteristics : Provides to following services
    Module Characteristics : List of Jars implementing the module
        Jar : file:/C:/Preview/v3_Preview_release/distributions/web/target/glass
fish/modules/tiger-types-osgi.jar.
...
Command list-modules executed successfully.
----

[[GSADG814]]

See Also

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

[[ggoeg]][[GSADG00321]][[to-list-subcommands]]

To List Subcommands
^^^^^^^^^^^^^^^^^^^

Use the `list-commands` subcommand in remote mode to list the deployed
`asadmin` subcommands. You can specify that only remote subcommands or
only local subcommands are listed. By default, this subcommand displays
a list of local subcommands followed by a list of remote subcommands.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  List subcommands by using the link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`]
subcommand.

[[GSADG00118]][[ggpdl]]


Example 2-26 Listing Subcommands

This example lists only local subcommands.

[source,oac_no_warn]
----
asadmin> list-commands --localonly
create-domain
delete-domain
list-commands
list-domains
login
monitor
start-database
start-domain
stop-domain
stop-database
version
Command list-commands executed successfully.
----

[[GSADG815]]

See Also

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

[[giojd]][[GSADG00322]][[to-list-timers]]

To List Timers
^^^^^^^^^^^^^^

The timer service is a persistent and transactional notification service
that is provided by the enterprise bean container and is used to
schedule notifications or events used by enterprise beans. All
enterprise beans except stateful session beans can receive notifications
from the timer service. Persistent timers set by the service are not
destroyed when the server is shut down or restarted.

Use the `list-timers` subcommand in remote mode to list the persistent
timers owned by a specific server instance. You can use this information
to decide whether to do a timer migration, or to verify that a migration
has been completed successfully.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  List timers by using the link:../reference-manual/list-timers.html#GSRFM00205[`list-timers`] subcommand.

[[GSADG00119]][[giojj]]


Example 2-27 Listing Timers

This example lists the timers in a particular standalone server
instance. There is one currently active timer set.

[source,oac_no_warn]
----
asadmin> list-timers server
1
The list-timers command was executed successfully.
----

[[giyjd]][[GSADG00323]][[to-show-component-status]]

To Show Component Status
^^^^^^^^^^^^^^^^^^^^^^^^

Use the `show-component-status` subcommand in remote mode to get the
status (either enabled or disabled) of the specified deployed component.

1.  Ensure that the server is running. +
Remote subcommands require a running server.
2.  Show component status by using the
link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`] subcommand.

[[GSADG00120]][[gjhkk]]


Example 2-28 Showing Status of a Component

This example shows the status of the `MEjbApp` component.

[source,oac_no_warn]
----
asadmin> show-component-status MEjbApp
Status of MEjbApp is enabled
Command show-component-status executed successfully.
----

[[gjipx]][[GSADG00534]][[using-rest-interfaces-to-administer-glassfish-server]]

Using REST Interfaces to Administer GlassFish Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

GlassFish Server provides representational state transfer (REST)
interfaces to enable you to access monitoring and configuration data for
GlassFish Server, including data that is provided by newly installed
add-on components.

You can access the GlassFish Server REST interfaces through client
applications such as:

* Web browsers
* http://curl.haxx.se/[cURL]
* http://www.gnu.org/software/wget/[GNU Wget]

You can also use the GlassFish Server REST interfaces in REST client
applications that are developed in languages such as:

* JavaScript
* Ruby
* Perl
* Java
* JavaFX

The implementation of the GlassFish Server REST interfaces is based on
https://jersey.github.io[project Jersey] . Project Jersey is the
reference implementation of http://jcp.org/en/jsr/summary?id=311[Java
Specification Request (JSR) 311: JAX-RS: The Java API for RESTful Web
Services]. Information about JSR 311 is also available from the JSR
https://javaee.github.io/jsr311/[311 project home page] .

The following topics are addressed here:

* link:#gjipk[Using REST URLs to Administer GlassFish Server]
* link:#gjijx[Using REST Resource Methods to Administer GlassFish
Server]
* link:#gjjdg[Resources for `asadmin` Subcommands That Perform Non-CRUD
Operations]
* link:#gjiut[Securing GlassFish Server REST Interfaces]
* link:#gjijz[Formats for Resource Representation of Configuration
Objects]
* link:#gkwdd[Formats for Resource Representation of Monitoring Objects]
* link:#gkwid[Formats for Resource Representation of Log File Details]
* link:#gkwsq[Supported Content Types in Requests to REST Resources]

[[gjipk]][[GSADG00707]][[using-rest-urls-to-administer-glassfish-server]]

Using REST URLs to Administer GlassFish Server
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Each object in the configuration and monitoring object trees is
represented as a REST resource that is accessible through an HTTP
uniform resource locator (URL). Access to REST resources for GlassFish
Server monitoring and configuration data requires a running DAS.

[[gkwhy]][[GSADG00634]][[rest-urls-to-resources-for-configuration-and-monitoring-objects]]

REST URLs to Resources for Configuration and Monitoring Objects
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

The formats of the URLs to resources that represent objects in the
configuration and monitoring object trees are as follows:

* Configuration: `http://`host`:`port`/management/domain/`path
* Monitoring: `http://`host`:`port`/monitoring/domain/`path

The replaceable items in these URLs are as follows:

host::
  The host where the DAS is running.
port::
  The HTTP port or HTTPS port for administration.
path::
  The path to the object. The path is the dotted name of the object in
  which each dot (`.`) is replaced with a slash (`/`). +

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

The path to a GlassFish Server instance is
`servers/server/`instance-name, where instance-name is the name of the
instance. For the DAS, instance-name is `server` and the path is
`servers/server/server`.

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

  For more information, see the following documentation: +
  * The link:../reference-manual/dotted-names.html#GSRFM00268[`dotted-names`(5ASC)] help page
  * link:monitoring.html#ghbaz[How the Monitoring Tree Structure Works]
  * link:overview.html#giusb[How Dotted Names Work for Configuration]

If the URL to a REST resource for GlassFish Server monitoring or
configuration data is opened in a web browser, the browser displays a
web page that contains the following information about the resource:

* A list of the attributes of the resource and their values. If the
resource represents an object in the configuration tree, these
attributes are presented in an HTML form that you can use to update the
resource. Attributes of a resource for an object in the monitoring tree
are read only.
* A list of hypertext links to the children of the resource. This list
of links enables you to traverse the tree that contains the resource and
to discover the all resources in the tree.
* A list of hypertext links to resources that represent `asadmin`
subcommands for non-CRUD operations on the resource.

The following figure shows the web page for the REST resource for
managing a domain.

[[GSADG00001]][[gjjce]]


.*Figure 2-1 Web Page for the REST Resource for Managing a Domain*
image:img/rest-management.png[
"Screen capture showing the web page for the REST resource for managing a
domain."]


[[gkwib]][[GSADG00635]][[rest-urls-for-accessing-the-log-file]]

REST URLs for Accessing the Log File
++++++++++++++++++++++++++++++++++++

The `server.log` file of the DAS is represented as a child that is named
`view-log` of the resource for managing the domain. A child of the
resource for the `server.log` file represents the log file details

The formats of the URLs to resources that represent the log file are as
follows:

* Log file: `http://`host`:`port`/management/domain/view-log`
* Log file details:
`http://`host`:`port`/monitoring/domain/view-log/details`

The replaceable items in these URLs are as follows:

host::
  The host where the DAS is running.
port::
  The HTTP port or HTTPS port for administration.

You can use the optional `start` parameter in the URL to the resource
for the log file to specify the number of characters at the start of the
file to skip. For example, to skip 10,000 characters, specify the URL as
`http://localhost:4848/management/domain/view-log?start=10000`. This
example assumes that the DAS is running on the local host and uses the
default port for administration.

The resource for the log file returns the HTTP header
`"X-Text-Append-Next"`, which contains the entire URL to pass to the
`GET` method to return the changes since the last call. You can use this
header in client applications to get all log entries that were added in
particular interval. For example, by testing the value of the
`"X-Text-Append-Next"` header in a client thread every 10 seconds, you
can monitor the log entries that were added in the last 10 seconds.

[[gjijx]][[GSADG00708]][[using-rest-resource-methods-to-administer-glassfish-server]]

Using REST Resource Methods to Administer GlassFish Server
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The GlassFish Server REST interfaces support methods for accessing
objects in the monitoring and configuration object trees.

The following table shows the REST methods for administering monitoring
and configuration data and the tasks that you can perform with each
method. These methods are HTTP 1.1 primitives. For the detailed
specification of these primitives, see
http://www.w3.org/Protocols/rfc2616/rfc2616.html[Hypertext Transfer
Protocol -- HTTP/1.1] .

[[GSADG816]][[sthref16]][[gkame]]


Table 2-1 REST Resource Methods for Administering Monitoring and
Configuration Data

[width="100%",cols="74%,26%",options="header",]
|=======================================================================
|Task |REST Method
|Determine the methods and method parameters that an object in the tree
supports |`GET`

|Retrieve data for an object in the tree |`GET`

|Add an object to the tree |`POST`

|Update an object in the tree |`POST`

|Delete an object from the tree |`DELETE`
|=======================================================================



[NOTE]
=======================================================================

REST requests that add, update, or delete objects must specify the
`X-Requested-By` header with the value `GlassFish REST HTML interface`.

The `GET` method determines the methods and method parameters that an
object in the tree supports and provides additional information about
the object. For details, see link:#gjjel[To Retrieve Data for an Object
in the Tree].

=======================================================================


[[gjjei]][[GSADG00324]][[to-determine-the-methods-and-method-parameters-that-an-object-in-the-tree-supports]]

To Determine the Methods and Method Parameters That an Object in the Tree Supports
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

The methods and method parameters that an object in the tree supports
depend on the REST resource that represents the object:

* REST resources for monitoring support only the `GET` method.
* All REST resources for configuration support the `GET` method.
However, only some REST resources for configuration also support the
`POST` method and the `DELETE` method.

Before performing any operations on an object in the tree, determine the
methods and method parameters that the object supports.

You can specify the format in which this information is presented. For
more information, see link:#gjijz[Formats for Resource Representation of
Configuration Objects].


[NOTE]
=======================================================================

Each `POST` method and `DELETE` method that a REST resource supports has
an equivalent `asadmin` subcommand. The parameters of a `POST` method or
a `DELETE` method correspond to the options of the method's equivalent
`asadmin` subcommand. For information about the options of `asadmin`
subcommand, see the olink:GSRFM[GlassFish Server Open Source Edition
Reference Manual].

=======================================================================


1.  Ensure that the server is running. +
Operations on REST resources for GlassFish Server data require a running
server.
2.  Use the `GET` method on the REST resource that represents the
object. +
The `GET` method returns the list of methods that the resource supports.
For each method, the list of acceptable message parameters or the list
of acceptable query parameters are returned.

[[GSADG00121]][[gjjdi]]


Example 2-29 Determining the Methods and Method Parameters That an
Object in the Tree Supports

This example uses the cURL utility to determine the methods and method
parameters that the resource for the node `sj01` supports. The example
uses the following options of the cURL utility:

* `-X` to specify that the `GET` method is used
* `-H` to specify that the resource is represented in JavaScript Object
Notation (JSON)

In this example, the DAS is running on the local host and the HTTP port
for administration is 4848. The resource supports the `GET` method and
the `POST` method.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
curl -X GET -H "Accept: application/json" http://localhost:4848/management/domain/nodes/node/sj01
{
  "command":"Node",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[
      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
      {"path":"_update-node","command":"_update-node","method":"POST"},
      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "installDir":{"optional":"true","type":"string","key":"false"},
        "nodeDir":{"optional":"true","type":"string","key":"false"},
        "nodeHost":{"optional":"true","type":"string","key":"false"},
        "type":{"optional":"true","type":"string","key":"false"}
        }
      }
    ],
    "entity":{
      "installDir":"\/export\/glassfish3",
      "name":"sj01",
      "nodeDir":null,
      "nodeHost":
      "sj01.example.com",
      "type":"SSH"
    },
    "childResources":{
      "application-ref":
        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
      "resource-ref":
        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
      "ssh-connector":
        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
    }
  }
}
----

[[gjjel]][[GSADG00325]][[to-retrieve-data-for-an-object-in-the-tree]]

To Retrieve Data for an Object in the Tree
++++++++++++++++++++++++++++++++++++++++++

Retrieving data for an object in the tree obtains the following
information about the REST resource that represents the object:

* A list of the REST methods that the resource supports
* A list of the attributes of the resource and their values
* A list of URLs to the children of the resource

You can specify the format in which this information is presented. For
more information, see link:#gjijz[Formats for Resource Representation of
Configuration Objects].

1.  Ensure that the server is running. +
Operations on REST resources for GlassFish Server data require a running
server.
2.  Use the `GET` method on the REST resource that represents the
object.

[[GSADG00122]][[gjjed]]


Example 2-30 Retrieving Data for an Object in the Tree

This example uses the cURL utility to retrieve data for the resource for
a the node `sj01`. The example uses the following options of the cURL
utility:

* `-X` to specify that the `GET` method is used
* `-H` to specify that the resource is represented in JavaScript Object
Notation (JSON)

In this example, the DAS is running on the local host and the HTTP port
for administration is 4848.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
curl -X GET -H "Accept: application/json" http://localhost:4848/management/domain/nodes/node/sj01
{
  "command":"Node",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[
      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
      {"path":"_update-node","command":"_update-node","method":"POST"},
      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "installDir":{"optional":"true","type":"string","key":"false"},
        "nodeDir":{"optional":"true","type":"string","key":"false"},
        "nodeHost":{"optional":"true","type":"string","key":"false"},
        "type":{"optional":"true","type":"string","key":"false"}
        }
      }
    ],
    "entity":{
      "installDir":"\/export\/glassfish3",
      "name":"sj01",
      "nodeDir":null,
      "nodeHost":
      "sj01.example.com",
      "type":"SSH"
    },
    "childResources":{
      "application-ref":
        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
      "resource-ref":
        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
      "ssh-connector":
        "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
    }
  }
}
----

[[gjjdv]][[GSADG00326]][[to-add-an-object-to-the-tree]]

To Add an Object to the Tree
++++++++++++++++++++++++++++

1.  Ensure that the server is running. +
Operations on REST resources for GlassFish Server data require a running
server.
2.  Determine the acceptable message parameters for the `POST` method of
the resource that represents the parent of the object. +
For information about how to perform this step, see link:#gjjei[To
Determine the Methods and Method Parameters That an Object in the Tree
Supports].
3.  Use the `POST` method on the REST resource that represents the
parent of the object that you are adding.
4.  Confirm that the object has been added. +
Perform this step on the resource that represents the object that you
have just added, not the parent. For information about how to perform
this step, see link:#gjjel[To Retrieve Data for an Object in the Tree].

[[GSADG00123]][[gjjen]]


Example 2-31 Adding an Object to the Tree

This example uses the cURL utility to add a JDBC resource object to the
tree by creating a REST resource to represent the JDBC resource.

In this example, the DAS is running on the local host and the HTTP port
for administration is 4848.

Line breaks are added to enhance readability.

1.  This step determines the acceptable message parameters for the
`POST` method of the resource `jdbc-resource`. +
[source,oac_no_warn]
----
curl -X GET -H "Accept: application/json" 
http://localhost:4848/management/domain/resources/jdbc-resource
{
  "command":"Jdbc-resource",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "description":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""},
        "enabled":{"acceptableValues":"",optional":"true","type":"boolean",defaultValue":"true"},
        "id":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
        "poolName":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
        "property":{"acceptableValues":"","optional":"true","type":"string","defaultValue":"},
        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
        }
      }
    ],
    "childResources":{
      "jdbc\/__TimerPool":
        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__TimerPool",
      "jdbc\/__default":
        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__default"
    }
  }
}
----
2.  This step adds a resource as a child of the `jdbc-resource`
resource. The `-d` option of the cURL utility sets the required message
parameters as follows:
* `id` is set to `jdbc/myjdbcresource`.
* `connectionpoolid` is set to `DerbyPool`. +
[source,oac_no_warn]
----
curl -X POST -H "X-Requested-By: GlassFish REST HTML interface" 
-d id=jdbc/myjdbcresource -d connectionpoolid=DerbyPool 
http://localhost:4848/management/domain/resources/jdbc-resource
----
3.  This step confirms that the object has been added by retrieving data
for the REST resource that represents the object. +
[source,oac_no_warn]
----
curl -X GET -H "Accept: application/json" 
http://localhost:4848/management/domain/resources/
jdbc-resource/jdbc%2Fmyjdbcresource
{
  "command":"Jdbc-resource",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "description":{"optional":"true","type":"string","key":"false"},
        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
        "jndiName":{"optional":"true","type":"string","key":"true"},
        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
        "poolName":{"optional":"true","type":"string","key":"false"}
        }
      },
      {"name":"DELETE","messageParameters":{
        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
        }
      }
    ],
    "childResources":{
      "property":
        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2Fmyjdbcresource\/property"
    }
  }
}
----

[[gjjgj]][[GSADG00327]][[to-update-an-object-in-the-tree]]

To Update an Object in the Tree
+++++++++++++++++++++++++++++++

1.  Ensure that the server is running. +
Operations on REST resources for GlassFish Server data require a running
server.
2.  Determine the acceptable message parameters for the `POST` method of
the resource that represents the object. +
For information about how to perform this step, see link:#gjjei[To
Determine the Methods and Method Parameters That an Object in the Tree
Supports].
3.  Use the `POST` method on the REST resource that represents the
object that you are updating.
4.  Confirm that the object has been updated. +
For information about how to perform this step, see link:#gjjel[To
Retrieve Data for an Object in the Tree].

[[GSADG00124]][[gjjhd]]


Example 2-32 Updating an Object in the Tree

This example uses the cURL utility to update a JDBC resource in the tree
by modifying the REST resource that represents the JDBC resource.

In this example, the DAS is running on the local host and the HTTP port
for administration is 4848.

Line breaks are added to enhance readability.

1.  This step determines the acceptable message parameters for the
`POST` method of the resource `jdbc-myjdbcresource`. +
[source,oac_no_warn]
----
curl -X OPTIONS -H "Accept: application/json" 
http://localhost:4848/management/domain/resources/
jdbc-resource/jdbc-myjdbcresource
{
  "command":"Jdbc-resource",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "description":{"optional":"true","type":"string","key":"false"},
        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
        "jndiName":{"optional":"true","type":"string","key":"true"},
        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
        "poolName":{"optional":"true","type":"string","key":"false"}
        }
      },
      {"name":"DELETE","messageParameters":{
        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
        }
      }
    ],
    "childResources":{
      "property":
        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2Fmyjdbcresource\/property"
    }
  }
}
----
2.  This step updates the REST resource `jdbc-myjdbcresource` to disable
the JDBC resource that `jdbc-myjdbcresource` represents. The `-d` option
of the cURL utility sets the `enabled` message parameter to `disabled`. +
[source,oac_no_warn]
----
curl -X POST -H "X-Requested-By: GlassFish REST HTML interface" 
-d "enabled=false" http://localhost:4848/management/domain/resources/
jdbc-resource/jdbc%2Fmyjdbcresource
----
3.  This step confirms that the object has been updated by retrieving
data for the REST resource that represents the object. +
[source,oac_no_warn]
----
curl -X GET -H "Accept: application/json" 
http://localhost:4848/management/domain/resources/
jdbc-resource/jdbc%2Fmyjdbcresource
{
  "command":"Jdbc-resource",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "description":{"optional":"true","type":"string","key":"false"},
        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
        "jndiName":{"optional":"true","type":"string","key":"true"},
        "objectType":{"optional":"true","type":"string","defaultValue":
        "user","key":"false"},
        "poolName":{"optional":"true","type":"string","key":"false"}
        }
      },
      {"name":"DELETE","messageParameters":{
        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
        }
      }
    ],
  "entity":{
    "description":null,
    "enabled":"false",
    "jndiName":"jdbc\/myjdbcresource",
    "objectType":
    "user",
    "poolName":"DerbyPool"
  },
  "childResources":{
    "property":
      "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/
       jdbc%2Fmyjdbcresource\/property"
    }
  }
}
----

[[gjjgm]][[GSADG00328]][[to-delete-an-object-from-the-tree]]

To Delete an Object From the Tree
+++++++++++++++++++++++++++++++++

1.  Ensure that the server is running. +
Operations on REST resources for GlassFish Server data require a running
server.
2.  Confirm that the object can be deleted. +
For information about how to perform this step, see link:#gjjei[To
Determine the Methods and Method Parameters That an Object in the Tree
Supports].
3.  Confirm that the object has been deleted. +
Perform this step on the resource that represents the parent of the
object that you have just deleted. For information about how to perform
this step, see link:#gjjel[To Retrieve Data for an Object in the Tree].

[[GSADG00125]][[gjjgp]]


Example 2-33 Deleting an Object From the Tree

This example uses the cURL utility to delete a JDBC resource from the
tree by deleting the REST resource that represents the JDBC resource.

In this example, the DAS is running on the local host and the HTTP port
for administration is 4848.

Line breaks and white space are added to enhance readability.

1.  This step confirms that the object can be deleted by retrieving the
REST methods that the resource `jdbc-myjdbcresource` supports. +
[source,oac_no_warn]
----
curl -X GET -H "Accept: application/json" 
http://localhost:4848/management/domain/resources/
jdbc-resource/jdbc%2Fmyjdbcresource
{
  "command":"Jdbc-resource",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "description":{"optional":"true","type":"string","key":"false"},
        "enabled":{"optional":"true","type":"boolean","defaultValue":"true","key":"false"},
        "jndiName":{"optional":"true","type":"string","key":"true"},
        "objectType":{"optional":"true","type":"string","defaultValue":"user","key":"false"},
        "poolName":{"optional":"true","type":"string","key":"false"}
        }
      },
      {"name":"DELETE","messageParameters":{
        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
        }
      }
    ],
    "childResources":{
      "property":
        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/
        jdbc%2Fmyjdbcresource\/property"
    }
  }
}
----
2.  This step deletes the `jdbc/myjdbcresource` resource. +
[source,oac_no_warn]
----
curl -X DELETE -H "X-Requested-By: GlassFish REST HTML interface" 
http://localhost:4848/management/domain/resources/
jdbc-resource/jdbc%2Fmyjdbcresource
----
3.  This step confirms that the object has been deleted by retrieving
data for the REST resource that represents the parent of the object. +
[source,oac_no_warn]
----
curl -X GET -H "Accept: application/json" 
http://localhost:4848/management/domain/resources/jdbc-resource
{
  "command":"Jdbc-resource",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "description":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""},
        "enabled":{"acceptableValues":"",optional":"true","type":"boolean",defaultValue":"true"},
        "id":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
        "poolName":{"acceptableValues":"","optional":"false","type":"string","defaultValue":""},
        "property":{"acceptableValues":"","optional":"true","type":"string","defaultValue":"},
        "target":{"acceptableValues":"","optional":"true","type":"string","defaultValue":""}
        }
      }
    ],
    "childResources":{
      "jdbc\/__TimerPool":
        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__TimerPool",
      "jdbc\/__default":
        "https:\/\/localhost:4848\/management\/domain\/resources\/jdbc-resource\/jdbc%2F__default"
    }
  }
}
----

[[gjjdg]][[GSADG00709]][[resources-for-asadmin-subcommands-that-perform-non-crud-operations]]

Resources for `asadmin` Subcommands That Perform Non-CRUD Operations
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The GlassFish Server REST interfaces also support operations other than
create, read, update, and delete (CRUD) operations, for example:

* State management
* Queries
* Application deployment

These operations are supported through REST resources that represent the
`asadmin` subcommands for performing these operations. Each resource is
a child of the resource on which the operation is performed. The child
resources do not represent objects in the configuration object tree.

For example, the resource that represents a node provides child
resources for the following `asadmin` subcommands that perform non-CRUD
operations on the node:

* `ping-node-ssh`
* `update-node-config`
* `update-node-ssh`

[[gjiut]][[GSADG00710]][[securing-glassfish-server-rest-interfaces]]

Securing GlassFish Server REST Interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The GlassFish Server REST interfaces support the following
authentication schemes for securing the REST interfaces:

* Basic authentication over a secure connection
* Authentication by using session tokens

When security is enabled, you must specify `https` as the protocol in
the URLs to REST resources and provide a user name and password.

[[GSADG817]][[sthref17]]


[[setting-up-basic-authentication-over-a-secure-connection]]
Setting Up Basic Authentication Over a Secure Connection
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Setting up basic authentication over a secure connection to secure
GlassFish Server REST interfaces involves the following sequence of
tasks:

1.  Adding an `admin-realm` user to the `asadmin` user group
2.  Enabling Secure Sockets Layer (SSL)

For information about how to perform these tasks from the command line,
see the following documentation:

* "link:../security-guide/user-security.html#GSSCG00110[To Create an Authentication Realm]" in GlassFish
Server Open Source Edition Security Guide
* "link:../security-guide/user-security.html#GSSCG00118[To Create a File User]" in GlassFish Server Open
Source Edition Security Guide
* link:http_https.html#ggnbj[To Configure an HTTP Listener for SSL]

For information about how to perform these tasks by using the
Administration Console, see the following topics in the Administration
Console online help:

* To Add a User to the Admin Realm
* To Edit SSL Settings for a Protocol

[[gkvtj]][[GSADG00329]][[to-secure-rest-interfaces-by-using-session-tokens]]

To Secure REST Interfaces by Using Session Tokens
+++++++++++++++++++++++++++++++++++++++++++++++++

Basic authentication requires a REST client to cache a user's
credentials to enable the client to pass the credentials with each
request. If you require a REST client not to cache credentials, your
client must use session tokens for authentication.

1.  Request a session token by using the `GET` method on the resource at
`http://`host`:`port`/management/sessions`. +
GlassFish Server uses basic authentication to authenticate the client,
generates a session token, and passes the token to the client.
2.  In each subsequent request that requires authentication, use the
token to authenticate the client.
1.  Create a cookie that is named `gfresttoken` the value of which is
the token.
2.  Send the cookie with the request.
3.  When the token is no longer required, retire the token by using the
`DELETE` method on the resource at
`http://`host`:`port`/management/sessions/{`tokenvalue`}`. +

[NOTE]
=======================================================================

If a client does not explicitly retire a token, the token is retired
after 30 minutes of inactivity.

=======================================================================


[[gjijz]][[GSADG00711]][[formats-for-resource-representation-of-configuration-objects]]

Formats for Resource Representation of Configuration Objects
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The GlassFish Server REST interfaces represent resources for
configuration objects in the following formats:

* http://www.json.org/[JSON]
* XML
* HTML

GlassFish Server enables you to specify the resource representation
through the filename extension in the URL or through the HTTP header:

* To specify the resource representation through the filename extension
in the URL, specify the appropriate extension as follows:

** For JSON, specify the `.json` extension.

** For XML, specify the `.xml` extension.

** For HTML, omit the extension.
* How to specify the resource representation through the HTTP header
depends on the client that you are using to access the resource. For
example, if you are using the cURL utility, specify the resource
representation through the `-H` option as follows:

** For JSON, specify `-H "Accept: application/json"`.

** For XML, specify `-H "Accept: application/xml"`.

** For HTML, omit the `-H` option.

[[gjiji]][[GSADG00636]][[json-resource-representation-for-configuration-objects]]

JSON Resource Representation for Configuration Objects
++++++++++++++++++++++++++++++++++++++++++++++++++++++

The general format for the JSON representation of a resource for a
configuration object is as follows:

[source,oac_no_warn]
----
{
  "command":"resource",
  "exit_code":"code",
  "extraProperties":{
    "commands":[command-list],
    "methods":[method-list],
    "entity":{attributes},
    "childResources":{children}
  }
}
----

The replaceable items in this format are as follows:

resource::
  The name of the resource.
code::
  The result of the attempt to get the resource.
command-list::
  One or more metadata sets separated by a comma (`,`) that represent
  the `asadmin` subcommands for performing non—CRUD operations on the
  resource. For the format of each metadata set, see link:#gkvyr[JSON
  Representation of a Command in a Command List].
method-list::
  One or more metadata sets separated by a comma (`,`) that represent
  the methods that the resource supports. For the format of each
  metadata set, see link:#gjjas[JSON Representation of a Method in a
  Method List].
attributes::
  Zero or more name-value pairs separated by a comma (`,`). Each
  name-value pair is specified as `"`name`":`value.
children::
  Zero or more child resources separated by a comma (`,`). Each child
  resource is specified as "resource-name":"url". +
  resource-name;;
    The name of the resource as displayed in client applications that
    access the parent of the resource.
  url;;
    The URL to the child resource.

[[gkvyr]][[GSADG00024]][[json-representation-of-a-command-in-a-command-list]]

JSON Representation of a Command in a Command List

The JSON representation of a command in a command list is as follows:

[source,oac_no_warn]
----
{
  "path":"command-path",
  "command":"command-name",
  "method":"rest-method"
}
----

The replaceable items in this format are as follows:

command-path::
  The relative path to REST resource that represents the command. This
  path is relative to the URL of the REST resource that is the parent of
  the resource that represents the command.
command-name::
  The name of the command as displayed in client applications that
  access the resource.
rest-method::
  The REST resource method that the command invokes when the command is
  run. The method is `GET`, `POST`, or `DELETE`.

[[gjjas]][[GSADG00025]][[json-representation-of-a-method-in-a-method-list]]

JSON Representation of a Method in a Method List

The JSON representation of a method in a method list is as follows:

[source,oac_no_warn]
----
{
    "name":"method-name",
    "messageParameters":{
        message-parameter-list
    }
    "queryParameters":{
        queryparameter- list
    }
}
----

The replaceable items in this format are as follows:

method-name::
  The name of the method, which is `GET`, `POST`, or `DELETE`.
message-parameter-list::
  Zero or more metadata sets separated by a comma (`,`) that represent
  the message parameters that are allowed for the method. For the format
  of each metadata set, see link:#gjjbb[JSON Representation of a Message
  Parameter or a Query Parameter].
query-parameter-list::
  Zero or more metadata sets separated by a comma (`,`) that represent
  the query parameters that are allowed for the method. For the format
  of each metadata set, see link:#gjjbb[JSON Representation of a Message
  Parameter or a Query Parameter].

[[gjjbb]][[GSADG00026]][[json-representation-of-a-message-parameter-or-a-query-parameter]]

JSON Representation of a Message Parameter or a Query Parameter

The JSON representation of a message parameter or a query parameter is
as follows:

[source,oac_no_warn]
----
"parameter-name":{attribute-list}
----

The replaceable items in this format are as follows:

parameter-name::
  The name of the parameter.
attribute-list::
  A comma-separated list of name-value pairs of attributes for the
  parameter. Each pair is in the following format: +
[source,oac_no_warn]
----
"name":"value"
----
::
  Possible attributes are as follows: +
  `defaultValue`;;
    The default value of the parameter.
  `acceptableValues`;;
    The set or range of acceptable values for the parameter.
  `type`;;
    The data type of the parameter, which is one of the following types: +
    * `boolean`
    * `int`
    * `string`
  `optional`;;
    Indicates whether the parameter is optional. If `true`, the
    parameter is optional. If `false`, the parameter is required.
  `key`;;
    Indicates whether the parameter is key. If `true`, the parameter is
    key. If `false`, the parameter is not key.

[[gjjgg]][[GSADG00027]][[example-json-resource-representation-for-a-configuration-object]]

Example JSON Resource Representation for a Configuration Object

This example shows the JSON representation of the resource for the node
`sj01`. In this example, the DAS is running on the local host and the
HTTP port for administration is 4848. The URL to the resource in this
example is `http://localhost:4848/management/domain/nodes/node/sj01`.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
{
  "command":"Node",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "commands":[
      {"path":"_delete-node","command":"delete-node","method":"DELETE"},
      {"path":"_update-node","command":"_update-node","method":"POST"},
      {"path":"ping-node-ssh","command":"ping-node-ssh","method":"GET"},
      {"path":"update-node-ssh","command":"update-node-ssh","method":"POST"},
      {"path":"update-node-config","command":"update-node-config","method":"POST"}],
    "methods":[
      {"name":"GET"},
      {"name":"POST","messageParameters":{
        "installDir":{"optional":"true","type":"string","key":"false"},
        "nodeDir":{"optional":"true","type":"string","key":"false"},
        "nodeHost":{"optional":"true","type":"string","key":"false"},
        "type":{"optional":"true","type":"string","key":"false"}
        }
      }
    ],
    "entity":{
      "installDir":"\/export\/glassfish3",
      "name":"sj01",
      "nodeDir":null,
      "nodeHost":
      "sj01.example.com",
      "type":"SSH"
    },
    "childResources":{
      "application-ref":
       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/application-ref",
      "resource-ref":
       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/resource-ref",
      "ssh-connector":
       "https:\/\/localhost:4848\/management\/domain\/nodes\/node\/sj01\/ssh-connector"
    }
  }
}
----

[[gkvzs]][[GSADG00637]][[xml-resource-representation-for-configuration-objects]]

XML Resource Representation for Configuration Objects
+++++++++++++++++++++++++++++++++++++++++++++++++++++

The general format for the XML representation of a resource for a
configuration object is as follows:

[source,oac_no_warn]
----
<map>
 <entry key="extraProperties">
  <map>
   <entry key="methods">
    <list>
     methods
    </list>
   </entry>
   <entry key="entity">
    <map>
     attributes
    </map>
   </entry>
   <entry key="commands">
    <list>
     commands
    </list>
   </entry>
   <entry key="childResources">
    <map>
    children
    </map>
   </entry>
  </map>
 </entry>
 <entry key="message"></entry>
 <entry key="exit_code" value="code"></entry>
 <entry key="command" value="resource"></entry>
</map>
----

The replaceable items in this format are as follows:

methods::
  One or more XML elements that represent the methods that the resource
  supports. For the format of each element, see link:#gjizh[XML
  Representation of a Resource Method].
attributes::
  Zero or more XML elements that represent the attributes of the
  resource. Each element specifies a name-value pair as follows: +
[source,oac_no_warn]
----
<entry key="name" value="value"></entry>
----
commands::
  One or more XML elements that represent the `asadmin` subcommands for
  performing non—CRUD operations on the resource. For the format of each
  element, see link:#gkwaw[XML Representation of a Command].
children::
  Zero or more XML elements that represent the children of the resource.
  Each element is specified as follows: +
[source,oac_no_warn]
----
<entry key="resource-name" value="url"></entry>
----
::
  resource-name;;
    The name of the resource as displayed in client applications that
    access the parent of the resource.
  url;;
    The URL to the child resource.
code::
  The result of the attempt to get the resource.
resource::
  The name of the resource.

[[gjizh]][[GSADG00028]][[xml-representation-of-a-resource-method]]

XML Representation of a Resource Method

The XML representation of a method in a method list is as follows:

[source,oac_no_warn]
----
<map>
 <entry key="name" value="method-name"></entry>
 <entry key="messageParameters">
  message-parameter-list
 </entry>
 <entry key="queryParameters">
  message-parameter-list
 </entry>
</map>
----

The replaceable items in this format are as follows:

method-name::
  The name of the method, which is `GET`, `POST`, or `DELETE`.
message-parameter-list::
  Zero or more XML elements that represent the message parameters that
  are allowed for the method. For the format of each element, see
  link:#gjizn[XML Representation of a Message Parameter or a Query
  Parameter].
query-parameter-list::
  Zero or more XML elements that represent the query parameters that are
  allowed for the method. For the format of each element, see
  link:#gjizn[XML Representation of a Message Parameter or a Query
  Parameter].

[[gkwaw]][[GSADG00029]][[xml-representation-of-a-command]]

XML Representation of a Command

The XML representation of a command is as follows:

[source,oac_no_warn]
----
<map>
 <entry key="command" value="command-name"></entry>
 <entry key="path" value="command-path"></entry>
 <entry key="method" value="rest-method"></entry>
</map>
----

The replaceable items in this format are as follows:

command-name::
  The name of the command as displayed in client applications that
  access the resource.
command-path::
  The relative path to REST resource that represents the command. This
  path is relative to the URL of the REST resource that is the parent of
  the resource that represents the command.
rest-method::
  The REST resource method that the command invokes when the command is
  run. The method is `GET`, `POST`, or `DELETE`.

[[gjizn]][[GSADG00030]][[xml-representation-of-a-message-parameter-or-a-query-parameter]]

XML Representation of a Message Parameter or a Query Parameter

The XML representation of a message parameter or a query parameter is as
follows:

[source,oac_no_warn]
----
<map>
 <entry key="parameter-name">
  <map>
   attributes
  </map>
 </entry>
</map>
----

The replaceable items in this format are as follows:

parameter-name::
  The name of the parameter.
attributes::
  One or more XML elements that represent the attributes for the
  parameter. Each element specifies a name-value pair as follows: +
[source,oac_no_warn]
----
<entry key="name" value="value"></entry>
----
::
  Possible attributes are as follows: +
  `defaultValue`;;
    The default value of the parameter.
  `acceptablevalues`;;
    The set or range of acceptable values for the parameter.
  `type`;;
    The data type of the parameter, which is one of the following types: +
    * `boolean`
    * `int`
    * `string`
  `optional`;;
    Indicates whether the parameter is optional. If `true`, the
    parameter is optional. If `false`, the parameter is required.
  `key`;;
    Indicates whether the parameter is key. If `true`, the parameter is
    key. If `false`, the parameter is not key.

[[gjjgi]][[GSADG00031]][[example-xml-resource-representation]]

Example XML Resource Representation

This example shows the XML representation of the resource for the node
`sj01`. In this example, the DAS is running on the local host and the
HTTP port for administration is 4848. The URL to the resource in this
example is `http://localhost:4848/management/domain/nodes/node/sj01`.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<map>
 <entry key="extraProperties">
  <map>
   <entry key="methods">
    <list>
     <map>
      <entry key="name" value="GET"/>
     </map>
     <map>
      <entry key="name" value="POST"/>
      <entry key="messageParameters">
       <map>
        <entry key="installDir">
         <map>
          <entry key="optional" value="true"/>
          <entry key="type" value="string"/>
          <entry key="key" value="false"/>
         </map>
        </entry>
        <entry key="nodeDir">
         <map>
          <entry key="optional" value="true"/>
          <entry key="type" value="string"/>
          <entry key="key" value="false"/>
         </map>
        </entry>
        <entry key="type">
         <map>
          <entry key="optional" value="true"/>
          <entry key="type" value="string"/>
          <entry key="key" value="false"/>
         </map>
        </entry>
        <entry key="nodeHost">
         <map>
          <entry key="optional" value="true"/>
          <entry key="type" value="string"/>
          <entry key="key" value="false"/>
         </map>
        </entry>
       </map>
      </entry>
     </map>
    </list>
   </entry>
   <entry key="entity">
    <map>
     <entry key="installDir" value="/export/glassfish3"/>
     <entry key="name" value="sj01"/>
     <entry key="nodeDir" value=""/>
     <entry key="type" value="SSH"/>
     <entry key="nodeHost" value="sj01example.com"/>
    </map>
   </entry>
   <entry key="commands">
    <list>
     <map>
      <entry key="command" value="delete-node"/>
      <entry key="path" value="_delete-node"/>
      <entry key="method" value="DELETE"/>
     </map>
     <map>
      <entry key="command" value="_update-node"/>
      <entry key="path" value="_update-node"/>
      <entry key="method" value="POST"/>
     </map>
     <map>
      <entry key="command" value="ping-node-ssh"/>
      <entry key="path" value="ping-node-ssh"/>
      <entry key="method" value="GET"/>
     </map>
     <map>
      <entry key="command" value="update-node-ssh"/>
      <entry key="path" value="update-node-ssh"/>
      <entry key="method" value="POST"/>
     </map>
     <map>
      <entry key="command" value="update-node-config"/>
      <entry key="path" value="update-node-config"/>
      <entry key="method" value="POST"/>
     </map>
    </list>
   </entry>
   <entry key="childResources">
    <map>
     <entry key="application-ref" 
      value="https://localhost:4848/management/domain/nodes/node/sj01/application-ref"/>
     <entry key="ssh-connector" 
      value="https://localhost:4848/management/domain/nodes/node/sj01/ssh-connector"/>
     <entry key="resource-ref" 
      value="https://localhost:4848/management/domain/nodes/node/sj01/resource-ref"/>
    </map>
   </entry>
  </map>
 </entry>
 <entry key="message"/>
 <entry key="exit_code" value="SUCCESS"/>
 <entry key="command" value="Node"/>
</map>
----

[[gjipm]][[GSADG00638]][[html-resource-representation-for-configuration-objects]]

HTML Resource Representation for Configuration Objects
++++++++++++++++++++++++++++++++++++++++++++++++++++++

The format for the HTML representation of a resource for a configuration
object is a web page that provides the following information about the
resource:

* A list of the attributes of the resource and their values.
* A list of the methods and method parameters that the resource
supports. Each method and its parameters are presented as a field of the
appropriate type in an HTML form.
* A list of hypertext links to the children of the resource.
* A list of hypertext links to resources that represent `asadmin`
subcommands for non-CRUD operations on the resource.

For a sample web page, see link:#gjjce[Figure 2-1]. In this example, the
DAS is running on the local host and the HTTP port for administration is
4848. The URL to the resource in this example is
`http://localhost:4848/management/domain/nodes/node/sj01`.

[[gkwdd]][[GSADG00712]][[formats-for-resource-representation-of-monitoring-objects]]

Formats for Resource Representation of Monitoring Objects
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The GlassFish Server REST interfaces represent resources for monitoring
data in the following formats:

* http://www.json.org/[JSON]
* XML
* HTML

[[gkwgi]][[GSADG00639]][[json-resource-representation-for-monitoring-objects]]

JSON Resource Representation for Monitoring Objects
+++++++++++++++++++++++++++++++++++++++++++++++++++

The general format for the JSON representation of a resource for a
monitoring object is as follows:

[source,oac_no_warn]
----
{
  "message":"",
  "command":"Monitoring Data",
  "exit_code":"code",
  "extraProperties":{
    "entity":{
      statistics-list
    },
    "childResources":{
      children
    }
  }
}
----

The replaceable items in this format are as follows:

code::
  The result of the attempt to get the resource.
statistics-list::
  Zero or more metadata sets separated by a comma (`,`) that represent
  the statistics that the monitoring object provides. For the format of
  each metadata set, see link:#gkwkl[JSON Representation of a Statistic
  in a Statistics List].
children::
  Zero or more child resources separated by a comma (`,`). Each child
  resource is specified as "resource-name":"url". +
  resource-name;;
    The name of the resource as displayed in client applications that
    access the parent of the resource.
  url;;
    The URL to the child resource.

[[gkwkl]][[GSADG00032]][[json-representation-of-a-statistic-in-a-statistics-list]]

JSON Representation of a Statistic in a Statistics List

The JSON representation of a counter statistic in a statistics list is
as follows:

[source,oac_no_warn]
----
"statistic":{
  "count":count,
  "lastsampletime":last-sample-time,
  "description":"description",
  "unit":"unit",
  "name":"name",
  "starttime":start-time
}
----

The JSON representation of a range statistic in a statistics list is as
follows:

[source,oac_no_warn]
----
"statistic":{
  "highwatermark":highest-value, 
  "lowwatermark":lowest-value, 
  "current":current-value
  "lastsampletime":last-sample-time,
  "description":"description",
  "unit":"unit",
  "name":"name",
  "starttime":start-time
}
----

The replaceable items in these formats are as follows:

statistic::
  The name of the statistic.
count::
  Counter statistics only: The current value of the statistic.
highest-value::
  Range statistics only: The highest value of the statistic since
  monitoring of the statistic began.
lowest-value::
  Range statistics only: The lowest value of the statistic since
  monitoring of the statistic began.
current-value::
  Range statistics only: The lowest value of the statistic since
  monitoring of the statistic began.
last-sample-time::
  The time in UNIX time at which the statistic was last sampled.
description::
  A textual description of what the statistic represents.
unit::
  The unit of measurement of the statistic, which is one of the
  following units of measurement: +
  `count`;;
    The cumulative value of an attribute that increases with time.
  `range`;;
    The lowest value, highest value, and current value of an attribute
    that can increase or decrease with time.
  `boundedrange`;;
    The lowest value, highest value, and current value of an attribute
    that can increase or decrease with time and has fixed limits.
  `string`;;
    A string that represents an attribute value. A string statistic is
    similar to a count, except that the values are not ordered.
    Typically, a string statistic represents the state of an object, for
    example, `CONNECTED`, `CLOSED`, or `DISCONNECTED`.
  `time`;;
    Values of an attribute that provide the following timing
    measurements for an operation: +
    * The number of times the operation was performed.
    * The maximum amount of time to perform the operation once.
    * The minimum amount of time to perform the operation once.
    * The total amount of time that has been spent performing the
    operation.
    * The average amount of time to perform the operation.
name::
  The name of the statistic as displayed in client applications that
  access the resource that contains the statistic.
start-time::
  The time in UNIX time at which monitoring of the statistic began.

[[gkwht]][[GSADG00033]][[example-json-resource-representation-for-a-monitoring-object]]

Example JSON Resource Representation for a Monitoring Object

This example shows the JSON representation of the monitoring object that
provides class loader statistics for the virtual machine for the Java
platform. In this example, the DAS is running on the local host and the
HTTP port for administration is 4848. The URL to the resource in this
example is
`http://localhost:4848/monitoring/domain/server/jvm/class-loading-system`.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
{
  "message":"",
  "command":"Monitoring Data",
  "exit_code":"SUCCESS",
  "extraProperties":{
    "entity":{
      "loadedclass-count":{
        "count":8521,
        "lastsampletime":1300726961018,
        "description":"Number of classes currently loaded in the Java virtual 
          machine",
        "unit":"count",
        "name":"LoadedClassCount",
        "starttime":1300483924126
      },
      "totalloadedclass-count":{
        "count":8682,
        "lastsampletime":1300726961018,
        "description":"Total number of classes that have been loaded since the 
          Java virtual machine has started execution",
        "unit":"count",
        "name":"TotalLoadedClassCount",
        "starttime":1300483924127
      },
      "unloadedclass-count":{
        "count":161,
        "lastsampletime":1300726961018,
        "description":"Total number of classes unloaded since the Java virtual 
          machine has started execution",
        "unit":"count",
        "name":"UnLoadedClassCount",
        "starttime":1300483924127
      }
    },"childResources":{}
  }
}
----

[[gkwew]][[GSADG00640]][[xml-resource-representation-for-monitoring-objects]]

XML Resource Representation for Monitoring Objects
++++++++++++++++++++++++++++++++++++++++++++++++++

The general format for the XML representation of a resource for a
monitoring object is as follows:

[source,oac_no_warn]
----
<?xml version="1.0" encoding="UTF-8"?>
<map>
 <entry key="extraProperties">
  <map>
   <entry key="entity">
    <map>
     statistics
    </map>
   </entry>
   <entry key="childResources">
    <map>
     children
    </map>
   </entry>
  </map>
 </entry>
 <entry key="message" value=""></entry>
 <entry key="exit_code" value="code"></entry>
 <entry key="command" value="Monitoring Data"></entry>
</map>
----

The replaceable items in this format are as follows:

statistics::
  Zero or more XML elements that represent the statistics that the
  monitoring object provides. For the format of each element, see
  link:#gkwjv[XML Representation of a Statistic].
children::
  Zero or more XML elements that represent the children of the resource.
  Each element is specified as follows: +
[source,oac_no_warn]
----
<entry key="resource-name" value="url"></entry>
----
::
  resource-name;;
    The name of the resource as displayed in client applications that
    access the parent of the resource.
  url;;
    The URL to the child resource.
code::
  The result of the attempt to get the resource.

[[gkwjv]][[GSADG00034]][[xml-representation-of-a-statistic]]

XML Representation of a Statistic

The XML representation of a counter statistic is as follows:

[source,oac_no_warn]
----
<entry key="statistic">
 <map>
 <entry key="unit" value="unit"></entry>
 <entry key="starttime">
   <number>start-time</number>
  </entry>
  <entry key="count">
   <number>count</number>
  </entry>
  <entry key="description" value="description"></entry>
  <entry key="name" value="name"></entry>
  <entry key="lastsampletime">
   <number>last-sample-time</number>
  </entry>
  </map>
</entry>
----

The XML representation of a range statistic is as follows:

[source,oac_no_warn]
----
<entry key="statistic">
 <map>
 <entry key="unit" value="unit"></entry>
 <entry key="starttime">
   <number>start-time</number>
  </entry>
  <entry key="highwatermark">
   <number>highest-value</number>
  </entry>
  <entry key="lowwatermark">
   <number>lowest-value</number>
  </entry>
  <entry key="current">
   <number>current-value</number>
  </entry>
  <entry key="description" value="description"></entry>
  <entry key="name" value="name"></entry>
  <entry key="lastsampletime">
   <number>last-sample-time</number>
  </entry>
  </map>
</entry>
----

The replaceable items in these formats are as follows:

statistic::
  The name of the statistic.
unit::
  The unit of measurement of the statistic, which is one of the
  following units of measurement: +
  `count`;;
    The cumulative value of an attribute that increases with time.
  `range`;;
    The lowest value, highest value, and current value of an attribute
    that can increase or decrease with time.
  `boundedrange`;;
    The lowest value, highest value, and current value of an attribute
    that can increase or decrease with time and has fixed limits.
  `string`;;
    A string that represents an attribute value. A string statistic is
    similar to a count, except that the values are not ordered.
    Typically, a string statistic represents the state of an object, for
    example, `CONNECTED`, `CLOSED`, or `DISCONNECTED`.
  `time`;;
    Values of an attribute that provide the following timing
    measurements for an operation: +
    * The number of times the operation was performed.
    * The maximum amount of time to perform the operation once.
    * The minimum amount of time to perform the operation once.
    * The total amount of time that has been spent performing the
    operation.
    * The average amount of time to perform the operation.
start-time::
  The in time in UNIX time at which monitoring of the statistic began.
count::
  Counter statistics only: The current value of the statistic.
highest-value::
  Range statistics only: The highest value of the statistic since
  monitoring of the statistic began.
lowest-value::
  Range statistics only: The lowest value of the statistic since
  monitoring of the statistic began.
current-value::
  Range statistics only: The lowest value of the statistic since
  monitoring of the statistic began.
description::
  A textual description of what the statistic represents.
name::
  The name of the statistic as displayed in client applications that
  access the resource that contains the statistic.
last-sample-time::
  The time in UNIX time at which the statistic was last sampled.

[[gkwhz]][[GSADG00035]][[example-xml-resource-representation-for-a-monitoring-object]]

Example XML Resource Representation for a Monitoring Object

This example shows the XML representation of the monitoring object that
provides class loader statistics for the virtual machine for the Java
platform. In this example, the DAS is running on the local host and the
HTTP port for administration is 4848. The URL to the resource in this
example is
`http://localhost:4848/monitoring/domain/server/jvm/class-loading-system`.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<map>
 <entry key="extraProperties">
  <map>
   <entry key="entity">
    <map>
     <entry key="unloadedclass-count">
      <map>
       <entry key="unit" value="count"/>
       <entry key="starttime">
        <number>1300483924127</number>
       </entry><entry key="count">
        <number>161</number>
       </entry>
       <entry key="description" value="Total number of classes unloaded since 
        the Java virtual machine has started execution"/>
       <entry key="name" value="UnLoadedClassCount"/>
       <entry key="lastsampletime">
        <number>1300726989505</number>
       </entry>
      </map>
     </entry>
     <entry key="totalloadedclass-count">
      <map>
       <entry key="unit" value="count"/>
       <entry key="starttime">
        <number>1300483924127</number>
       </entry>
       <entry key="count">
         number>8682</number>
       </entry>
       <entry key="description" value="Total number of classes that have been 
        loaded since the Java virtual machine has started execution"/>
       <entry key="name" value="TotalLoadedClassCount"/>
       <entry key="lastsampletime">
        <number>1300726989505</number>
       </entry>
      </map>
     </entry>
     <entry key="loadedclass-count">
      <map>
       <entry key="unit" value="count"/>
       <entry key="starttime">
        <number>1300483924126</number>
       </entry><entry key="count">
        <number>8521</number>
       </entry>
       <entry key="description" value="Number of classes currently loaded in 
        the Java virtual machine"/>
       <entry key="name" value="LoadedClassCount"/>
       <entry key="lastsampletime">
        <number>1300726989505</number>
       </entry>
      </map>
     </entry>
    </map>
   </entry>
   <entry key="childResources">
    <map/>
   </entry>
  </map>
 </entry>
 <entry key="message" value=""/>
 <entry key="exit_code" value="SUCCESS"/>
 <entry key="command" value="Monitoring Data"/>
</map>
----

[[gkwij]][[GSADG00641]][[html-resource-representation-for-monitoring-objects]]

HTML Resource Representation for Monitoring Objects
+++++++++++++++++++++++++++++++++++++++++++++++++++

The format for the HTML representation of a resource for a monitoring
object is a web page that provides the following information about the
resource:

* A list of the statistics that the resource provides.
* A list of hypertext links to the children of the resource.

The following figure shows the web page for the REST resource that
provides class loader statistics for the virtual machine for the Java
platform.

[[GSADG00002]][[gkwku]]


.*Figure 2-2 Web Page for the REST Resource That Provides Class Loader Statistics*
image:img/rest-monitoring.png[
"Screen capture showing the web page for the REST resource that provides
class loader statistics."]


[[gkwid]][[GSADG00713]][[formats-for-resource-representation-of-log-file-details]]

Formats for Resource Representation of Log File Details
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The GlassFish Server REST interfaces represent resources for log file
details in the following formats:

* http://www.json.org/[JSON]
* XML

[[gkwnp]][[GSADG00642]][[json-resource-representation-for-log-file-details]]

JSON Resource Representation for Log File Details
+++++++++++++++++++++++++++++++++++++++++++++++++

The general format for the JSON representation of a resource for log
file details is as follows:

[source,oac_no_warn]
----
{
  "records": [
    record-list
  ]
}
----

The replaceable item in this format is the record-list, which is one or
more metadata sets separated by a comma (`,`) that represent the log
records in the log file. For the format of each metadata set, see
link:#gkwme[JSON Representation of a Log Record in a Record List].

[[gkwme]][[GSADG00036]][[json-representation-of-a-log-record-in-a-record-list]]

JSON Representation of a Log Record in a Record List

The JSON representation of a log record in a record list is as follows:

[source,oac_no_warn]
----
{
  "recordNumber":record-number,
  "loggedDateTimeInMS":logged-date,
  "loggedLevel":"log-level",
  "productName":"product-name",
  "loggerName":"logger-class-name",
  "nameValuePairs":"_ThreadID=thread-id;_ThreadName=thread-name;",
  "messageID":"message-id",
  "Message":"message-text"
}
----

The replaceable items in this format are as follows:

record-number::
  A serial number in the form of a decimal integer that uniquely
  identifies the log record.
logged-date::
  The date and time in UNIX time that the record was created.
log-level::
  The severity level of the message in the log record. For more
  information, see link:logging.html#gklml[Setting Log Levels].
product-name::
  The application that created the log message, for example,
  `glassfish3.1`.
logger-class-name::
  The fully qualified name of the Java class of the logger class that
  created the log message. Each component of GlassFish Server provides
  its own logger class. For detailed information about the names of
  logger classes in GlassFish Server, see link:logging.html#gkres[Logger
  Namespaces].
thread-id::
  The numerical identifier of the thread that created the message.
thread-name::
  The name of the thread that created the message.
message-id::
  A unique identifier for the message. For messages from GlassFish
  Server, this identifier consists of a module code and a numerical
  value, for example, `CORE5004`. All `SEVERE` and `WARNING` messages
  and some `INFO` messages from GlassFish Server contain a message
  identifier. For more information, see the link:../error-messages-reference/toc.html#GSEMR[GlassFish Server
  Open Source Edition Error Message Reference].
message-text::
  The text of the log message.

[[gkwoz]][[GSADG00037]][[example-json-resource-representation-for-log-file-details]]

Example JSON Resource Representation for Log File Details

This example shows the JSON representation of the resource for log file
details. In this example, the DAS is running on the local host and the
HTTP port for administration is 4848. The URL to the resource in this
example is `http://localhost:4848/management/domain/view-log/details`.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
{
  "records": [
    {
      "recordNumber":475,
      "loggedDateTimeInMS":1300743782815,
      "loggedLevel":"INFO",
      "productName":"glassfish3.1",
      "loggerName":"org.glassfish.admingui",
      "nameValuePairs": "_ThreadID=25;_ThreadName=Thread-1;",
      "messageID":"",
      "Message":"Admin Console: Initializing Session Attributes..."
    },
    {
      "recordNumber":474,
      "loggedDateTimeInMS":1300728893368,
      "loggedLevel":"INFO",
      "productName":"glassfish3.1",
      "loggerName":"jakarta.enterprise.system.core.com.sun.enterprise.v3.admin.adapter",
      "nameValuePairs":"_ThreadID=238;_ThreadName=Thread-1;",
      "messageID":"",
      "Message":"The Admin Console application is loaded."
    },
    {
      "recordNumber":473,
      "loggedDateTimeInMS":1300728893367,
      "loggedLevel":"INFO",
      "productName":"glassfish3.1",
      "loggerName":"jakarta.enterprise.system.core.com.sun.enterprise.v3.server",
      "nameValuePairs":"_ThreadID=238;_ThreadName=Thread-1;",
      "messageID":"CORE10010",
      "Message":" Loading application __admingui done in 40,063 ms"
    }
  ]
}
----

[[gkwmi]][[GSADG00643]][[xml-resource-representation-for-log-file-details]]

XML Resource Representation for Log File Details
++++++++++++++++++++++++++++++++++++++++++++++++

The general format for the XML representation of a resource for log file
details is as follows:

[source,oac_no_warn]
----
<records>
 records
 </records>
----

The replaceable item in this format is the records, which is one or more
XML elements that represent the log records in the log file. For the
format of each element, see link:#gkwot[XML Representation of a Log
Record].

[[gkwot]][[GSADG00038]][[xml-representation-of-a-log-record]]

XML Representation of a Log Record

The XML representation of a log record is as follows:

[source,oac_no_warn]
----
<record loggedDateTimeInMS="logged-date" loggedLevel="log-level" 
 loggerName="logger-class-name" messageID="message-id" 
 nameValuePairs="_ThreadID=thread-id;_thread-name;" productName="product-name"
 recordNumber="record-number"/>
----

The replaceable items in this format are as follows:

logged-date::
  The date and time in UNIX time that the record was created.
log-level::
  The severity level of the message in the log record. For more
  information, see link:logging.html#gklml[Setting Log Levels].
logger-class-name::
  The fully qualified name of the Java class of the logger class that
  created the log message. Each component of GlassFish Server provides
  its own logger class. For detailed information about the names of
  logger classes in GlassFish Server, see link:logging.html#gkres[Logger
  Namespaces].
message-id::
  A unique identifier for the message. For messages from GlassFish
  Server, this identifier consists of a module code and a numerical
  value, for example, `CORE5004`. All `SEVERE` and `WARNING` messages
  and some `INFO` messages from GlassFish Server contain a message
  identifier. For more information, see the link:../error-messages-reference/toc.html#GSEMR[GlassFish Server
  Open Source Edition Error Message Reference].
thread-id::
  The numerical identifier of the thread that created the message.
thread-name::
  The name of the thread that created the message.
product-name::
  The application that created the log message, for example,
  `glassfish3.1`.
record-number::
  A serial number in the form of a decimal integer that uniquely
  identifies the log record.

[[gkwoq]][[GSADG00039]][[example-xml-resource-representation-for-log-file-details]]

Example XML Resource Representation for Log File Details

This example shows the XML representation of the resource for log file
details. In this example, the DAS is running on the local host and the
HTTP port for administration is 4848. The URL to the resource in this
example is `http://localhost:4848/management/domain/view-log/details`.

Line breaks and white space are added to enhance readability.

[source,oac_no_warn]
----
<records>
 <record loggedDateTimeInMS="1300743782815" loggedLevel="INFO" 
 loggerName="org.glassfish.admingui" messageID="" 
 nameValuePairs="_ThreadID=25;_ThreadName=Thread-1;" 
 productName="glassfish3.1" recordNumber="475"/>
 <record loggedDateTimeInMS="1300728893368" loggedLevel="INFO" 
 loggerName="jakarta.enterprise.system.core.com.sun.enterprise.v3.admin.adapter" 
  messageID="" nameValuePairs="_ThreadID=238;_ThreadName=Thread-1;" 
  productName="glassfish3.1" recordNumber="474"/>
 <record loggedDateTimeInMS="1300728893367" loggedLevel="INFO" 
 loggerName="jakarta.enterprise.system.core.com.sun.enterprise.v3.server" 
 messageid="core10010" nameValuePairs="_ThreadID=238;_ThreadName=Thread-1;" 
 productName="glassfish3.1" recordNumber="473"/>
</records>
----

[[gkwsq]][[GSADG00714]][[supported-content-types-in-requests-to-rest-resources]]

Supported Content Types in Requests to REST Resources
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The GlassFish Server REST interfaces support the following types in the
content-type header of a client request:

* http://www.json.org/[JSON]
* XML
* http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1[Form URL
encoded]

How to specify the type in the content-type header depends on how you
are sending the request. For example, if you are using the cURL utility,
specify the type through the `-H` option as follows:

* For JSON, specify `-H "Content-type: application/json"`.
* For XML, specify `-H "Content-type: application/xml"`.
* For form URL encoded, specify
`-H "Content-type: application/x-www-form-urlencoded"`.


