<?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-Virtualhosts">
  <title>VirtualHosts</title>
  <para>A virtualhost is a independent namespace in which messaging is performed. Virtualhosts are
    responsible for the storage of message data.</para>
  <para>Virtualhosts can only be managed by the HTTP management channel.</para>
  <section xml:id="Java-Broker-Management-Managing-Virtualhosts-Types">
    <title>Types</title>
    <para>The following virtualhost types are supported. <itemizedlist>
        <listitem>
          <para>BDB - Virtualhost backed with Oracle BDB <footnote>
              <para>Oracle BDB JE is optional. See <xref linkend="Java-Broker-Miscellaneous-Installing-Oracle-BDB-JE"/>.</para>
            </footnote></para>
        </listitem>
        <listitem>
          <para>BDB HA - Virtualhost backed with Oracle BDB utilising High Availability</para>
        </listitem>
        <listitem>
          <para>DERBY - Virtualhost backed with Apache Derby</para>
        </listitem>
        <listitem>
          <para>JDBC - Virtualhost 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>Memory - In-memory node (changes lost on Broker restart)</para>
        </listitem>
        <listitem>
          <para>Provided - Virtualhost that co-locates message data within the parent virtualhost
            node <footnote>
              <para>Not available if Virtualhost Node type is JSON.</para>
            </footnote>.</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Context">
    <title>Context</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>use_async_message_store_recovery</emphasis> Controls the <link linkend="Java-Broker-Runtime-Background-Recovery">background recovery</link>
            feature.</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Attributes">
    <title>Attributes</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>Name the virtualhost</emphasis>. This is the name the messaging clients
            refer to when forming a connection to the Broker.</para>
        </listitem>
        <listitem>
          <para><emphasis>Store Path/JDBC URL</emphasis>. Refers the file system location or
            database URL used to store the message data.</para>
        </listitem>
        <listitem>
          <para><emphasis>Store overflow/underflow</emphasis>. Some virtualhosts have the ability to
            limit the of the cumulative size of all the messages contained within the store. This
            feature is described in detail <xref linkend="Java-Broker-Runtime-Disk-Space-Management"/>.</para>
        </listitem>
        <listitem>
          <para><emphasis>Connection thread pool size</emphasis>. Number of worker threads
            used to perform messaging with connected clients.  </para>
          <para>Defaults to 64 or double the maximum number of available processors, whichever
            is the larger.</para>
        </listitem>
        <listitem>
          <para><emphasis>Number of selectors</emphasis>. Number of worker threads
            used from the thread pool to dispatch I/O activity to the worker threads.</para>
          <para>Defaults to one eighth of the thread pool size. Minimum 1.</para>
        </listitem>
        <listitem>
          <para><emphasis>Store transaction timeouts</emphasis>. Warns of long running producer
            transactions. See <xref linkend="Java-Broker-Runtime-Producer-Transaction-Timeout"/></para>
        </listitem>
        <listitem>
          <para><emphasis>Synchronization policy</emphasis>. HA only. See <xref linkend="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy"/></para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Children">
    <title>Children</title>
    <para>
      <itemizedlist>
        <listitem>
          <para>
            <link linkend="Java-Broker-Management-Managing-Exchanges">Exchange</link>
          </para>
        </listitem>
        <listitem>
          <para>
            <link linkend="Java-Broker-Management-Managing-Queues">Queue</link>
          </para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
  <section xml:id="Java-Broker-Management-Managing-Virtualhost-Lifecycle">
    <title>Lifecycle</title>
    <para>
      <itemizedlist>
        <listitem>
          <para><emphasis>Stop</emphasis>. Stops the virtualhost. This closes any existing messaging
            connections to the virtualhost and prevents new ones. Any inflight transactions are
            rolled back. Non durable queues and non durable exchanges are lost. Transient messages
            or persistent messages on non-durable queues are lost.</para>
        </listitem>
        <listitem>
          <para><emphasis>Start</emphasis>. Activates the virtualhost.</para>
        </listitem>
      </itemizedlist>
    </para>
  </section>
</section>
