type=page
status=published
title=delete-module-config
next=delete-network-listener.html
prev=delete-message-security-provider.html
~~~~~~

= delete-module-config

[[delete-module-config-1]][[GSRFM854]][[delete-module-config]]

== delete-module-config

Removes the configuration of a module from `domain.xml`

[[sthref882]]

=== Synopsis

[source]
----
asadmin [asadmin-options] delete-module-config [--help]
[--target target]
service_name
----

[[sthref883]]

=== Description

The `delete-module-config` subcommand removes the configuration of a
module from `domain.xml` and causes the module to use the default
configuration included in the module.

This subcommand is supported in remote mode only.

[[sthref884]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--target`::
  Specifies the target from which the configuration is to be deleted.
  Possible values are as follows:

  `server`;;
    Deletes the configuration from the default server instance. This is
    the default value.
  `domain`;;
    Deletes the configuration from the default domain.
  cluster-name;;
    Deletes the configuration from every server instance in the
    specified cluster.
  instance-name;;
    Deletes the configuration from the specified instance.

[[sthref885]]

=== Operands

service_name::
  The name of the module for which configuration is to be removed.

[[sthref886]]

=== Examples

[[GSRFM855]][[sthref887]]

==== Example 1   Deleting a Default 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.
----

[[sthref888]]

=== Exit Status

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

[[sthref889]]

=== See Also

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

link:create-module-config.html#create-module-config-1[`create-module-config`(1)],
link:get-active-module-config.html#get-active-module-config-1[`get-active-module-config`(1)]


