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

= create-module-config

[[create-module-config-1]][[GSRFM844]][[create-module-config]]

== create-module-config

Adds the default configuration of a module to `domain.xml`

[[sthref429]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-module-config [--help]
[--dryrun={false|true}]
[--all={false|true}]
[--target target]
[service_name]
----

[[sthref430]]

=== Description

The `create-module-config` subcommand adds the default configuration of
a module to `domain.xml`.

This subcommand is supported in remote mode only.

[[sthref431]]

=== 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.
`--dryrun`::
  Displays the default configuration of a module but does not add it to
  `domain.xml`. The default value is `false`.
`--all`::
  Adds all default configurations of modules to `domain.xml` if they are
  not already in it. The default value is `false`.
`--target`::
  Specifies the target to which the default configuration is being added.
  Possible values are as follows:

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

[[sthref432]]

=== Operands

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

[[sthref433]]

=== Examples

[[GSRFM845]][[sthref434]]

==== Example 1   Adding a Default Configuration to domain.xml

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

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

[[sthref435]]

=== Exit Status

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

[[sthref436]]

=== See Also

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

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


