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 7 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]
----
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://github.com/eclipse-ee4j/glassfishdoc/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://github.com/eclipse-ee4j/glassfishdoc/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://github.com/eclipse-ee4j/glassfishdoc/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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
asadmin> list-modules
----

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

[source]
----
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]
----
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]
----
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]
----
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://eclipse-ee4j.github.io/jersey/[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] .
Information about Jakarta RESTful Web Services is here:
https://jakarta.ee/specifications/restful-ws/

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 (`/`).
+

[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]
----
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\/glassfish7",
      "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]
----
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\/glassfish7",
      "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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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]
----
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.
.. Create a cookie that is named `gfresttoken` the value of which is the token.
.. Send the cookie with the request.
.. 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,json]
----
{
  "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,json]
----
{
  "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,json]
----
{
    "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,json]
----
"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,json]
----
"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,json]
----
{
  "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\/glassfish7",
      "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,xml]
----
<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,xml]
----
<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,xml]
----
<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,xml]
----
<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,xml]
----
<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,xml]
----
<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,xml]
----
<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,xml]
----
<?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/glassfish7"/>
     <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,json]
----
{
  "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,json]
----
"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,json]
----
"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,json]
----
{
  "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,xml]
----
<?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,xml]
----
<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,xml]
----
<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,xml]
----
<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,xml]
----
<?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,json]
----
{
  "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,json]
----
{
  "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, `glassfish7`.
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,json]
----
{
  "records": [
    {
      "recordNumber":475,
      "loggedDateTimeInMS":1300743782815,
      "loggedLevel":"INFO",
      "productName":"glassfish7",
      "loggerName":"org.glassfish.admingui",
      "nameValuePairs": "_ThreadID=25;_ThreadName=Thread-1;",
      "messageID":"",
      "Message":"Admin Console: Initializing Session Attributes..."
    },
    {
      "recordNumber":474,
      "loggedDateTimeInMS":1300728893368,
      "loggedLevel":"INFO",
      "productName":"glassfish7",
      "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":"glassfish7",
      "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,xml]
----
<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,xml]
----
<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,
  `glassfish7`.
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,xml]
----
<records>
 <record loggedDateTimeInMS="1300743782815" loggedLevel="INFO"
 loggerName="org.glassfish.admingui" messageID=""
 nameValuePairs="_ThreadID=25;_ThreadName=Thread-1;"
 productName="glassfish7" 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="glassfish7" 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="glassfish7" 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"`.


