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 {productName} 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.html#GSDPG[{productName} 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.html#GSRFM[{productName} 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 {productName} 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 {productName}. 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 {productName}
  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 {productName}. 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 {productName} 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 {productName}. 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 {productName}
  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].


