type=page
status=published
title=create-virtual-server
next=delete-admin-object.html
prev=create-transport.html
~~~~~~

= create-virtual-server

[[create-virtual-server-1]][[GSRFM00062]][[create-virtual-server]]

== create-virtual-server

Creates the named virtual server

[[sthref569]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-virtual-server [--help]
--hosts hosts
[--httplisteners http-listeners]
[--networklisteners network-listeners]
[--defaultwebmodule default-web-module]
[--state={on|off}]
[--logfile log-file]
[--property (name=value)[:name=value]*]
[--target target]
virtual-server-id
----

[[sthref570]]

=== Description

The `create-virtual-server` subcommand creates the named virtual server.
Virtualization in the {productName} allows multiple URL domains to
be served by a single HTTP server process that is listening on multiple
host addresses. If the application is available at two virtual servers,
they still share the same physical resource pools.

This subcommand is supported in remote mode only.

[[sthref571]]

=== 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.
`--hosts`::
  A comma-separated (,) list of values allowed in the host request
  header to select the current virtual server. Each virtual server that
  is configured to the same connection group must have a unique host for
  that group.
`--httplisteners`::
  A comma-separated (,) list of HTTP listener IDs. Required only for a
  virtual server that is not the default virtual server. HTTP listeners
  are converted to network listeners. This option is deprecated but
  maintained for backward compatibility. Use `--networklisteners`
  instead. If `--networklisteners` is used, this option is ignored.
`--networklisteners`::
  A comma-separated (,) list of network listener IDs. Required only for
  a virtual server that is not the default virtual server.
`--defaultwebmodule`::
  The standalone web module associated with this virtual server by
  default.
`--state`::
  Determines whether a virtual server is active (`on`) or inactive
  (`off` or disabled). Default is `on`. When inactive, the virtual
  server does not service requests.
`--logfile`::
  Name of the file where log entries for this virtual server are to be
  written. By default, this is the server log. The file and directory in
  which the access log is kept must be writable by the user account
  under which the server runs.
`--property`::
  Optional property name/value pairs for configuring the virtual server.
  The following properties are available:

  `sso-max-inactive-seconds`;;
    Specifies the number of seconds after which a user's single sign-on
    record becomes eligible for purging if no client activity is
    received. Since single sign-on applies across several applications
    on the same virtual server, access to any of the applications keeps
    the single sign-on record active. The default value is 300 seconds
    (5 minutes). Higher values provide longer single sign-on persistence
    for users, but at the expense of more memory use on the server.
  `sso-reap-interval-seconds`;;
    Specifies the number of seconds between purges of expired single
    sign-on records. The default value is 60.
  `setCacheControl`;;
    Specifies a comma-separated list of `Cache-Control` response
    directives. For a list of valid directives, see section 14.9 of the
    document at http://www.ietf.org/rfc/rfc2616.txt
    (`http://www.ietf.org/rfc/rfc2616.txt`).
  `allowLinking`;;
    If the value of this property is `true`, resources that are symbolic
    links will be served for all web applications deployed on this
    virtual server. Individual web applications may override this
    setting by using the property `allowLinking` under the `sun-web-app`
    element in the `sun-web.xml` file:
+
[source,xml]
----
<sun-web-app>
<property name="allowLinking" value="[true|false]"/>
</sun-web-app>
----
+
The default value is `true`.
  `accessLogWriteInterval`;;
    Indicates the number of seconds before the log will be written to
    the disk. The access log is written when the buffer is full or when
    the interval expires. If the value is 0 (zero), then the buffer is
    always written even if it is not full. This means that each time the
    server is accessed, the log message is stored directly to the file.
  `accessLogBufferSize`;;
    Specifies the size, in bytes, of the buffer where access log calls
    are stored.
  `allowRemoteAddress`;;
    This is a comma-separated list of regular expression patterns to
    which the remote client's IP address is compared. If this property
    is specified, the remote address must match for this request to be
    accepted. If this property is not specified, all requests will be
    accepted unless the remote address matches a `denyRemoteAddress`
    pattern. The default value for this property is null.
  `denyRemoteAddress`;;
    This is a comma-separated list of regular expression patterns to
    which the remote client's IP address is compared. If this property
    is specified, the remote address must not match for this request to
    be accepted. If this property is not specified, request acceptance
    is governed solely by the `allowRemoteAddress` property. The default
    value for this property is null.
  `allowRemoteHost`;;
    This is a comma-separated list of regular expression patterns to
    which the remote client's host name (as returned by
    `java.net.Socket.getInetAddress().getHostName()`) is compared. If
    this property is specified, the remote host name must match for this
    request to be accepted. If this property is not specified, all
    requests will be accepted unless the remote host name matches a
    denyRemoteHost pattern. The default value for this property is null.
  `denyRemoteHost`;;
    This is a comma-separated list of regular expression patterns to
    which the remote client's host name (as returned by
    `java.net.Socket.getInetAddress().getHostName()`) is compared. If
    this property is specified, the remote host name must not match for
    this request to be accepted. If this property is not specified,
    request acceptance is governed solely by the `allowRemoteHost`
    property. The default value for this property is null.
  `authRealm`;;
    Specifies the `name` attribute of an `auth-realm`, which overrides
    the server instance's default realm for standalone web applications
    deployed to this virtual server. A realm defined in a standalone web
    application's `web.xml` file overrides the virtual server's realm.
  `securePagesWithPragma`;;
    Set this property to `false` to ensure that for all web applications
    on this virtual server file downloads using SSL work properly in
    Internet Explorer. +
    You can set this property for a specific web application. For
    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
    Server Open Source Edition Application Deployment Guide.
  `contextXmlDefault`;;
    Specifies the location, relative to domain-dir, of the `context.xml`
    file for this virtual server, if one is used. For more information
    about the `context.xml` file, see "link:../application-development-guide/webapps.html#GSDVG00416[Using a
    context.xml File]" in GlassFish Server Open Source Edition
    Application Development Guide and The Context Container
    (`http://tomcat.apache.org/tomcat-5.5-doc/config/context.html`).
    Context parameters, environment entries, and resource definitions in
    `context.xml` are supported in the {productName}.
  `alternatedocroot_n`;;
    Specifies an alternate document root (docroot), where n is a
    positive integer that allows specification of more than one.
    Alternate docroots allow web applications to serve requests for
    certain resources from outside their own docroot, based on whether
    those requests match one (or more) of the URI patterns of the web
    application's alternate docroots. +
    If a request matches an alternate docroot's URI pattern, it is
    mapped to the alternate docroot by appending the request URI (minus
    the web application's context root) to the alternate docroot's
    physical location (directory). If a request matches multiple URI
    patterns, the alternate docroot is determined according to the
    following precedence order:
+
--
    * Exact match
    * Longest path match
    * Extension match
--
+
For example, the following properties specify three alternate
    docroots. The URI pattern of the first alternate docroot uses an
    exact match, whereas the URI patterns of the second and third
    alternate docroots use extension and longest path prefix matches, respectively.
+
[source,xml]
----
<property name="alternatedocroot_1"
   value="from=/my.jpg dir=/srv/images/jpg"/>
<property name="alternatedocroot_2"
   value="from=*.jpg dir=/srv/images/jpg"/>
<property name="alternatedocroot_3"
   value="from=/jpg/* dir=/src/images"/>
----
+
The `value` of each alternate docroot has two components: The first
    component, `from`, specifies the alternate docroot's URI pattern,
    and the second component, `dir`, specifies the alternate docroot's
    physical location (directory). Spaces are allowed in the `dir`
    component. +
    You can set this property for a specific web application. For
    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
    Server Open Source Edition Application Deployment Guide.
  `send-error_n`;;
    Specifies custom error page mappings for the virtual server, which
    are inherited by all web applications deployed on the virtual
    server. A web application can override these custom error page
    mappings in its `web.xml` deployment descriptor. The value of each
    `send-error_n` property has three components, which may be specified
    in any order:
+
--
    * The first component, `code`, specifies the three-digit HTTP response
    status code for which the custom error page should be returned in
    the response.
    * The second component, `path`, specifies the absolute or relative
    file system path of the custom error page. A relative file system
    path is interpreted as relative to the domain-dir`/config`
    directory.
    * The third component, `reason`, is optional and specifies the text of
    the reason string (such as `Unauthorized` or `Forbidden`) to be
    returned.
--
For example:
+
[source,xml]
----
<property name="send-error_1"
   value="code=401 path=/myhost/401.html reason=MY-401-REASON"/>
----
    This example property definition causes the contents of
    `/myhost/401.html` to be returned with 401 responses, along with
    this response line:
+
[source]
----
HTTP/1.1 401 MY-401-REASON
----

  ``redirect_``n;;
    Specifies that a request for an old URL is treated as a request for
    a new URL. These properties are inherited by all web applications
    deployed on the virtual server. The value of each `redirect_n`
    property has two components, which may be specified in any order:
+
--
    * The first component, `from`, specifies the prefix of the requested URI to match.
    * The second component, `url-prefix`, specifies the new URL prefix to
      return to the client. The from prefix is simply replaced by this URL prefix.
--
+
For example:
+
[source,xml]
----
<property name="redirect_1" value="from=/dummy url-prefix=http://etude"/>
----

  ``valve_``n;;
    Specifies a fully qualified class name of a custom valve, where n is
    a positive integer that allows specification of more than one.
    The valve class must implement the `org.apache.catalina.Valve` interface
    from Tomcat or previous {productName} releases, or the
    `org.glassfish.web.valve.GlassFishValve` interface from the current
    {productName} release. For example:
+
[source,xml]
----
<property name="valve_1" value="org.glassfish.extension.Valve"/>
----
+
You can set this property for a specific web application. For
    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
    Server Open Source Edition Application Deployment Guide.
  ``listener_n``;;
    Specifies a fully qualified class name of a custom Catalina
    listener, where n is a positive integer that allows specification of
    more than one. The listener class must implement the
    `org.apache.catalina.ContainerListener` or
    `org.apache.catalina.LifecycleListener` interface. For example:
+
[source,xml]
----
<property name="listener_1"
   value="org.glassfish.extension.MyLifecycleListener"/>
----
+
You can set this property for a specific web application. For
    details, see "link:../application-deployment-guide/dd-elements.html#GSDPG00161[glassfish-web-app]" in GlassFish
    Server Open Source Edition Application Deployment Guide.
  `docroot`;;
    Absolute path to root document directory for server. Deprecated.
    Replaced with a `virtual-server` attribute, `docroot`, that is
    accessible using the `get`, `set`, and `list` subcommands.
  `accesslog`;;
    Absolute path to server access logs. Deprecated. Replaced with a
    `virtual-server` attribute , `access-log`, that is accessible using
    the `get`, `set`, and `list` subcommands.
  `accessLoggingEnabled`;;
    If `true`, access logging is enabled for this virtual server.
    Deprecated. Replaced with a `virtual-server` attribute,
    `access-logging-enabled`, that is accessible using the `get`, `set`,
    and `list` subcommands.
  `sso-enabled`;;
    If `true`, single sign-on is enabled for web applications on this
    virtual server that are configured for the same realm. Deprecated.
    Replaced with a `virtual-server` attribute, `sso-enabled`, that is
    accessible using the `get`, `set`, and `list` subcommands.
  `ssoCookieSecure`;;
    Sets the `Secure` attribute of any `JSESSIONIDSSO` cookies
    associated with the web applications deployed to this virtual
    server. Deprecated. Replaced with a `virtual-server` attribute,
    `sso-cookie-secure`, that is accessible using the `get`, `set`, and
    `list` subcommands.
  `errorReportValve`;;
    Specifies a fully qualified class name of a custom valve that
    produces default error pages for applications on this virtual
    server. Specify an empty string to disable the default error page
    mechanism for this virtual server.

`--target`::
  Creates the virtual server only on the specified target. Valid values
  are as follows:

  `server`;;
    Creates the virtual server on the default server instance.
    This is the default value.
  configuration-name;;
    Creates the virtual server in the specified configuration.
  cluster-name;;
    Creates the virtual server on all server instances in the specified cluster.
  standalone-instance-name;;
    Creates the virtual server on the specified standalone server instance.

[[sthref572]]

=== Operands

virtual-server-id::
  Identifies the unique ID for the virtual server to be created. This ID
  cannot begin with a number.

[[sthref573]]

=== Examples

[[GSRFM529]][[sthref574]]

==== Example 1   Creating a Virtual Server

The following command creates a virtual server named `sampleServer`:

[source]
----
asadmin> create-virtual-server --hosts pigeon,localhost
--property authRealm=ldap sampleServer
Command create-virtual-server executed successfully.
----

[[sthref575]]

=== Exit Status

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

[[sthref576]]

=== See Also

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

link:delete-virtual-server.html#delete-virtual-server-1[`delete-virtual-server`(1)],
link:list-virtual-servers.html#list-virtual-servers-1[`list-virtual-servers`(1)],
link:create-http-listener.html#create-http-listener-1[`create-http-listener`(1)],
link:create-network-listener.html#create-network-listener-1[`create-network-listener`(1)]

link:get.html#get-1[`get`(1)], link:list.html#list-1[`list`(1)],
link:set.html#set-1[`set`(1)]


