<?xml version="1.0"?>
<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->

<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="Java-Broker-Management-Managing-Virtualhost-Nodes">
  <title>Virtualhost Nodes</title>
  <para>Virtualhost nodes can only be managed by the HTTP management channel.</para>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Nodes-Types">
    <title>Types</title>
    <para> The following virtualhost nodes types are supported. <itemizedlist>
        <listitem><para>BDB - Node backed with Oracle Berkeley DB JE</para></listitem>
        <listitem><para>BDB HA - Node backed with Oracle Berkeley DB JE utilising High Availability</para></listitem>
        <listitem><para>DERBY - Node backed with Apache Derby</para></listitem>
        <listitem><para>JDBC - Node backed with an external database <footnote>
              <para>JDBC 4.0 compatible drivers must be available. See <xref linkend="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"/></para>
            </footnote></para></listitem>
        <listitem><para>JSON - Node backed with a file containing json</para></listitem>
        <listitem><para>Memory - In-memory node (changes lost on Broker restart)</para></listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">
    <title>Attributes</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>Name the virtualhost node</emphasis>.</para>
        </listitem>
        <listitem>
          <para><emphasis>Default Virtual Host Node</emphasis>. If true, messaging clients which do
            not specify a virtualhost name will be connected to the virtualhost beneath this node.</para>
        </listitem>
        <listitem>
          <para><emphasis>Store Path or JDBC URL.</emphasis> Refers the location used to store the
            configuration of the virtualhost.</para>
        </listitem>
        <listitem>
          <para><emphasis>Role</emphasis> (HA only). The role that this node is currently playing in
            the group. <itemizedlist>
              <listitem>
                <para>MASTER - Virtualhost node is a master.</para>
              </listitem>
              <listitem>
                <para>REPLICA - Virtualhost node is a replica.</para>
              </listitem>
              <listitem>
                <para>WAITING - Virtualhost node is awaiting an election result, or may be awaiting
                  more nodes to join in order that an election may be held.</para>
              </listitem>
              <listitem>
                <para>DETACHED - Virtualhost node is disconnected from the group.</para>
              </listitem>
            </itemizedlist></para>
        </listitem>
        <listitem>
          <para><emphasis>Priority</emphasis> (HA only). The priority of this node when elections
            occurs. The attribute can be used to make it more likely for a node to be elected than
            other nodes, or disallow the node from never being elected at all. See <xref linkend="Java-Broker-High-Availability-Behaviour-NodePriority"/></para>
        </listitem>
        <listitem>
          <para><emphasis>Minimum Number Of Nodes</emphasis> (HA only - groups of three or more).
            Allows the number of nodes required to hold an election to be reduced in order that
            service can be restore when less than quorum nodes are present. See <xref linkend="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes"/></para>
        </listitem>
        <listitem>
          <para><emphasis>Allow this node to operate solo</emphasis> (HA only - groups of two). Allows a single
            node in a two node group to operate solo. See <xref linkend="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"/></para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Node-Children">
    <title>Children</title>
    <para>
      <itemizedlist>
        <listitem>
          <para>
            <link linkend="Java-Broker-Management-Managing-Virtualhosts">Virtualhost</link>
          </para>
        </listitem>
        <listitem>
          <para>
            <link linkend="Java-Broker-Management-Managing-RemoteReplicationNodes">Remote
              Replication Nodes</link>
          </para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Node-Lifecycle">
    <title>Lifecycle</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>Stop</emphasis>. Stops the virtualhost node. This closes any existing
            messaging connections to the virtualhost and prevents new ones. Any inflight
            transactions are rolled back. Non durable queues and exchanges are lost. Transient
            messages or persistent messages on non-durable queues are lost.</para>
          <para>When HA is in use, stopping the virtualhost node stops the virtualhost node from
            participating in the group. If the node was in the master role, the remaining nodes will
            try to conduct an election and elect a new master. If the node was in the replica role,
            the node will cease to keep up to date with later transactions. A stopped node does not
            vote in elections. Other nodes in the group will report the stopped node as
            unreachable.</para>
        </listitem>
        <listitem>
          <para><emphasis>Start</emphasis>. Activates the virtualhost node.</para>
        </listitem>
        <listitem>
          <para><emphasis>Delete</emphasis>. Deletes the virtualhost node and the virtualhost
            contained within it. All exchanges and queues, any the messages contained within it are
            removed. In the HA case, deleting the virtualhost node causes it be removed permanently
            from the group.</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
</section>
