type=page
status=published
title=create-domain
next=create-file-user.html
prev=create-custom-resource.html
~~~~~~

create-domain
=============

[[create-domain-1]][[GSRFM00023]][[create-domain]]

create-domain
-------------

Creates a domain

[[sthref208]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-domain [--help]
[--adminport adminport]
[--instanceport instanceport]
[--portbase portbase]
[--profile profile-name]
[--template template-name]
[--domaindir domaindir]
[--savemasterpassword={false|true}]
[--usemasterpassword={false|true}]
[--domainproperties (name=value)[:name=value]*]
[--keytooloptions (name=value)[:name=value]*]
[--savelogin={false|true}]
[--checkports={true|false}]
[--nopassword={false|true}]
domain-name
----

[[sthref209]]

=== Description

The `create-domain` subcommand creates a \{product---name} domain. A
domain in \{product---name} is an administrative namespace that complies
with the Java Platform, Enterprise Edition (Java EE) standard. Every
domain has a configuration, which is stored in a set of files. Any
number of domains, each of which has a distinct administrative identity,
can be created in a given installation of \{product---name}. A domain
can exist independently of other domains.

Any user who has access to the `asadmin` utility on a given system can
create a domain and store its configuration in a folder of the user's
choosing. By default, the domain configuration is created in the default
directory for domains. You can override this location to store the
configuration elsewhere.

If domain customizers are found in JAR files in the as-install`/modules`
directory when the `create-domain` subcommand is run, the customizers
are processed. A domain customizer is a class that implements the
`DomainInitializer` interface.

The `create-domain` subcommand creates a domain with a single
administrative user specified by the `asadmin` utility option `--user`.
If the `--user` option is not specified, and the `--nopassword` option
is set to true, the default administrative user, `admin`, is used. If
the `--nopassword` option is set to false (the default), a username is
required. In this case, if you have not specified the user name by using
the `--user` option, you are prompted to do so.

You choose an appropriate profile for the domain, depending on the
applications that you want to run on your new domain. You can choose the
developer, cluster, or enterprise profile for the domain you create.

This subcommand is supported in local mode only.

[[sthref210]]

=== 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.
`--adminport`::
  The HTTP port or the HTTPS port for administration. This port is the
  port in the URL that you specify in your web browser to manage the
  domain, for example, `http://localhost:4949`. The `--adminport` option
  cannot be used with the `--portbase` option. The default value is 4848. +
  The `--adminport` option overrides the `domain.adminPort` property of
  the `--domainproperties` option.
`--instanceport`::
  The domain provides services so that applications can run when
  deployed. This HTTP port specifies where the web application context
  roots are available for a web browser to connect to. This port is a
  positive integer and must be available at the time of domain creation.
  The `--instanceport` option cannot be used with the `--portbase`
  option. The default value is 8080. +
  The `--instanceport` option overrides the `domain.instancePort`
  property of the `--domainproperties` option.
`--portbase`::
  Determines the number with which port assignments should start. A
  domain uses a certain number of ports that are statically assigned.
  The portbase value determines where the assignment should start. The
  values for the ports are calculated as follows:

  * Administration port: portbase + 48
  * HTTP listener port: portbase + 80
  * HTTPS listener port: portbase + 81
  * JMS port: portbase + 76
  * IIOP listener port: portbase + 37
  * Secure IIOP listener port: portbase + 38
  * Secure IIOP with mutual authentication port: portbase + 39
  * JMX port: portbase + 86
  * JPDA debugger port: portbase + 9
  * Felix shell service port for OSGi module management: portbase + 66

+
When the `--portbase` option is specified, the output of this
  subcommand includes a complete list of used ports. +
  The `--portbase` option cannot be used with the `--adminport`,
  `--instanceport`, or the `--domainproperties` option.
`--profile`::
  Do not specify this option. This option is retained for compatibility
  with earlier releases. If you specify this option, a syntax error does
  not occur. Instead, the subcommand runs successfully and displays a
  warning message that the option is ignored.
`--template`::
  The file name, including a relative or absolute path, of a domain
  configuration template to use for creating the domain. If a relative
  path is specified, the subcommand appends the path to the
  as-install`/lib/templates` directory to locate the file. If it is an
  absolute pathname, the subcommand locates the file in the specified
  path. +
  This option enables domains of different types to be created and
  custom domain templates to be defined.
`--domaindir`::
  The directory where the domain is to be created. If specified, the
  path must be accessible in the filesystem. If not specified, the
  domain is created in the default domain directory,
  as-install`/domains`.
`--savemasterpassword`::
  Setting this option to `true` allows the master password to be written
  to the file system. If this option is `true`, the
  `--usemasterpassword` option is also true, regardless of the value
  that is specified on the command line. The default value is `false`. +
  A master password is really a password for the secure key store. A
  domain is designed to keep its own certificate (created at the time of
  domain creation) in a safe place in the configuration location. This
  certificate is called the domain's SSL server certificate. When the
  domain is contacted by a web browser over a secure channel (HTTPS),
  this certificate is presented by the domain. The master password is
  supposed to protect the store (a file) that contains this certificate.
  This file is called `keystore.jks` and is created in the configuration
  directory of the domain created. If however, this option is chosen,
  the master password is saved on the disk in the domain's configuration
  location. The master password is stored in a file called
  `master-password`, which is a Java JCEKS type keystore. The reason for
  using the `--savemasterpassword` option is for unattended system
  boots. In this case, the master password is not prompted for when the
  domain starts because the password will be extracted from this file. +
  It is best to create a master password when creating a domain, because
  the master password is used by the `start-domain` subcommand. For
  security purposes, the default setting should be false, because saving
  the master password on the disk is an insecure practice, unless file
  system permissions are properly set. If the master password is saved,
  then `start-domain` does not prompt for it. The master password gives
  an extra level of security to the environment.
`--usemasterpassword`::
  Specifies whether the key store is encrypted with a master password
  that is built into the system or a user-defined master password. +
  If `false` (default), the keystore is encrypted with a well-known
  password that is built into the system. Encrypting the keystore with a
  password that is built into the system provides no additional
  security. +
  If `true`, the subcommand obtains the master password from the
  `AS_ADMIN_MASTERPASSWORD` entry in the password file or prompts for
  the master password. The password file is specified in the
  `--passwordfile` option of the
  link:asadmin.html#asadmin-1m[`asadmin`(1M)]utility. +
  If the `--savemasterpassword` option is `true`, this option is also
  true, regardless of the value that is specified on the command line.
`--domainproperties`::
  Setting the optional name/value pairs overrides the default values for
  the properties of the domain to be created. The list must be separated
  by the colon (:) character. The `--portbase` options cannot be used
  with the `--domainproperties` option. The following properties are
  available:

  `domain.adminPort`;;
    This property specifies the port number of the HTTP port or the
    HTTPS port for administration. This port is the port in the URL that
    you specify in your web browser to manage the instance, for example,
    `http://localhost:4949`. Valid values are 1-65535. On UNIX, creating
    sockets that listen on ports 1-1024 requires superuser privileges. +
    The `domain.adminPort` property is overridden by the `--adminport`
    option.
  `domain.instancePort`;;
    This property specifies the port number of the port that is used to
    listen for HTTP requests. Valid values are 1-65535. On UNIX,
    creating sockets that listen on ports 1-1024 requires superuser
    privileges. +
    The `domain.instancePort` property is overridden by `--instanceport`
    option.
  `domain.jmxPort`;;
    This property specifies the port number on which the JMX connector
    listens. Valid values are 1-65535. On UNIX, creating sockets that
    listen on ports 1-1024 requires superuser privileges.
  `http.ssl.port`;;
    This property specifies the port number of the port that is used to
    listen for HTTPS requests. Valid values are 1-65535. On UNIX,
    creating sockets that listen on ports 1-1024 requires superuser
    privileges.
  `java.debugger.port`;;
    This property specifies the port number of the port that is used for
    connections to the
    http://java.sun.com/javase/technologies/core/toolsapis/jpda/[Java
    Platform Debugger Architecture (JPDA)]
    (http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html)
    debugger. Valid values are 1-65535. On UNIX, creating sockets that
    listen on ports 1-1024 requires superuser privileges.
  `jms.port`;;
    This property specifies the port number for the Java Message Service
    provider. Valid values are 1-65535. On UNIX, creating sockets that
    listen on ports 1-1024 requires superuser privileges.
  `orb.listener.port`;;
    This property specifies the port number of the port that is used for
    IIOP connections. Valid values are 1-65535. On UNIX, creating
    sockets that listen on ports 1-1024 requires superuser privileges.
  `orb.mutualauth.port`;;
    This property specifies the port number of the port that is used for
    secure IIOP connections with client authentication. Valid values are
    1-65535. On UNIX, creating sockets that listen on ports 1-1024
    requires superuser privileges.
  `orb.ssl.port`;;
    This property specifies the port number of the port that is used for
    secure IIOP connections. Valid values are 1-65535. On UNIX, creating
    sockets that listen on ports 1-1024 requires superuser privileges.
  `osgi.shell.telnet.port`;;
    This property specifies the port number of the port that is used for
    connections to the
    http://felix.apache.org/site/apache-felix-remote-shell.html[Apache
    Felix Remote Shell]
    (http://felix.apache.org/site/apache-felix-remote-shell.html). This
    shell uses the Felix shell service to interact with the OSGi module
    management subsystem. Valid values are 1-65535. On UNIX, creating
    sockets that listen on ports 1-1024 requires superuser privileges.

`--keytooloptions`::
  Specifies an optional list of name-value pairs of keytool options for
  a self-signed server certificate. The certificate is generated during
  the creation of the domain. Each pair in the list must be separated by
  the colon (:) character. +
  Allowed options are as follows:

  `CN`;;
    Specifies the common name of the host that is to be used for the
    self-signed certificate. This option name is case insensitive. +
    By default, the name is the fully-qualified name of the host where
    the `create-domain` subcommand is run.

`--savelogin`::
  If set to true, this option saves the administration user name and
  password. Default value is false. The username and password are stored
  in the `.asadminpass` file in user's home directory. A domain can only
  be created locally. Therefore, when using the `--savelogin` option,
  the host name saved in `.asadminpass` is always `localhost`. If the
  user has specified default administration port while creating the
  domain, there is no need to specify `--user`, `--passwordfile`,
  `--host`, or `--port` on any of the subsequent `asadmin` remote
  commands. These values will be obtained automatically.
+

[NOTE]
====
When the same user creates multiple domains that have the same
administration port number on the same or different host (where the
home directory is NFS mounted), the subcommand does not ask if the
password should be overwritten. The password will always be
overwritten.
====
`--checkports`::
  Specifies whether to check for the availability of the administration,
  HTTP, JMS, JMX, and IIOP ports. The default value is true.
`--nopassword`::
  Specifies whether the administrative user will have a password. If
  false (the default), the password is specified by the
  `AS_ADMIN_PASSWORD` entry in the `asadmin` password file (set by using
  the `--passwordfile` option). If false and the `AS_ADMIN_PASSWORD` is
  not set, you are prompted for the password. +
  If true, the administrative user is created without a password. If a
  user name for the domain is not specified by using the `--user`
  option, and the `--nopassword` option is set to true, the default user
  name, `admin`, is used.

[[sthref211]]

=== Operands

domain-name::
  The name of the domain to be created. The name may contain only ASCII
  characters and must be a valid directory name for the operating system
  on the host where the domain is created.

[[sthref212]]

=== Examples

[[GSRFM471]][[sthref213]]

==== Example 1   Creating a Domain

This example creates a domain named `domain4`.

[source]
----
asadmin>create-domain --adminport 4848 domain4
Enter admin user name [Enter to accept default "admin" / no password]>
Using port 4848 for Admin.
Using default port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
No domain initializers found, bypassing customization step
Domain domain4 created.
Domain domain4 admin port is 4848.
Domain domain4 allows admin login as user "admin" with no password.
Command create-domain executed successfully.
----

[[GSRFM472]][[sthref214]]

==== Example 2   Creating a Domain in an Alternate Directory

This example creates a domain named `sampleDomain` in the
`/home/someuser/domains` directory.

[source]
----
asadmin> create-domain --domaindir /home/someuser/domains --adminport 7070
--instanceport 7071 sampleDomain
Enter admin user name [Enter to accept default "admin" / no password]>
Using port 7070 for Admin.
Using port 7071 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Enterprise ServiceDistinguished Name of the self-signed X.509 Server Certificate is:
[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
No domain initializers found, bypassing customization step
Domain sampleDomain created.
Domain sampleDomain admin port is 7070.
Domain sampleDomain allows admin login as user "admin" with no password.
Command create-domain executed successfully.
----

[[GSRFM473]][[sthref215]]

==== Example 3   Creating a Domain and Saving the Administration User Name and Password

This example creates a domain named `myDomain` and saves the
administration username and password.

[source]
----
asadmin> create-domain --adminport 8282 --savelogin=true myDomain
Enter the admin password [Enter to accept default of no password]>
Enter the master password [Enter to accept default password "changeit"]>
Using port 8282 for Admin.
Using default port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Enterprise ServiceDistinguished Name of the self-signed X.509 Server Certificate is:
[CN=sr1-usca-22,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
No domain initializers found, bypassing customization step
Domain myDomain created.
Domain myDomain admin port is 8282.
Domain myDomain allows admin login as user "admin" with no password.
Login information relevant to admin user name [admin]
for this domain [myDomain] stored at
[/home/someuser/.asadminpass] successfully.
Make sure that this file remains protected.
Information stored in this file will be used by
asadmin commands to manage this domain.
Command create-domain executed successfully.
----

[[GSRFM474]][[sthref216]]

==== Example 4   Creating a Domain and Designating the Certificate Host

This example creates a domain named `domain5`. The common name of the
host that is to be used for the self-signed certificate is `trio`.

[source]
----
asadmin> create-domain --adminport 9898 --keytooloptions CN=trio domain5
Enter the admin password [Enter to accept default of no password]>
Enter the master password [Enter to accept default password "changeit"]>
Using port 9898 for Admin.
Using default port 8080 for HTTP Instance.
Using default port 7676 for JMS.
Using default port 3700 for IIOP.
Using default port 8181 for HTTP_SSL.
Using default port 3820 for IIOP_SSL.
Using default port 3920 for IIOP_MUTUALAUTH.
Using default port 8686 for JMX_ADMIN.
Using default port 6666 for OSGI_SHELL.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=trio,OU=GlassFish,O=Oracle Corp.,L=Redwood Shores,ST=California,C=US]
No domain initializers found, bypassing customization step
Domain domain5 created.
Domain domain5 admin port is 9898.
Domain domain5 allows admin login as user "admin" with no password.
Command create-domain executed successfully.
----

[[sthref217]]

=== Exit Status

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

[[sthref218]]

=== See Also

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

link:delete-domain.html#delete-domain-1[`delete-domain`(1)],
link:list-domains.html#list-domains-1[`list-domains`(1)],
link:login.html#login-1[`login`(1)],
link:start-domain.html#start-domain-1[`start-domain`(1)],
link:stop-domain.html#stop-domain-1[`stop-domain`(1)]

Apache Felix Remote Shell
(`http://felix.apache.org/site/apache-felix-remote-shell.html`), Java
Platform Debugger Architecture (JPDA)
(`http://www.oracle.com/technetwork/java/javase/tech/jpda-141715.html`)


