type=page
status=published
title=Subcommands for the asadmin Utility
prev=part-appendixes.html
~~~~~~

= Subcommands for the asadmin Utility

[[GSADG00023]][[gcode]]


[[a-subcommands-for-the-asadmin-utility]]
== A Subcommands for the `asadmin` Utility

This appendix lists the `asadmin` subcommands that are included with
this release of the GlassFish Server Open Source Edition 7 software.

* link:#ggltk[General Administration Subcommands]
* link:#CHDJGEEG[Batch Jobs Subcommands]
* link:#CHDECJFC[Concurrent Resources Subcommands]
* link:#giowb[Connectivity Subcommands]
* link:#gitwu[Domain Subcommands]
* link:#ggltm[Internet Connectivity Subcommands]
* link:#ggltf[JavaMail Subcommands]
* link:#gipen[JMS Subcommands]
* link:#gitws[JNDI Subcommands]
* link:#gglsk[JVM Subcommands]
* link:#giuzl[Life Cycle Module Subcommands]
* link:#gitxd[Logging and Monitoring Subcommands]
* link:#giusq[ORB Subcommands]
* link:#giuqr[Thread Pool Subcommands]
* link:#gitxi[Transaction Service Subcommands]

For information and instructions on using the `asadmin` application
deployment subcommands, see the link:../application-deployment-guide/toc.html#GSDPG[GlassFish Server Open Source
Edition Application Deployment Guide].

Online help for the `asadmin` subcommands can be invoked on the command
line, for example, `asadmin create-domain` `help`. The
link:../reference-manual/toc.html#GSRFM[GlassFish Server Open Source Edition Reference Manual] also
provides a collection of these help pages.


[NOTE]
====
The common options used with remote subcommands are described in the
olink:GSRFM00263[`asadmin`(1M)] help page.
====


[[ggltk]][[GSADG00610]][[general-administration-subcommands]]

=== General Administration Subcommands

link:../reference-manual/add-resources.html#GSRFM00001[`add-resources`]::
  Creates the resources named in the specified XML file. Supported in
  remote mode only. For procedural information in this guide, see
  link:general-administration.html#ggoeh[To Add Resources From an XML
  File].
link:../reference-manual/asadmin.html#GSRFM00263[`asadmin`]::
  Describes how the `asadmin` utility works.
link:../reference-manual/attach.html#GSRFM825[`attach`]::
  Attaches to subcommands that were started using the `asadmin --detach`
  option or that contain progress information. For procedural
  information in this guide, see
  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
  in `--detach` Mode].
link:../reference-manual/configure-managed-jobs.html#GSRFM836[`configure-managed-jobs`]::
  Configures how long information about subcommands (jobs) that were
  started using the `asadmin --detach` option or that contain progress
  information is kept. For procedural information in this guide, see
  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
  in `--detach` Mode].
link:../reference-manual/create-module-config.html#GSRFM844[`create-module-config`]::
  Adds the default configuration of a module to `domain.xml`.
link:../reference-manual/create-service.html#GSRFM00057[`create-service`]::
  Configures the starting of a domain administration server (DAS) on an
  unattended boot. On Oracle Solaris 10, this subcommand uses the
  Service Management Facility (SMF). For procedural information in this
  guide, see link:domains.html#giusi[To Configure a DAS or an Instance
  for Automatic Restart on Oracle Solaris].
link:../reference-manual/create-system-properties.html#GSRFM00059[`create-system-properties`]::
  Creates or updates system properties. Supported in remote mode only.
  For procedural information in this guide, see
  link:general-administration.html#ggonc[To Create System Properties].
link:../reference-manual/delete-module-config.html#GSRFM854[`delete-module-config`]::
  Removes the configuration of a module from `domain.xml`.
link:../reference-manual/delete-system-property.html#GSRFM00110[`delete-system-property`]::
  Deletes system properties of a domain or configuration, or server
  instance. Supported in remote mode only. For procedural information in
  this guide, see link:general-administration.html#ggomm[To Delete a
  System Property].
link:../reference-manual/get.html#GSRFM00139[`get`]::
  Gets an attribute of an element in the `domain.xml` file. With the
  `-m` option, gets the names and values of the monitorable or
  configurable attributes. For procedural information in this guide, see
  link:monitoring.html#ablwh[Guidelines for Using the `list` and `get`
  Subcommands for Monitoring].
link:../reference-manual/get-active-module-config.html#GSRFM859[`get-active-module-config`]::
  Displays the current active configuration of a module.
link:../reference-manual/list.html#GSRFM00145[`list`]::
  Lists the configurable element. On Oracle Solaris, quotes are needed
  when running subcommands with `*` as the option value or operand. For
  procedural information in this guide, see
  link:monitoring.html#ablwh[Guidelines for Using the `list` and `get`
  Subcommands for Monitoring].
link:../reference-manual/list-commands.html#GSRFM00154[`list-commands`]::
  Lists all the `asadmin` subcommands, local subcommands first, then
  remote subcommands. You can specify that only remote subcommands or
  only local subcommands be displayed. Supported in remote mode only.
  For procedural information in this guide, see
  link:general-administration.html#ggoeg[To List Subcommands].
link:../reference-manual/list-containers.html#GSRFM00161[`list-containers`]::
  Lists application containers and the status of each container.
  Supported in remote mode only. For procedural information in this
  guide, see link:general-administration.html#ggocv[To List Containers].
link:../reference-manual/list-jobs.html#GSRFM867[`list-jobs`]::
  Lists information about subcommands that were started using the
  `asadmin --detach` option or that contain progress information. For
  procedural information in this guide, see
  link:general-administration.html#CACDDHBA[To Run `asadmin` Subcommands
  in `--detach` Mode].
link:../reference-manual/list-modules.html#GSRFM00185[`list-modules`]::
  Lists modules that are accessible to the GlassFish Server subsystem.
  The status of each module is included. Supported in remote mode only.
  For procedural information in this guide, see
  link:general-administration.html#ghlgf[To List Modules].
link:../reference-manual/list-system-properties.html#GSRFM00203[`list-system-properties`]::
  Lists the system properties of a domain or configuration. Supported in
  remote mode only. For procedural information in this guide, see
  link:general-administration.html#ggodt[To List System Properties].
link:../reference-manual/list-timers.html#GSRFM00205[`list-timers`]::
  List the timers owned by a specific server instance. Supported in
  remote mode only. For procedural information in this guide, see
  link:general-administration.html#giojd[To List Timers].
link:../reference-manual/multimode.html#GSRFM00213[`multimode`]::
  Provides an `asadmin>` prompt for running multiple subcommands while
  preserving options and environment settings. Supported in local mode
  only. For procedural information, see
  link:general-administration.html#giobi[Using the `asadmin` Utility].
link:../reference-manual/osgi.html#GSRFM877[`osgi`]::
  Delegates the command line to the Apache Felix Gogo remote shell for
  the execution of OSGi shell commands. For procedural information in
  this guide, see link:overview.html#CJAGIGII[To Run Apache Felix Gogo
  Remote Shell Commands].
link:../reference-manual/osgi-shell.html#GSRFM890[`osgi-shell`]::
  Provides interactive access to the Apache Felix Gogo remote shell for
  the execution of OSGi shell commands. For procedural information in
  this guide, see link:overview.html#CJAGIGII[To Run Apache Felix Gogo
  Remote Shell Commands].
link:../reference-manual/set.html#GSRFM00226[`set`]::
  Sets the values of one or more configurable attributes. For procedural
  information in this guide, see link:monitoring.html#ablvp[Configuring
  Monitoring].
link:../reference-manual/setup-local-dcom.html#GSRFM893[`setup-local-dcom`]::
  Sets up the Distributed Component Object Model (DCOM) remote protocol
  on the host where the subcommand is run. The DCOM remote protocol is
  available only on Windows systems.
link:../reference-manual/show-component-status.html#GSRFM00232[`show-component-status`]::
  Lists the status of existing components. Supported in remote mode
  only. For procedural information in this guide, see
  link:general-administration.html#giyjd[To Show Component Status].
link:../reference-manual/start-database.html#GSRFM00234[`start-database`]::
  Starts the Apache Derby database server. Use this subcommand only for
  working with applications deployed to the GlassFish Server. For
  procedural information in this guide, see link:jdbc.html#ggndz[To Start
  the Database].
link:../reference-manual/stop-database.html#GSRFM00239[`stop-database`]::
  Stops a process of the Apache Derby DB database server. For procedural
  information in this guide, see link:jdbc.html#ggnbw[To Stop the
  Database].
link:../reference-manual/version.html#GSRFM00261[`version`]::
  Displays the version information for the option specified in archive
  or folder format. Supported in remote mode only. For procedural
  information in this guide, see
  link:general-administration.html#ghhox[To Display the GlassFish Server
  Version].

[[CHDJGEEG]][[GSADG1155]][[batch-jobs-subcommands]]

=== Batch Jobs Subcommands

link:../reference-manual/list-batch-jobs.html#GSRFM861[`list-batch-jobs`]::
  Lists batch jobs and job details. For procedural information in this
  guide, see link:batch.html#BABIBFDJ[To List Batch Jobs].
link:../reference-manual/list-batch-job-executions.html#GSRFM884[`list-batch-job-executions`]::
  Lists batch job executions and execution details. For procedural
  information in this guide, see link:batch.html#BABFBGJB[To List Batch
  Job Executions].
link:../reference-manual/list-batch-job-steps.html#GSRFM895[`list-batch-job-steps`]::
  Lists steps for a specific batch job execution. For procedural
  information in this guide, see link:batch.html#BABGJIDD[To List Batch
  Job Steps].
link:../reference-manual/list-batch-runtime-configuration.html#GSRFM863[`list-batch-runtime-configuration`]::
  Displays the configuration of the batch runtime. For procedural
  information in this guide, see link:batch.html#BABBGHCJ[To List the
  Batch Runtime Configuration].
link:../reference-manual/set-batch-runtime-configuration.html#GSRFM897[`set-batch-runtime-configuration`]::
  Configures the batch runtime. For procedural information in this
  guide, see link:batch.html#BABFEJAD[To Configure the Batch Runtime].

[[CHDECJFC]][[GSADG1156]][[concurrent-resources-subcommands]]

=== Concurrent Resources Subcommands

link:../reference-manual/create-context-service.html#GSRFM838[`create-context-service`]::
  Creates a context service resource. For procedural information in this
  guide, see link:concurrent.html#DAFJACDI[To Create a Context Service].
link:../reference-manual/create-managed-executor-service.html#GSRFM840[`create-managed-executor-service`]::
  Creates a managed executor service resource. For procedural
  information in this guide, see link:concurrent.html#DAFJIEGA[To Create
  a Managed Executor Service].
link:../reference-manual/create-managed-scheduled-executo.html#GSRFM680[`create-managed-scheduled-executor-service`]::
  Creates a managed scheduled executor service resource. For procedural
  information in this guide, see link:concurrent.html#DAFFGDGG[To Create
  a Managed Scheduled Executor Service].
link:../reference-manual/create-managed-thread-factory.html#GSRFM842[`create-managed-thread-factory`]::
  Creates a managed thread factory resource. For procedural information
  in this guide, see link:concurrent.html#DAFGFAEI[To Create a Managed
  Thread Factory].
link:../reference-manual/create-context-service.html#GSRFM838[`list-context-services`]::
  Lists context service resources. For procedural information in this
  guide, see link:concurrent.html#DAFDCFCB[To List Context Services].
link:../reference-manual/create-managed-executor-service.html#GSRFM840[`list-managed-executor-services`]::
  Lists managed executor service resources. For procedural information
  in this guide, see link:concurrent.html#DAFIJDAE[To List Managed
  Executor Services].
link:../reference-manual/create-managed-scheduled-executo.html#GSRFM680[`list-managed-scheduled-executor-services`]::
  Lists managed scheduled executor service resources. For procedural
  information in this guide, see link:concurrent.html#DAFJBADD[To List
  Managed Scheduled Executor Services].
link:../reference-manual/create-managed-thread-factory.html#GSRFM842[`list-managed-thread-factories`]::
  Lists managed thread factory resources. For procedural information in
  this guide, see link:concurrent.html#DAFDGEGE[To List Managed Thread
  Factories].
link:../reference-manual/delete-context-service.html#GSRFM846[`delete-context-service`]::
  Removes a context service resource. For procedural information in this
  guide, see link:concurrent.html#DAFGGGEC[To Delete a Context Service].
link:../reference-manual/delete-managed-executor-service.html#GSRFM848[`delete-managed-executor-service`]::
  Removes a managed executor service resource. For procedural
  information in this guide, see link:concurrent.html#DAFDAGAD[To Delete
  a Managed Executor Service].
link:../reference-manual/delete-managed-scheduled-executo.html#GSRFM850[`delete-managed-scheduled-executor-service`]::
  Removes a managed scheduled executor service resource. For procedural
  information in this guide, see link:concurrent.html#DAFEBEGC[To Delete
  a Managed Scheduled Executor Service].
link:../reference-manual/delete-managed-thread-factory.html#GSRFM852[`delete-managed-thread-factory`]::
  Removes a managed thread factory resource. For procedural information
  in this guide, see link:concurrent.html#DAFCEDEI[To Delete a Managed
  Thread Factory].

[[giowb]][[GSADG00611]][[connectivity-subcommands]]

=== Connectivity Subcommands

link:../reference-manual/create-admin-object.html#GSRFM00012[`create-admin-object`]::
  Creates an administered object. For procedural information in this
  guide, see link:connectors.html#giolr[To Create an Administered
  Object].
link:../reference-manual/create-connector-connection-pool.html#GSRFM00018[`create-connector-connection-pool`]::
  Adds a new connector connection pool with the specified connection
  pool name. For procedural information in this guide, see
  link:connectors.html#gioce[To Create a Connector Connection Pool].
link:../reference-manual/create-connector-resource.html#GSRFM00019[`create-connector-resource`]::
  Creates a connector resource. For procedural information in this
  guide, see link:connectors.html#giogt[To Create a Connector Resource].
link:../reference-manual/create-connector-security-map.html#GSRFM00020[`create-connector-security-map`]::
  Creates a connector security map for the specified connector
  connection pool. For procedural information, see
  link:connectors.html#gitzz[To Create a Connector Security Map].
link:../reference-manual/create-connector-work-security-m.html#GSRFM00021[`create-connector-work-security-map`]::
  Creates a connector work security map for the specified resource
  adapter. Supported in remote mode only. For procedural information in
  this guide, see link:connectors.html#giofz[To Create a Connector Work
  Security Map].
link:../reference-manual/create-jdbc-resource.html#GSRFM00037[`create-jdbc-resource`]::
  Creates a new JDBC resource. Supported in remote mode only. For
  procedural information in this guide, see link:jdbc.html#ggnda[To
  Create a JDBC Resource].
link:../reference-manual/create-jdbc-connection-pool.html#GSRFM00036[`create-jdbc-connection-pool`]::
  Registers a new JDBC connection pool with the specified JDBC
  connection pool name. Supported in remote mode only. For procedural
  information in this guide, see link:jdbc.html#ggnfv[To Create a JDBC
  Connection Pool].
link:../reference-manual/create-resource-adapter-config.html#GSRFM00054[`create-resource-adapter-config`]::
  Creates configuration information for the connector module. Supported
  in remote mode only. For procedural information in this guide, see
  link:connectors.html#gioqx[To Create Configuration Information for a
  Resource Adapter].
link:../reference-manual/delete-admin-object.html#GSRFM00063[`delete-admin-object`]::
  Deletes an administered object. For procedural information in this
  guide, see link:connectors.html#gioma[To Delete an Administered
  Object].
link:../reference-manual/delete-connector-connection-pool.html#GSRFM00070[`delete-connector-connection-pool`]::
  Removes the connector connection pool specified using the
  `connector_connection_pool_name` operand. For procedural information
  in this guide, see link:connectors.html#giocp[To Delete a Connector
  Connection Pool].
link:../reference-manual/delete-connector-resource.html#GSRFM00071[`delete-connector-resource`]::
  Deletes connector resource. For procedural information in this guide,
  see link:connectors.html#giofs[To Delete a Connector Resource].
link:../reference-manual/delete-connector-security-map.html#GSRFM00072[`delete-connector-security-map`]::
  Deletes a specified connector security map. Supported in remote mode
  only. For procedural information in this guide, see
  link:connectors.html#gitvf[To Delete a Connector Security Map].
link:../reference-manual/delete-connector-work-security-m.html#GSRFM00073[`delete-connector-work-security-map`]::
  Deletes a specified connector work security map. Supported in remote
  mode only. For procedural information in this guide, see
  link:connectors.html#gioin[To Delete a Connector Work Security Map].
link:../reference-manual/delete-jdbc-connection-pool.html#GSRFM00088[`delete-jdbc-connection-pool`]::
  Deletes the specified JDBC connection pool. Supported in remote mode
  only. For procedural information in this guide, see
  link:jdbc.html#ggngb[To Delete a JDBC Connection Pool].
link:../reference-manual/delete-jdbc-resource.html#GSRFM00089[`delete-jdbc-resource`]::
  Deletes a JDBC resource. The specified JNDI name identifies the
  resource to be deleted. Supported in remote mode only. For procedural
  information in this guide, see link:jdbc.html#ggnhz[To Delete a JDBC
  Resource].
link:../reference-manual/delete-resource-adapter-config.html#GSRFM00106[`delete-resource-adapter-config`]::
  Deletes configuration information for the connector module. Supported
  in remote mode only. For procedural information in this guide, see
  link:connectors.html#gionv[To Delete a Resource Adapter Configuration].
link:../reference-manual/flush-connection-pool.html#GSRFM00135[`flush-connection-pool`]::
  Reintializes all connections established in the specified connection.
  For procedural information in this guide, see link:jdbc.html#gjiqp[To
  Reset (Flush) a Connection Pool].
link:../reference-manual/list-admin-objects.html#GSRFM00146[`list-admin-objects`]::
  Lists administered objects. For procedural information in this guide,
  see link:connectors.html#giokm[To List Administered Objects].
link:../reference-manual/list-connector-connection-pools.html#GSRFM00157[`list-connector-connection-pools`]::
  Lists the connector connection pools that have been created. For
  procedural information in this guide, see link:connectors.html#giocg[To
  List Connector Connection Pools].
link:../reference-manual/list-connector-resources.html#GSRFM00158[`list-connector-resources`]::
  Creates connector resources. For procedural information in this guide,
  see link:connectors.html#giohs[To List Connector Resources].
link:../reference-manual/list-connector-security-maps.html#GSRFM00159[`list-connector-security-maps`]::
  Lists the connector security maps belonging to a specified connector
  connection pool. For procedural information in this guide, see
  link:connectors.html#gitwx[To List Connector Security Maps].
link:../reference-manual/list-connector-work-security-map.html#GSRFM00160[`list-connector-work-security-maps`]::
  Lists the existing connector work security maps for a resource
  adapter. Supported in remote mode only. For procedural information in
  this guide, see link:connectors.html#gioir[To List Connector Work
  Security Maps].
link:../reference-manual/list-jdbc-connection-pools.html#GSRFM00173[`list-jdbc-connection-pools`]::
  Lists the existing JDBC connection pools. Supported in remote mode
  only. For procedural information in this guide, see
  link:jdbc.html#ggnby[To List JDBC Connection Pools].
link:../reference-manual/list-jdbc-resources.html#GSRFM00174[`list-jdbc-resources`]::
  Lists the existing JDBC resources. Supported in remote mode only. For
  procedural information in this guide, see link:jdbc.html#ggnhl[To List
  JDBC Resources].
link:../reference-manual/list-resource-adapter-configs.html#GSRFM00196[`list-resource-adapter-configs`]::
  Lists configuration information for the connector modules. Supported
  in remote mode only. For procedural information in this guide, see
  link:connectors.html#giorn[To List Resource Adapter Configurations].
link:../reference-manual/ping-connection-pool.html#GSRFM00214[`ping-connection-pool`]::
  Tests if a JDBC connection pool is usable. Supported in remote mode
  only. For procedural information in this guide, see
  link:jdbc.html#ggnwn[To Contact (Ping) a Connection Pool].
link:../reference-manual/update-connector-security-map.html#GSRFM00252[`update-connector-security-map`]::
  Modifies a security map for the specified connector connection pool.
  For procedural information in this guide, see
  link:connectors.html#gityj[To Update a Connector Security Map].
link:../reference-manual/update-connector-work-security-m.html#GSRFM00253[`update-connector-work-security-map`]::
  Modifies a work security map that belongs to a specific resource
  adapter (connector module). For procedure information in this guide,
  see link:connectors.html#giogm[To Update a Connector Work Security
  Map].

[[gitwu]][[GSADG00612]][[domain-subcommands]]

=== Domain Subcommands

link:../reference-manual/backup-domain.html#GSRFM00003[`backup-domain`]::
  Describes how to back up a domain. Supported in local mode only. For
  procedural information in this guide, see link:domains.html#ggocq[To
  Back Up a Domain].
link:../reference-manual/create-domain.html#GSRFM00023[`create-domain`]::
  Creates the configuration of a domain. A domain can exist independent
  of other domains. Any user who has access to the `asadmin` utility on
  a given host can create a domain and store its configuration in a
  location of choice. For procedural information in this guide, see
  link:domains.html#ggoei[To Create a Domain].
link:../reference-manual/delete-domain.html#GSRFM00075[`delete-domain`]::
  Deletes the specified domain. The domain must be stopped before it can
  be deleted. For procedural information in this guide, see
  link:domains.html#ggofa[To Delete a Domain].
link:../reference-manual/list-backups.html#GSRFM00152[`list-backups`]::
  Lists the existing domain backups. Supported in local mode only. For
  procedural information in this guide, see link:domains.html#ghgod[To
  List Domain Backups].
link:../reference-manual/list-domains.html#GSRFM00163[`list-domains`]::
  Lists the existing domains and their statuses. If the domain directory
  is not specified, the domains in the domain-root-dir, the default for
  which is as-install`/domains`, are displayed. For procedural
  information in this guide, see link:domains.html#ggoco[To List
  Domains].
link:../reference-manual/login.html#GSRFM00210[`login`]::
  Allows you to log in to a domain. For procedural information in this
  guide, see link:domains.html#ghhjz[To Log In to a Domain].
link:../reference-manual/restart-domain.html#GSRFM00218[`restart-domain`]::
  Restarts the Domain Administration Server (DAS) of the specified
  domain. Supported in remote mode only. For procedural information in
  this guide, see link:domains.html#ginqj[To Restart a Domain].
link:../reference-manual/restore-domain.html#GSRFM00221[`restore-domain`]::
  Recovers and domain from a backup file. Supported in local mode only.
  For procedural information in this guide, see
  link:domains.html#ggody[To Restore a Domain].
link:../reference-manual/start-domain.html#GSRFM00235[`start-domain`]::
  Starts a domain. If the domain directory is not specified, the default
  `domain1` in the default domain-root-dir directory is started. If
  there are two or more domains, the domain_name operand must be
  specified. For procedural information in this guide, see
  link:domains.html#ggoda[To Start a Domain].
link:../reference-manual/stop-domain.html#GSRFM00240[`stop-domain`]::
  Stops the domain administration server (DAS) of the specified domain.
  Supported in remote mode only. For procedural information in this
  guide, see link:domains.html#ggoch[To Stop a Domain].
link:../reference-manual/uptime.html#GSRFM00258[`uptime`]::
  Displays the length of time that the domain administration server
  (DAS) has been running since the last restart. Supported in remote
  mode only. For procedural information in this guide, see
  link:domains.html#ghhnt[To Display Domain Uptime].

[[ggltm]][[GSADG00613]][[internet-connectivity-subcommands]]

=== Internet Connectivity Subcommands

link:../reference-manual/create-http.html#GSRFM00025[`create-http`]::
  Creates a set of HTTP parameters for a protocol, which in turn
  configures one or more network listeners. Supported in remote mode
  only. For procedural information in this guide, see
  link:http_https.html#gjhqc[To Create an HTTP Configuration].
link:../reference-manual/create-http-listener.html#GSRFM00030[`create-http-listener`]::
  Creates a new HTTP listener socket. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#ggnfh[To
  Create an Internet Connection].
link:../reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`]::
  Creates a new HTTP listener socket. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#ggnfh[To
  Create an Internet Connection].
link:../reference-manual/create-protocol.html#GSRFM00051[`create-protocol`]::
  Creates a protocol for a listener. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#gjhot[To
  Create a Protocol].
link:../reference-manual/create-transport.html#GSRFM00061[`create-transport`]::
  Creates a transport for a listener. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#gjhps[To
  Create a Transport].
link:../reference-manual/create-virtual-server.html#GSRFM00062[`create-virtual-server`]::
  Creates the specified virtual server element. Supported in remote mode
  only. For procedural information in this guide, see
  link:http_https.html#ggnfr[To Create a Virtual Server].
link:../reference-manual/create-ssl.html#GSRFM00058[`create-ssl`]::
  Creates and configures the SSL element in the selected HTTP listener
  to enable secure communication on that listener/service. Supported in
  remote mode only. For procedural information in this guide, see
  link:http_https.html#ggnbj[To Configure an HTTP Listener for SSL].
link:../reference-manual/delete-http.html#GSRFM00077[`delete-http`]::
  Deletes an existing HTTP configuration. Supported in remote mode only.
  For procedural information in this guide, see
  link:http_https.html#gjhqa[To Delete an HTTP Configuration].
link:../reference-manual/delete-http-listener.html#GSRFM00082[`delete-http-listener`]::
  Deletes the specified HTTP listener. Supported in remote mode only.
  For procedural information in this guide, see
  link:http_https.html#ggndu[To Delete an HTTP Network Listener].
link:../reference-manual/delete-network-listener.html#GSRFM00098[`delete-network-listener`]::
  Deletes the specified HTTP listener. Supported in remote mode only.
  For procedural information in this guide, see
  link:http_https.html#ggndu[To Delete an HTTP Network Listener].
link:../reference-manual/delete-protocol.html#GSRFM00103[`delete-protocol`]::
  Deletes and existing HTTP protocol. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#gjhnx[To
  Delete a Protocol].
link:../reference-manual/delete-ssl.html#GSRFM00109[`delete-ssl`]::
  Deletes the SSL element in the selected HTTP listener. Supported in
  remote mode only. For procedural information in this guide, see
  link:http_https.html#ggncl[To Delete SSL From an HTTP Listener].
link:../reference-manual/delete-transport.html#GSRFM00112[`delete-transport`]::
  Deletes and existing HTTP transport. Supported in remote mode only.
  For procedural information in this guide, see
  link:http_https.html#gjhqp[To Delete a Transport].
link:../reference-manual/delete-virtual-server.html#GSRFM00113[`delete-virtual-server`]::
  Deletes the specified virtual server element. Supported in remote mode
  only. For procedural information in this guide, see
  link:http_https.html#ggnen[To Delete a Virtual Server].
link:../reference-manual/list-http-listeners.html#GSRFM00168[`list-http-listeners`]::
  Lists the existing HTTP listeners. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#ggnbv[To
  List HTTP Network Listeners].
link:../reference-manual/list-network-listeners.html#GSRFM00186[`list-network-listeners`]::
  Lists the existing HTTP listeners. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#ggnbv[To
  List HTTP Network Listeners].
link:../reference-manual/list-protocols.html#GSRFM00195[`list-protocols`]::
  Lists the existing HTTP protocols. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#gjhna[To
  List Protocols].
link:../reference-manual/list-transports.html#GSRFM00206[`list-transports`]::
  Lists the existing HTTP transports. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#gjhmx[To
  List Transports].
link:../reference-manual/list-virtual-servers.html#GSRFM00207[`list-virtual-servers`]::
  Lists the existing virtual servers. Supported in remote mode only. For
  procedural information in this guide, see link:http_https.html#ggndw[To
  List Virtual Servers].

[[ggltf]][[GSADG00614]][[javamail-subcommands]]

=== JavaMail Subcommands

link:../reference-manual/create-javamail-resource.html#GSRFM00035[`create-javamail-resource`]::
  Creates a JavaMail session resource. Supported in remote mode only.
  For procedural information in this guide, see
  link:javamail.html#giowd[To Create a JavaMail Resource].
link:../reference-manual/delete-javamail-resource.html#GSRFM00087[`delete-javamail-resource`]::
  Deletes a JavaMail session resource. Supported in remote mode only.
  For procedural information in this guide, see
  link:javamail.html#gioxj[To Delete a JavaMail Resource].
link:../reference-manual/list-javamail-resources.html#GSRFM00172[`list-javamail-resources`]::
  Creates JavaMail session resources. Supported in remote mode only. For
  procedural information in this guide, see link:javamail.html#giowq[To
  List JavaMail Resources].

[[gipen]][[GSADG00615]][[jms-subcommands]]

=== JMS Subcommands

link:../reference-manual/create-jmsdest.html#GSRFM00038[`create-jmsdest`]::
  Creates a JMS physical destination. Along with the physical
  destination, you use the `create-jms-resource` subcommand to create a
  JMS destination resource that has a `Name` property that specifies the
  physical destination. Supported in remote mode only. For procedural
  information in this guide, see link:jms.html#gioue[To Create a JMS
  Physical Destination].
link:../reference-manual/create-jms-host.html#GSRFM00039[`create-jms-host`]::
  Creates a JMS host within the JMS service. Supported in remote mode
  only. For procedural information in this guide, see
  link:jms.html#gipbh[To Create a JMS Host].
link:../reference-manual/create-jms-resource.html#GSRFM00040[`create-jms-resource`]::
  Creates a JMS connection factory resource or JMS destination resource.
  Supported in remote mode only. Supported in remote mode only. For
  procedural information in this guide, see link:jms.html#giotd[To Create
  a Connection Factory or Destination Resource].
link:../reference-manual/delete-jmsdest.html#GSRFM00090[`delete-jmsdest`]::
  Removes the specified JMS destination. Supported in remote mode only.
  For procedural information in this guide, see link:jms.html#giouv[To
  Delete a JMS Physical Destination].
link:../reference-manual/delete-jms-host.html#GSRFM00091[`delete-jms-host`]::
  Deletes a JMS host within the JMS service. Supported in remote mode
  only. For procedural information in this guide, see
  link:jms.html#gipbv[To Delete a JMS Host].
link:../reference-manual/delete-jms-resource.html#GSRFM00092[`delete-jms-resource`]::
  Deletes a JMS connection factory resource or JMS destination resource.
  Supported in remote mode only. For procedural information in this
  guide, see link:jms.html#giouw[To Delete a Connection Factory or
  Destination Resource].
link:../reference-manual/flush-jmsdest.html#GSRFM00136[`flush-jmsdest`]::
  Purges the messages from a physical destination in the specified JMS
  Service configuration of the specified target. Supported in remote
  mode only. For procedural information in this guide, see
  link:jms.html#giowx[To Purge Messages From a Physical Destination].
link:../reference-manual/jms-ping.html#GSRFM00144[`jms-ping`]::
  Checks if the JMS service (also known as the JMS provider) is up and
  running. Supported in remote mode only. For procedural information in
  this guide, see link:jms.html#gipnh[Troubleshooting the JMS Service].
link:../reference-manual/list-jmsdest.html#GSRFM00175[`list-jmsdest`]::
  Lists the JMS physical destinations. Supported in remote mode only.
  For procedural information in this guide, see link:jms.html#gioyp[To
  List JMS Physical Destinations].
link:../reference-manual/list-jms-hosts.html#GSRFM00176[`list-jms-hosts`]::
  Lists the existing JMS hosts. Supported in remote mode only. For
  procedural information in this guide, see link:jms.html#gipbz[To List
  JMS Hosts].
link:../reference-manual/list-jms-resources.html#GSRFM00177[`list-jms-resources`]::
  Lists the existing JMS connection factory or destination resources.
  Supported in remote mode only. For procedural information in this
  guide, see link:jms.html#giosx[To List JMS Resources].

[[gitws]][[GSADG00616]][[jndi-subcommands]]

=== JNDI Subcommands

link:../reference-manual/create-custom-resource.html#GSRFM00022[`create-custom-resource`]::
  Creates a custom JNDI resource. Supported in remote mode only. For
  procedural information in this guide, see link:jndi.html#giowe[To
  Create a Custom JNDI Resource].
link:../reference-manual/create-jndi-resource.html#GSRFM00041[`create-jndi-resource`]::
  Creates an external JNDI resource. Supported in remote mode only. For
  procedural information in this guide, see link:jndi.html#gitxn[To
  Register an External JNDI Resource].
link:../reference-manual/delete-custom-resource.html#GSRFM00074[`delete-custom-resource`]::
  Deletes a custom JNDI resource. Supported in remote mode only. For
  procedural information in this guide, see link:jndi.html#gioxl[To
  Delete a Custom JNDI Resource].
link:../reference-manual/delete-jndi-resource.html#GSRFM00093[`delete-jndi-resource`]::
  Deletes an external JNDI resource. Supported in remote mode only. For
  procedural information in this guide, see link:jndi.html#gitvt[To
  Delete an External JNDI Resource].
link:../reference-manual/list-custom-resources.html#GSRFM00162[`list-custom-resources`]::
  Lists the existing custom JNDI resources. Supported in remote mode
  only. For procedural information in this guide, see
  link:jndi.html#gioxb[To List Custom JNDI Resources].
link:../reference-manual/list-jndi-entries.html#GSRFM00178[`list-jndi-entries`]::
  Lists the entries in the JNDI tree. Supported in remote mode only. For
  procedural information in this guide, see link:jndi.html#gitwc[To List
  External JNDI Entries],
link:../reference-manual/list-jndi-resources.html#GSRFM00179[`list-jndi-resources`]::
  Lists the existing external JNDI resources. Supported in remote mode
  only. For procedural information in this guide, see
  link:jndi.html#gitvj[To List External JNDI Resources].

[[gglsk]][[GSADG00617]][[jvm-subcommands]]

=== JVM Subcommands

link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`]::
  Creates a JVM option in the Java configuration or profiler elements of
  the `domain.xml` file. Supported in remote mode only. For procedural
  information in this guide, see link:jvm.html#ggnes[To Create JVM
  Options].
link:../reference-manual/create-profiler.html#GSRFM00050[`create-profiler`]::
  Creates a profiler element. Supported in remote mode only. For
  procedural information in this guide, see link:jvm.html#ggneb[To Create
  a Profiler].
link:../reference-manual/delete-jvm-options.html#GSRFM00094[`delete-jvm-options`]::
  Deletes the specified JVM option from the Java configuration or
  profiler elements of the `domain.xml` file. Supported in remote mode
  only. For procedural information in this guide, see
  link:jvm.html#ggnfi[To Delete JVM Options].
link:../reference-manual/delete-profiler.html#GSRFM00102[`delete-profiler`]::
  Deletes the specified profiler element. Supported in remote mode only.
  For procedural information in this guide, see link:jvm.html#ggnem[To
  Delete a Profiler].
link:../reference-manual/generate-jvm-report.html#GSRFM00138[`generate-jvm-report`]::
  Generates a report showing the threads, classes, and memory for the
  virtual machine that runs GlassFish Server. For procedural information
  in this guide, see link:jvm.html#ggnbu[To Generate a JVM Report].
link:../reference-manual/list-jvm-options.html#GSRFM00180[`list-jvm-options`]::
  Lists the command-line options that are passed to the Java application
  launcher when GlassFish Server is started. Supported in remote mode
  only. For procedural information in this guide, see
  link:jvm.html#ggnce[To List JVM Options].

[[giuzl]][[GSADG00618]][[life-cycle-module-subcommands]]

=== Life Cycle Module Subcommands

link:../reference-manual/create-lifecycle-module.html#GSRFM00043[`create-lifecycle-module`]::
  Creates a new life cycle module. Supported in remote mode only. For
  procedural information in this guide, see
  link:lifecycle-modules.html#giuus[To Create a Life Cycle Module].
link:../reference-manual/list-lifecycle-modules.html#GSRFM00181[`list-lifecycle-modules`]::
  Lists life cycle modules. Supported in remote mode only. For
  procedural information in this guide, see
  link:lifecycle-modules.html#giuvh[To List Life Cycle Modules].
link:../reference-manual/delete-lifecycle-module.html#GSRFM00095[`delete-lifecycle-module`]::
  Deletes an existing life cycle module. Supported in remote mode only.
  For procedural information in this guide, see
  link:lifecycle-modules.html#giuux[To Delete a Life Cycle Module].

[[gitxd]][[GSADG00619]][[logging-and-monitoring-subcommands]]

=== Logging and Monitoring Subcommands

link:../reference-manual/collect-log-files.html#GSRFM00007[`collect-log-files`]::
  Collects all available log files and creates a ZIP archive. Supported
  in remote mode only. For procedural information in this guide, see
  link:logging.html#gklbi[To Collect Log Files into a ZIP Archive].
link:../reference-manual/disable-monitoring.html#GSRFM00120[`disable-monitoring`]::
  Disables the monitoring service. Supported in remote mode only. For
  procedural information in this guide, see link:monitoring.html#gglcu[To
  Disable Monitoring].
link:../reference-manual/enable-monitoring.html#GSRFM00128[`enable-monitoring`]::
  Enables the monitoring service. Supported in remote mode only. For
  procedural information in this guide, see link:monitoring.html#ablvr[To
  Enable Monitoring].
link:../reference-manual/list-log-attributes.html#GSRFM00182[`list-log-attributes`]::
  Lists log file attributes. Supported in remote mode only. For
  procedural information in this guide, see
  link:logging.html#gklmn[Configuring the Logging Service].
link:../reference-manual/list-log-levels.html#GSRFM00183[`list-log-levels`]::
  Lists the existing loggers. Supported in remote mode only. For
  procedural information in this guide, see link:logging.html#gjirr[To
  List Log Levels].
link:../reference-manual/list-loggers.html#GSRFM869[`list-loggers`]::
  Lists all public loggers in your distribution of GlassFish Server Open
  Source Edition. Internal loggers are not listed. For procedural
  information in this guide, see link:logging.html#CEGGICGF[To List
  Loggers].
link:../reference-manual/monitor.html#GSRFM00212[`monitor`]::
  Displays monitoring information for the common GlassFish Server
  resources. Supported in remote mode only. For procedural information
  in this guide, see link:monitoring.html#gelol[To View Common Monitoring
  Data].
link:../reference-manual/rotate-log.html#GSRFM00224[`rotate-log`]::
  Rotates the `server.log` file and stores the old data in a
  time-stamped file. Supported in remote mode only. For procedural
  information in this guide, see link:logging.html#gkmau[To Rotate Log
  Files Manually].
link:../reference-manual/set-log-attributes.html#GSRFM00227[`set-log-attributes`]::
  Sets log file attributes. Supported in remote mode only. For
  procedural information in this guide, see
  link:logging.html#gklmn[Configuring the Logging Service].
link:../reference-manual/set-log-file-format.html#GSRFM879[`set-log-file-format`]::
  Sets the formatter used to format log records in log files. For
  procedural information in this guide, see
  link:logging.html#CEGDJEBG[Setting the Log File Format].
link:../reference-manual/set-log-levels.html#GSRFM00228[`set-log-levels`]::
  Sets the log level for a module. Supported in remote mode only. For
  procedural information in this guide, see
  link:logging.html#gklml[Setting Log Levels].

[[giusq]][[GSADG00620]][[orb-subcommands]]

=== ORB Subcommands

link:../reference-manual/create-iiop-listener.html#GSRFM00032[`create-iiop-listener`]::
  Creates an IIOP listener. Supported in remote mode only. For
  procedural information in this guide, see link:orb.html#gioyo[To Create
  an IIOP Listener].
link:../reference-manual/delete-iiop-listener.html#GSRFM00084[`delete-iiop-listener`]::
  Deletes an IIOP listener. Supported in remote mode only. For
  procedural information in this guide, see link:orb.html#giowj[To Delete
  an IIOP Listener].
link:../reference-manual/list-iiop-listeners.html#GSRFM00169[`list-iiop-listeners`]::
  Lists the existing IIOP listeners. Supported in remote mode only. For
  procedural information in this guide, see link:orb.html#giowc[To List
  IIOP Listeners].

[[giuqr]][[GSADG00621]][[thread-pool-subcommands]]

=== Thread Pool Subcommands

link:../reference-manual/create-threadpool.html#GSRFM00060[`create-threadpool`]::
  Creates a new thread pool. Supported in remote mode only. For
  procedural information in this guide, see
  link:threadpools.html#ggkwj[To Create a Thread Pool].
link:../reference-manual/delete-threadpool.html#GSRFM00111[`delete-threadpool`]::
  Deletes the specified thread pool. Supported in remote mode only. For
  procedural information in this guide, see
  link:threadpools.html#ggkwy[To Delete a Thread Pool].
link:../reference-manual/list-threadpools.html#GSRFM00204[`list-threadpools`]::
  Lists the existing thread pools. Supported in remote mode only. For
  procedural information in this guide, see
  link:threadpools.html#giuff[To List Thread Pools].

[[gitxi]][[GSADG00622]][[transaction-service-subcommands]]

=== Transaction Service Subcommands

link:../reference-manual/freeze-transaction-service.html#GSRFM00137[`freeze-transaction-service`]::
  Freezes the transaction subsystem during which time all the in-flight
  transactions are suspended. Supported in remote mode only. For
  procedural information, see link:transactions.html#giufn[To Stop the
  Transaction Service].
link:../reference-manual/recover-transactions.html#GSRFM00216[`recover-transactions`]::
  Manually recovers pending transactions. Supported in remote mode only.
  For procedural information, see link:transactions.html#giuhe[To
  Manually Recover Transactions].
link:../reference-manual/rollback-transaction.html#GSRFM00223[`rollback-transaction`]::
  Rolls back the named transaction. Supported in remote mode only. For
  procedural information, see link:transactions.html#giugk[To Roll Back a
  Transaction].
link:../reference-manual/unfreeze-transaction-service.html#GSRFM00245[`unfreeze-transaction-service`]::
  Resumes all the suspended in-flight transactions. Invoke this
  subcommand on an already frozen transaction. Supported in remote mode
  only. For procedural information, see link:transactions.html#giuet[To
  Restart the Transaction Service].


