<!--

    Copyright (c) 2005, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<p><a id="ref-clusterinstanceconfigproperties" name="ref-clusterinstanceconfigproperties"></a><a id="GHCLU00010" name="GHCLU00010"></a></p>

<h4><a id="sthref283" name="sthref283"></a><a id="sthref284" name="sthref284"></a><a id="sthref285" name="sthref285"></a>Instance System Properties</h4>
<a name="BEGIN" id="BEGIN"></a>
<p>The Instance System Properties page displays a list of the Java system properties that are set for the current GlassFish Server instance. Java system properties are passed to the Java application launcher through the <code>-D</code> option of the Java application launcher whenGlassFish Server is started.</p>
<p>These properties override property definitions for port settings in the instance's configuration. Predefined port settings must be overridden if, for example, two clustered instances reside on the same host. In this situation, port settings for one instance must be overridden because both instances share the same configuration.</p>
<p>For information about predefined port settings in a configuration, see <a href="../../../common/en/help/ref-predefinedconfigsysproperties.html">Predefined Configuration System Properties</a>.</p>
<p>The Instance Name field is a read-only field that displays the name of the current instance.</p>
<p>For each property, the following information is displayed:</p>
<dl>
<dt>Instance Variable Name</dt>
<dd>
<p>The name of the system property.</p>
</dd>
<dt>Current Value</dt>
<dd>
<p>The value that is currently set for the property. This field is read only.</p>
</dd>
<dt>Override Value</dt>
<dd>
<p>The value to which the property will be set after changes are saved.</p>
</dd>
</dl>
<p>The Additional Properties table also contains the following options.</p>
<dl>
<dt>Add Property</dt>
<dd>
<p>Button to add a property. Clicking this button adds a row to the Additional Properties table.</p>
</dd>
<dt>Delete Properties</dt>
<dd>
<p>Button to delete one or more selected properties. Any property that is deleted reverts to its default value or, if no default value is set, is undefined.</p>
</dd>
</dl>
<a id="sthref286" name="sthref286"></a>
<h5>Related Tasks</h5>
<ul>
<li>
<p><a href="task-change-clustered-instance-ports.html">To Modify the Port Numbers of a Clustered GlassFish Server Instance</a></p>
</li>
<li>
<p><a href="task-config-sys-properties-defaults.html">To Set Default Values for Configuration System Properties</a></p>
</li>
</ul>
<a id="sthref287" name="sthref287"></a>
<h5>Equivalent asadmin Subcommands</h5>
<ul>
<li>
<p><a href="https://eclipse-ee4j.github.io/glassfish/docs/latest/reference-manual/create-system-properties.html#GSRFM00059"><code>create-system-properties</code>(1)</a></p>
</li>
<li>
<p><a href="https://eclipse-ee4j.github.io/glassfish/docs/latest/reference-manual/delete-system-property.html#GSRFM00110"><code>delete-system-property</code>(1)</a></p>
</li>
<li>
<p><a href="https://eclipse-ee4j.github.io/glassfish/docs/latest/reference-manual/list-system-properties.html#GSRFM00203"><code>list-system-properties</code>(1)</a></p>
</li>
</ul>


<small>Copyright &#169; 2005, 2020, Oracle and/or its affiliates. All rights reserved. <a href="docinfo.html">Legal Notices</a></small>
