type=page
status=published
title=create-system-properties
next=create-threadpool.html
prev=create-ssl.html
~~~~~~

create-system-properties
========================

[[create-system-properties-1]][[GSRFM00059]][[create-system-properties]]

create-system-properties
------------------------

Adds one or more system property elements that can be referenced
elsewhere in the configuration.

[[sthref545]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-system-properties [--help]
[--target target]
[name=value)[:name=value]*]
----

[[sthref546]]

=== Description

The `create-system-properties` subcommand adds or updates system
properties that can be referenced elsewhere on the server.

\{product---name} provides hooks where tokens (system properties) can be
specified. Because \{product---name} does not have multiple server
elements, you can specify a particular token at any level. When a domain
supports multiple servers, the override potential can be exploited. When
a domain is started or restarted, all `<system-property>` elements are
resolved and available to the Java Virtual Machine by using the
`System.setProperty()` call on each of them (with its name and value
derived from the corresponding attributes of the element). This is
analogous to sending the elements as `-D` parameters on the Java command
line.

This subcommand is supported in remote mode only.

[[sthref547]]

=== 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`::
  The target on which you are creating the system properties.

[[sthref548]]

=== Operands

target::
  The valid targets for this subcommand are instance, cluster,
  configuration, domain, and server. Server is the default option. Valid
  values are:

  `server`;;
    Creates the properties on the default server instance. This is the
    default value.
  `domain`;;
    Creates the properties for all server instances in the default
    domain.
  configuration_name;;
    Creates the properties in the specified configuration.
  cluster_name;;
    Creates the properties on all server instances in the specified
    cluster.
  instance_name;;
    Creates the properties on a specified server instance.

name=value::
  The name value pairs of the system properties to add to the specified
  target. Multiple system properties must be separated by a `:` (colon).
  If a `:` (colon) appears in the name or value of a system property, it
  must be escaped with a `\` (blackslash). If any system properties were
  previously defined, they are updated with the new values.

[[sthref549]]

=== Examples

[[GSRFM526]][[sthref550]]

==== Example 1   Creating System Properties

This example creates a system property associated with an HTTP listener
on a server instance named `myserver`.

[source]
----
asadmin> create-system-properties --target myserver http-listener-port=1088
Command create-system-properties executed successfully.
----

[[sthref551]]

=== Exit Status

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

[[sthref552]]

=== See Also

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

link:delete-system-property.html#delete-system-property-1[`delete-system-property`(1)],
link:list-system-properties.html#list-system-properties-1[`list-system-properties`(1)]


