<!--

    Copyright (c) 2005, 2018 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="task-change-clustered-instance-ports" name="task-change-clustered-instance-ports"></a><a id="GHCLU00051" name="GHCLU00051"></a></p>

<h4><a id="sthref95" name="sthref95"></a><a id="sthref96" name="sthref96"></a><a id="sthref97" name="sthref97"></a>To Modify the Port Numbers of a Clustered GlassFish Server Instance</h4>
<a name="BEGIN" id="BEGIN"></a>
<p>The port numbers of a clustered GlassFish Server instance are initially set in the configuration that the instance inherits from its parent cluster. You must modify these port numbers if, for example, two clustered instances reside on the same host. In this situation, port numbers for one instance must be modified because both instances share the same configuration.</p>
<p>The port numbers of an instance are stored as Java system properties. These properties are passed to the Java application launcher through the <code>-D</code> option of the Java application launcher whenGlassFish Server is started.</p>
<ol>
<li>
<p>In the navigation tree, expand the Clusters node.</p>
</li>
<li>
<p>Under the expanded Clusters node, select the node for the cluster.</p>
<p>The General Information page for the cluster opens.</p>
</li>
<li>
<p>On the General Information page, click the Instances tab.</p>
<p>The Clustered Server Instances page for the cluster opens.</p>
</li>
<li>
<p>Select the instance for which to modify port numbers.</p>
<p>The General Information page for the instance opens.</p>
</li>
<li>
<p>On the General Information page, click the Properties tab.</p>
<p>The Instance System Properties page opens.</p>
<p>This page displays the current values of the following system properties for the instance:</p>
<ul>
<li>
<p><a href="../../../common/en/help/ref-predefinedconfigsysproperties.html">Port numbers that are predefined in the instance's configuration</a></p>
</li>
<li>
<p>Custom properties that are defined for the instance, if any</p>
</li>
</ul>
</li>
<li>
<p>For each existing property that you are modifying, type the new value in the Override Value field for the property.</p>
</li>
<li>
<p>Set values for any additional properties that you require.</p>
<ol type="a">
<li>
<p>In the Additional Properties table, click Add Property.</p>
<p>A row is added to the Additional Properties table.</p>
</li>
<li>
<p>In the Instance Variable Name field, type the property name.</p>
</li>
<li>
<p>In the Override Value field, type the value.</p>
</li>
</ol>
</li>
<li>
<p>Click Save.</p>
</li>
</ol>
<a id="sthref98" name="sthref98"></a>
<h5>See Also</h5>
<ul>
<li>
<p><a href="task-create-clustered-instance.html">To Add a GlassFish Server Instance to a Cluster</a></p>
</li>
<li>
<p><a href="task-delete-clustered-instances.html">To Delete Clustered GlassFish Server Instances</a></p>
</li>
<li>
<p><a href="task-start-clustered-instances.html">To Start Clustered GlassFish Server Instances</a></p>
</li>
<li>
<p><a href="task-stop-clustered-instances.html">To Stop Clustered GlassFish Server Instances</a></p>
</li>
<li>
<p><a href="task-view-logs-clustered-instance.html">To View Log Files for a Clustered GlassFish Server Instance</a></p>
</li>
<li>
<p><a href="task-recovertransactions.html">To Recover Transactions for a Clustered GlassFish Server Instance</a></p>
</li>
<li>
<p><a href="task-set-props-clustered-instance.html">To Set Instance-Only Properties for a Clustered GlassFish Server Instance</a></p>
</li>
<li>
<p><a href="task-mon-app-clustered-instance.html">To View Application Monitoring Data for a Clustered GlassFish Server Instance</a></p>
</li>
<li>
<p><a href="task-mon-server-clustered-instance.html">To View Virtual-Server Monitoring Data for a Clustered GlassFish Server Instance</a></p>
</li>
<li>
<p><a href="task-mon-resource-clustered-instance.html">To View Resource Monitoring Data for a Clustered GlassFish Server Instance</a></p>
</li>
</ul>


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