summaryrefslogtreecommitdiff
path: root/qpid
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2015-04-15 10:00:55 +0000
committerAlex Rudyy <orudyy@apache.org>2015-04-15 10:00:55 +0000
commitb15e32a943ae269c1c7dae4b2084e2ad87f3940d (patch)
tree8b3206ffa501d186fee43b3cc3ab3ef924b53e3b /qpid
parent0a0baee45ebcff44635907d457c4ff6810b09c87 (diff)
downloadqpid-python-b15e32a943ae269c1c7dae4b2084e2ad87f3940d.tar.gz
QPID-6481: Move java broker docbook into java source tree
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1673703 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid')
-rw-r--r--qpid/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml42
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Appendix-Environment-Variables.xml126
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Appendix-Miscellaneous.xml103
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Appendix-Operational-Logging-Messages.xml1412
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Appendix-Queue-Alerts.xml101
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Appendix-System-Properties.xml144
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Backup-And-Recovery.xml137
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Close-On-No-Route.xml74
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Concepts.xml46
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Exchanges-Binding-Arguments.xml26
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Getting-Started.xml174
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-High-Availability.xml567
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Initial-Configuration.xml360
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Installation.xml179
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Introduction.xml89
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Management-Channels.xml49
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Management-Managing-Entities.xml119
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Background-Recovery.xml48
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Connection-Limit.xml52
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control.xml176
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management.xml27
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Flow-To-Disk.xml46
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Handling-Undeliverable-Messages.xml97
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Log-Files.xml75
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Message-Compression.xml53
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime-Producer-Transaction-Timeout.xml137
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Runtime.xml37
-rw-r--r--qpid/doc/book/src/java-broker/Java-Broker-Security.xml29
-rw-r--r--qpid/doc/book/src/java-broker/Makefile20
-rw-r--r--qpid/doc/book/src/java-broker/commonEntities.xml52
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Authentication-Providers.xml31
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Broker.xml26
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Exchanges.xml204
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Other-Services.xml58
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Overview.xml77
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Ports.xml60
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Queues.xml372
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-RemoteReplicationNodes.xml27
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhost-Nodes.xml37
-rw-r--r--qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhosts.xml60
-rw-r--r--qpid/doc/book/src/java-broker/images/Broker-MessageFlow.pngbin36827 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Broker-Model.pngbin48602 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Broker-PortAuthFlow.pngbin56560 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Direct.pngbin36554 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Direct.svg23
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Fanout.pngbin23348 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Fanout.svg23
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.pngbin40952 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.svg23
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.pngbin44744 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.svg23
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Topic.pngbin26939 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Exchange-Topic.svg23
-rw-r--r--qpid/doc/book/src/java-broker/images/HA-BDBHAMessageStore-MBean-jconsole.pngbin52533 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/HA-Create-1.pngbin50328 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/HA-Create-2.pngbin51814 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/HA-Create-3.pngbin83561 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/HA-Overview.pngbin54044 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/JMX-Connect-MBeans.pngbin66586 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/JMX-Connect-Remote.pngbin66411 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Management-Web-Add-Dialogue.pngbin70733 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Management-Web-Auth.pngbin85993 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Management-Web-Console.pngbin232164 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Management-Web-ContextVar.pngbin29470 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Management-Web-Edit-Dialogue.pngbin27262 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/Management-Web-Tab.pngbin119713 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/images/VirtualHost-Model.pngbin27196 -> 0 bytes
-rw-r--r--qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-AMQP-Intrinsic.xml29
-rw-r--r--qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-HTTP.xml58
-rw-r--r--qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-JMX.xml321
-rw-r--r--qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-QMF.xml26
-rw-r--r--qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml611
-rw-r--r--qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-Web-Console.xml232
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Access-Control-Providers.xml29
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Authentication-Providers.xml92
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Broker.xml98
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Entities-Matrix.xml143
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Exchanges.xml79
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Group-Providers.xml26
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Keystores.xml74
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-HTTP.xml63
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-JMX.xml29
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Ports.xml95
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Queues.xml121
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-RemoteReplicationNodes.xml112
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Truststores.xml74
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-VirtualhostNodes.xml140
-rw-r--r--qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Virtualhosts.xml139
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-ACLs.xml646
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Anonymous.xml30
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Base64MD5PasswordFile.xml43
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-External.xml50
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Kerberos.xml64
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-LDAP.xml99
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5.xml35
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5PasswordFile.xml42
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Plain.xml34
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-PlainPasswordFile.xml47
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-ScramSha.xml36
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers.xml51
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Configuration-Encryption.xml74
-rw-r--r--qpid/doc/book/src/java-broker/security/Java-Broker-Security-Group-Providers.xml62
102 files changed, 0 insertions, 9568 deletions
diff --git a/qpid/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml b/qpid/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml
deleted file mode 100644
index f1158d077c..0000000000
--- a/qpid/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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.
-
--->
-
-<book xmlns:xi="http://www.w3.org/2001/XInclude">
- <title>AMQP Messaging Broker (Java)</title>
-
- <xi:include href="Java-Broker-Introduction.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Installation.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Getting-Started.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Concepts.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Initial-Configuration.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Management-Channels.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Management-Managing-Entities.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-High-Availability.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Backup-And-Recovery.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Appendix-Environment-Variables.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Appendix-System-Properties.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Appendix-Operational-Logging-Messages.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Appendix-Queue-Alerts.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Appendix-Miscellaneous.xml"/>
-</book>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Environment-Variables.xml b/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Environment-Variables.xml
deleted file mode 100644
index f92cc34ba4..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Environment-Variables.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<appendix id="Java-Broker-Appendix-Environment-Variables">
- <title>Environment Variables</title>
- <para>The following table describes the environment variables understood by the Qpid scripts
- contained within the <literal>/bin</literal> directory within the Broker distribution.</para>
- <para>To take effect, these variables must be set within the shell (and exported - if using Unix)
- before invoking the script.</para>
- <table pgwide="1">
- <title>Environment variables</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Environment variable</entry>
- <entry>Default</entry>
- <entry>Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Environment-Variables-Qpid-Home">
- <entry>QPID_HOME</entry>
- <entry>
- <para>None</para>
- </entry>
- <entry>
- <para>The variable used to tell the Broker its installation directory. It must be an
- absolute path. This is used to determine the location of Qpid's dependency JARs and
- some configuration files.</para>
- <para>Typically the value of this variable will look similar to
- <literal>c:\qpid\&windowsExtractedBrokerDirName;</literal> (Windows) or
- <literal>/usr/local/qpid/&unixExtractedBrokerDirName;</literal> (Unix). The
- installation prefix will differ from installation to installation. </para>
- <para>If not set, a value for <literal>QPID_HOME</literal> is derived from the location
- of the script itself.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Environment-Variables-Qpid-Work">
- <entry>QPID_WORK</entry>
- <entry>
- <para>User's home directory</para>
- </entry>
- <entry>
- <para>Used as the default root directory for any data written by the Broker. This is the
- default location for any message data written to persistent stores and the Broker's
- log file.</para>
- <para>For example, <literal>QPID_WORK=/var/qpidwork</literal>.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Environment-Variables-Qpid-Opts">
- <entry>QPID_OPTS</entry>
- <entry>
- <para>None</para>
- </entry>
- <entry>
- <para>This is the preferred mechanism for passing Java <link
- linkend="Java-Broker-Appendix-System-Properties">system properties</link> to the
- Broker. The value must be a list of system properties each separate by a space.
- <literal>-D<replaceable>name1</replaceable>=<replaceable>value1</replaceable>
- -D<replaceable>name2</replaceable>=<replaceable>value2</replaceable></literal>.
- </para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Gc">
- <entry>QPID_JAVA_GC</entry>
- <entry>
- <literal>-XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC</literal>
- </entry>
- <entry>
- <para>This is the preferred mechanism for customising garbage collection behaviour. The
- value should contain valid garbage collection options(s) for the target JVM.</para>
- <para>Refer to the JVM's documentation for details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Mem">
- <entry>QPID_JAVA_MEM</entry>
- <entry>
- <literal>-Xmx2g</literal>
- </entry>
- <entry>
- <para>This is the preferred mechanism for customising the size of the JVM's heap memory.
- The value should contain valid memory option(s) for the target JVM. Oracle JVMs
- understand <literal>-Xmx</literal> to specify a maximum heap size and
- <literal>-Xms</literal> an initial size.</para>
- <para>For example, <code>QPID_JAVA_MEM=-Xmx6g</code> would set a maximum heap size of
- 6GB.</para>
- <para>Refer to the JVM's documentation for details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Environment-Variables-Java-Opts">
- <entry>JAVA_OPTS</entry>
- <entry>None</entry>
- <entry>
- <para>This is the preferred mechanism for passing any other JVM options. This variable is
- commonly used to pass options for diagnostic purposes, for instance to turn on verbose
- GC. <literal>-verbose:gc</literal>.</para>
- <para>Refer to the JVM's documentation for details.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-</appendix>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Miscellaneous.xml b/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Miscellaneous.xml
deleted file mode 100644
index 112dbeb39c..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Miscellaneous.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<appendix id="Java-Broker-Miscellaneous">
- <title>Miscellaneous</title>
-
- <section role="h2" id="Java-Broker-Miscellaneous-JVM-Verification">
- <title>JVM Installation verification</title>
- <section role="h2" id="Java-Broker-Miscellaneous-JVM-Verification-Windows">
- <title>Verify JVM on Windows</title>
- <para> Firstly confirm that the JAVA_HOME environment variable is set correctly by typing the
- following at the command prompt: </para>
- <programlisting><![CDATA[echo %JAVA_HOME%]]></programlisting>
- <para> If JAVA_HOME is set you will see something similar to the following: </para>
- <screen><![CDATA[c:"\PROGRA~1"\Java\jdk1.7.0_60\]]>
- </screen>
- <para> Then confirm that a Java installation (1.7 or higher) is available: </para>
- <programlisting><![CDATA[java -version]]></programlisting>
- <para> If java is available on the path, output similar to the following will be seen: </para>
- <screen><![CDATA[java version "1.7.0_60"
-Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
-Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)]]></screen>
- </section>
-
- <section role="h2" id="Java-Broker-Miscellaneous-JVM-Verification-Unix">
- <title>Verify JVM on Unix</title>
- <para> Firstly confirm that the JAVA_HOME environment variable is set correctly by typing the
- following at the command prompt: </para>
- <programlisting><![CDATA[echo $JAVA_HOME]]></programlisting>
- <para> If JAVA_HOME is set you will see something similar to the following: </para>
- <screen><![CDATA[/usr/java/jdk1.7.0_60]]>
- </screen>
- <para> Then confirm that a Java installation (1.7 or higher) is available: </para>
- <programlisting><![CDATA[java -version]]></programlisting>
- <para> If java is available on the path, output similar to the following will be seen: </para>
- <screen><![CDATA[java version "1.7.0_60"
-Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
-Java HotSpot(TM) 64-Bit Server VM (build 24.60-b09, mixed mode)]]></screen>
- </section>
- </section>
- <section role="h2" id="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver">
- <title>Installing External JDBC Driver</title>
- <para>In order to use a JDBC Virtualhost Node or a JDBC Virtualhost, you must make the
- Database's JDBC 4.0 compatible drivers available on the Broker's classpath. To do this copy
- the driver's JAR file into the <literal>${QPID_HOME}/lib/opt</literal> folder.</para>
- <programlisting>Unix:
-cp <literal>driver</literal>.jar qpid-broker-&qpidCurrentRelease;/lib/opt</programlisting>
-
- <programlisting>Windows:
-copy <literal>driver</literal>.jar qpid-broker-&qpidCurrentRelease;\lib\opt</programlisting>
-
- </section>
- <section role="h2" id="Java-Broker-Miscellaneous-Installing-Oracle-BDB-JE">
- <title>Installing Oracle BDB JE</title>
- <para> The Oracle BDB JE is not distributed with Apache Qpid owing to license considerations.. </para>
- <para>If you wish to use a BDB Virtualhost Node, BDB Virtualhost, or BDB HA Virtualhost Node you
- must make the BDB JE's JAR available on the Broker's classpath. </para>
- <para> Download the Oracle BDB JE &oracleBdbProductVersion; release <ulink
- url="&oracleJeDownloadUrl;">from the Oracle website.</ulink>
- </para>
- <para> The download has a name in the form je-&oracleBdbProductVersion;.tar.gz. It is
- recommended that you confirm the integrity of the download by verifying the MD5. </para>
- <para>Copy the je-&oracleBdbProductVersion;.jar from within the release into
- <literal>${QPID_HOME}/lib/opt</literal> folder.</para>
-
- <programlisting>Unix:
-cp je-&oracleBdbProductVersion;.jar qpid-broker-&qpidCurrentRelease;/lib/opt</programlisting>
-
- <programlisting>Windows:
-copy je-&oracleBdbProductVersion;.jar qpid-broker-&qpidCurrentRelease;\lib\opt</programlisting>
-
- </section>
-
-
-
-
-
-
-
-</appendix>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Operational-Logging-Messages.xml b/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Operational-Logging-Messages.xml
deleted file mode 100644
index 9d30526e49..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Operational-Logging-Messages.xml
+++ /dev/null
@@ -1,1412 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<appendix id="Java-Broker-Appendix-Operation-Logging">
- <title>Operational Logging</title>
-
- <para>The Broker will, by default, produce structured log messages in response to key events in
- the lives of objects within the Broker. These concise messages are designed to allow the user to
- understand the actions of the Broker in retrospect. This is valuable for problem diagnosis and
- provides a useful audit trail.</para>
- <para>Each log message includes details of the entity causing the action (e.g. a management user
- or messaging client connection), the entity receiving the action (e.g. a queue or connection)
- and a description of operation itself.</para>
- <para>The log messages have the following format:</para>
- <screen>
- [<literal>Actor</literal>] {[<literal>Subject</literal>]} [<literal>Message Id</literal>] [<literal>Message Text</literal>]
- </screen>
- <para>Where:</para>
- <itemizedlist>
- <listitem>
- <para><literal>Actor</literal> is the entity within the Broker that is
- <emphasis>performing</emphasis> the action. There are actors corresponding to the Broker
- itself, Management, Connection, and Channels. Their format is described in the <link
- linkend="Java-Broker-Appendix-Operation-Logging-Actor-Format">table</link> below.</para>
- </listitem>
- <listitem>
- <para><literal>Subject</literal> (optional) is the entity within the Broker that is
- <emphasis>receiving</emphasis> the action. There are subjects corresponding to the
- Connections, Channels, Queues, Exchanges, Subscriptions, and Message Stores. Their format is
- described in the <link linkend="Java-Broker-Appendix-Operation-Logging-Subject-Format"
- >table</link> below.</para>
- <para>Some actions are reflexive, in these cases the Actor and Subject will be equal.</para>
- </listitem>
- <listitem>
- <para><literal>Message Id</literal> is an identifier for the type of message. It has the form
- three alphas and four digits separated by a hyphen <literal>AAA-9999</literal>.</para>
- </listitem>
- <listitem>
- <para><literal>Message Text</literal> is a textual description</para>
- </listitem>
- </itemizedlist>
- <para>To illustrate, let's look at two examples.</para>
- <para><literal><link linkend="Java-Broker-Appendix-Operation-Logging-Message-CON-1001"
- >CON-1001</link></literal> is used when a messages client makes an AMQP connection. The
- connection actor (<literal>con</literal>) provides us with details of the peer's connection: the
- user id used by the client (myapp1), their IP, ephemeral port number and the name of the virtual
- host. The message text itself gives us further details about the connection: the client id, the
- protocol version in used, and details of the client's qpid library.</para>
- <screen>[con:8(myapp1@/127.0.0.1:52851/default)] CON-1001 : Open : Client ID : clientid :
- Protocol Version : 0-10 : Client Version : &qpidCurrentRelease; : Client Product : qpid</screen>
- <para><literal><link linkend="Java-Broker-Appendix-Operation-Logging-Message-QUE-1001"
- >QUE-1001</link></literal> is used when a queue is created. The connection actor
- <literal>con</literal> tells us details of the connection performing the queue creation: the
- user id used by the client (myapp1), the IP, ephemeral port number and the name of the virtual
- host. The queue subject tells use the queue's name (myqueue) and the virtualhost. The message
- itself tells us more information about the queue that is being created. </para>
-
- <screen>[con:8(myapp1@/127.0.0.1:52851/default)/ch:0] [vh(/default)/qu(myqueue)] QUE-1001 : Create : Owner: clientid Transient</screen>
- <para>The first two tables that follow describe the actor and subject entities, then the later
- provide a complete catalogue of all supported messages.</para>
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Actor-Format">
- <title>Actors Entities</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Actor Type</entry>
- <entry>Format and Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry morerows="1">Broker</entry>
- <entry>[Broker]</entry>
- </row>
- <row>
- <entry>
- <para>Used during startup and shutdown</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Management</entry>
- <entry>
- [mng:<replaceable>userid</replaceable>(<replaceable>clientip</replaceable>:<replaceable>ephemeralport</replaceable>)] </entry>
-
- </row>
- <row>
- <entry>
- <para>Used for operations performed by the either the JMX or Web Management
- interfaces.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Connection</entry>
- <entry>
- [con:<replaceable>connectionnumber</replaceable>(<replaceable>userid</replaceable>@/<replaceable>clientip</replaceable>:<replaceable>ephemeralport</replaceable>/<replaceable>virtualhostname</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>Used for operations performed by a client connection. Note that connections are
- numbered by a sequence number that begins at 1.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Channel</entry>
- <entry>
- [con:<replaceable>connectionnumber</replaceable>(<replaceable>userid</replaceable>@/<replaceable>clientip</replaceable>:<replaceable>ephemeralport</replaceable>/<replaceable>virtualhostname</replaceable>/ch:<replaceable>channelnumber</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>Used for operations performed by a client's channel (corresponds to the JMS
- concept of Session). Note that channels are numbered by a sequence number that is
- scoped by the owning connection.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Group</entry>
- <entry> [grp(/<replaceable>groupname</replaceable>)/vhn(/<replaceable>virtualhostnode
- name</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>Used for HA. Used for operations performed by the system itself often as a result
- of actions performed on another node..</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Subject-Format">
- <title>Subject Entities</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Subject Type</entry>
- <entry>Format and Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry morerows="1">Connection</entry>
- <entry>
- [con:<replaceable>connectionnumber</replaceable>(<replaceable>userid</replaceable>@/<replaceable>clientip</replaceable>:<replaceable>ephemeralport</replaceable>/<replaceable>virtualhostname</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>A connection to the Broker.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Channel</entry>
- <entry>
- [con:<replaceable>connectionnumber</replaceable>(<replaceable>userid</replaceable>@/<replaceable>clientip</replaceable>:<replaceable>ephemeralport</replaceable>/<replaceable>virtualhostname</replaceable>/ch:<replaceable>channelnumber</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>A client's channel within a connection.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Subscription</entry>
- <entry>
- [sub:<replaceable>subscriptionnumber</replaceable>(vh(/<replaceable>virtualhostname</replaceable>)/qu(<replaceable>queuename</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>A subscription to a queue. This corresponds to the JMS concept of a
- Consumer.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Queue</entry>
- <entry>[vh(/<replaceable>virtualhostname</replaceable>)/qu(<replaceable>queuename</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>A queue on a virtualhost</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Exchange</entry>
- <entry>[vh(/<replaceable>virtualhostname</replaceable>)/ex(<replaceable>exchangetype</replaceable>/<replaceable>exchangename</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>An exchange on a virtualhost</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Binding</entry>
- <entry>
- [vh(/<replaceable>virtualhostname</replaceable>)/ex(<replaceable>exchangetype</replaceable>/<replaceable>exchangename</replaceable>)/qu(<replaceable>queuename</replaceable>)/rk(<replaceable>bindingkey</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>A binding between a queue and exchange with the giving binding key.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">Message Store</entry>
- <entry>
- [vh(/<replaceable>virtualhostname</replaceable>)/ms(<replaceable>messagestorename</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>A virtualhost/message store on the Broker.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">HA Group</entry>
- <entry> [grp(/<replaceable>group name</replaceable>)]</entry>
- </row>
- <row>
- <entry>
- <para>A HA group</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>The following tables lists all the operation log messages that can be produced by the
- Broker, and the describes the circumstances under which each may be seen.</para>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Broker">
- <title>Broker Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1001">
- <entry morerows="1">BRK-1001</entry>
- <entry>Startup : Version: <replaceable>version</replaceable> Build:
- <replaceable>build</replaceable>
- </entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the Broker is starting up</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1002">
- <entry morerows="1">BRK-1002</entry>
- <entry>Starting : Listening on <replaceable>transporttype</replaceable> port
- <replaceable>portnumber</replaceable>
- </entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the Broker has begun listening on a port.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1003">
- <entry morerows="1">BRK-1003</entry>
- <entry>Shutting down : <replaceable>transporttype</replaceable> port
- <replaceable>portnumber</replaceable>
- </entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the Broker has stopped listening on a port.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1004">
- <entry morerows="1">BRK-1004</entry>
- <entry>Qpid Broker Ready</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the Broker is ready for normal operations.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1005">
- <entry morerows="1">BRK-1005</entry>
- <entry>Stopped</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the Broker is stopped.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1006">
- <entry morerows="1">BRK-1006</entry>
- <entry>Using configuration : <replaceable>file</replaceable>
- </entry>
- </row>
- <row>
- <entry>
- <para>Indicates the name of the configuration store in use by the Broker.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1007">
- <entry morerows="1">BRK-1007</entry>
- <entry>Using logging configuration : <replaceable>file</replaceable>
- </entry>
- </row>
- <row>
- <entry>
- <para>Indicates the name of the log configuration file in use by the Broker.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1008">
- <entry morerows="1">BRK-1008</entry>
- <entry><replaceable>delivered|received</replaceable> : <replaceable>size</replaceable>
- kB/s peak : <replaceable>size</replaceable> bytes total</entry>
- </row>
- <row>
- <entry>
- <para>Statistic - bytes delivered or received by the Broker.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1009">
- <entry morerows="1">BRK-1009</entry>
- <entry><replaceable>delivered|received</replaceable> : <replaceable>size</replaceable>
- msg/s peak : <replaceable>size</replaceable> msgs total</entry>
- </row>
- <row>
- <entry>
- <para>Statistic - messages delivered or received by the Broker.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1014">
- <entry morerows="1">BRK-1014</entry>
- <entry>Message flow to disk active : Message memory use <replaceable>size of all
- messages</replaceable> exceeds threshold <replaceable>threshold
- size</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the heap memory space occupied by messages has exceeded the
- threshold so the flow to disk feature has been activated.</para>
- </entry>
- </row>
-
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1015">
- <entry morerows="1">BRK-1015</entry>
- <entry>Message flow to disk inactive : Message memory use <replaceable>size of all
- messages</replaceable> within threshold <replaceable>threshold
- size</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the heap memory space occupied by messages has fallen below the
- threshold so the flow to disk feature has been deactivated.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1016">
- <entry morerows="1">BRK-1016</entry>
- <entry>Fatal error : <replaceable>root cause</replaceable> : See log file for more information</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that broker was shut down due to fatal error.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1017">
- <entry morerows="1">BRK-1017</entry>
- <entry>Process : PID <replaceable>process identifier</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Process identifier (PID) of the Broker process.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Management">
- <title>Management Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1001">
- <entry morerows="1">MNG-1001</entry>
- <entry><replaceable>type</replaceable> Management Startup </entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a Management plugin is starting up. Currently supported management
- plugins are JMX and Web.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1002">
- <entry morerows="1">MNG-1002</entry>
- <entry>Starting : <replaceable>type</replaceable> : Listening on <replaceable>transporttype</replaceable> port
- <replaceable>port</replaceable>
- </entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a Management plugin is listening on the given port.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1003">
- <entry morerows="1">MNG-1003</entry>
- <entry>Shutting down : <replaceable>type</replaceable> : port
- <replaceable>port</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a Management plugin is ceasing to listen on the given port.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1004">
- <entry morerows="1">MNG-1004</entry>
- <entry><replaceable>type</replaceable> Management Ready</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a Management plugin is ready for work.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1005">
- <entry morerows="1">MNG-1005</entry>
- <entry><replaceable>type</replaceable> Management Stopped</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a Management plugin is stopped.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1007">
- <entry morerows="1">MNG-1007</entry>
- <entry>Open : User <replaceable>username</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates the opening of a connection to Management has by the given
- username.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1008">
- <entry morerows="1">MNG-1008</entry>
- <entry>Close : User <replaceable>username</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates the closing of a connection to Management has by the given
- username.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-VirtualHost">
- <title>Virtual Host Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <!-- Virtual host -->
- <row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1001">
- <entry morerows="1">VHT-1001</entry>
- <entry>Created : <replaceable>virtualhostname</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a virtualhost has been created.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1002">
- <entry morerows="1">VHT-1002</entry>
- <entry>Closed</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a virtualhost has been closed. This occurs on Broker
- shutdown.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1003">
- <entry morerows="1">VHT-1003</entry>
- <entry><replaceable>virtualhostname</replaceable> :
- <replaceable>delivered|received</replaceable> : <replaceable>size</replaceable> kB/s
- peak : <replaceable>size</replaceable> bytes total</entry>
- </row>
- <row>
- <entry>
- <para>Statistic - bytes delivered or received by the virtualhost.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1004">
- <entry morerows="1">VHT-1004</entry>
- <entry><replaceable>virtualhostname</replaceable> :
- <replaceable>delivered|received</replaceable> : <replaceable>size</replaceable> msg/s
- peak : <replaceable>size</replaceable> msgs total</entry>
- </row>
- <row>
- <entry>
- <para>Statistic - messages delivered or received by the virtualhost.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1005">
- <entry morerows="1">VHT-1005</entry>
- <entry>Unexpected fatal error</entry>
- </row>
- <row>
- <entry>
- <para>Virtualhost has suffered an unexpected fatal error, check the logs for more
- details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1006">
- <entry morerows="1">VHT-1006</entry>
- <entry>Filesystem is over <replaceable>size in %</replaceable> per cent full, enforcing flow control.</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that virtual host flow control is activated
- when the usage of file system containing Virtualhost message store exceeded predefined limit.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1007">
- <entry morerows="1">VHT-1007</entry>
- <entry>Filesystem is no longer over <replaceable>size in %</replaceable> per cent full.</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that virtual host flow control is deactivated
- when the usage of file system containing Virtualhost message falls under predefined limit.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Queue">
- <title>Queue Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <!-- Queue -->
- <row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1001">
- <entry morerows="1">QUE-1001</entry>
- <entry>Create : Owner: <replaceable>owner</replaceable>
- <replaceable>AutoDelete</replaceable> [<replaceable>Durable</replaceable>]
- <replaceable>Transient</replaceable> Priority:
- <replaceable>numberofpriorities</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a queue has been created.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1002">
- <entry morerows="1">QUE-1002</entry>
- <entry>Deleted</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a queue has been deleted.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1003">
- <entry morerows="1">QUE-1003</entry>
- <entry>Overfull : Size : <replaceable>size</replaceable> bytes, Capacity :
- <replaceable>maximumsize</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a queue has exceeded its permitted capacity. See <xref
- linkend="Qpid-Producer-Flow-Control"/> for details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1004">
- <entry morerows="1">QUE-1004</entry>
- <entry>Underfull : Size : <replaceable>size</replaceable> bytes, Resume Capacity :
- <replaceable>resumesize</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a queue has fallen to its resume capacity. See <xref
- linkend="Qpid-Producer-Flow-Control"/> for details.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Exchange">
- <title>Exchange Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <!-- Exchange -->
- <row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1001">
- <entry morerows="1">EXH-1001</entry>
- <entry>Create : [<replaceable>Durable</replaceable>] Type: <replaceable>type</replaceable>
- Name: <replaceable>exchange name</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that an exchange has been created.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1002">
- <entry morerows="1">EXH-1002</entry>
- <entry>Deleted</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that an exchange has been deleted.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1003">
- <entry morerows="1">EXH-1003</entry>
- <entry>Discarded Message : Name: <replaceable>exchange name</replaceable> Routing Key:
- <replaceable>routing key</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that an exchange received a message that could not be routed to at least
- one queue. queue has exceeded its permitted capacity. See <xref
- linkend="Java-Broker-Concepts-Exchanges-UnroutableMessage"/> for details.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Binding">
- <title>Binding Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BND-1001">
- <entry morerows="1">BND-1001</entry>
- <entry>Create : Arguments : <replaceable>arguments</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a binding has been made between an exchange and a queue.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-BND-1002">
- <entry morerows="1">BND-1002</entry>
- <entry>Deleted</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a binding has been deleted</para>
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Connection">
- <title>Connection Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1001">
- <entry morerows="1">CON-1001</entry>
- <entry>Open : Client ID : <replaceable>clientid</replaceable> : Protocol Version :
- <replaceable>protocol version</replaceable> : Client Version : <replaceable>client
- version</replaceable> : Client Product :<replaceable>client
- product</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a connection has been opened. The Broker logs one of these message
- each time it learns more about the client as the connection is negotiated.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1002">
- <entry morerows="1">CON-1002</entry>
- <entry>Close</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a connection has been closed. This message is logged regardless of
- if the connection is closed normally, or if the connection is somehow lost e.g network
- error. </para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1003">
- <entry morerows="1">CON-1003</entry>
- <entry>Closed due to inactivity</entry>
- </row>
- <row>
- <entry>
- <para>Used when heart beating is in-use. Indicates that the connection has not received
- a heartbeat for too long and is therefore closed as being inactive. </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Channel">
- <title>Channel Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1001">
- <entry morerows="1">CHN-1001</entry>
- <entry>Create</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a channel (corresponds to the JMS concept of Session) has been
- created.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1002">
- <entry morerows="1">CHN-1002</entry>
- <entry>Flow Started</entry>
- </row>
- <row>
- <entry>
- <para>Indicates message flow to a session has begun.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1003">
- <entry morerows="1">CHN-1003</entry>
- <entry>Close</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a channel has been closed.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1004">
- <entry morerows="1">CHN-1004</entry>
- <entry>Prefetch Size (bytes) <replaceable>size</replaceable> : Count <replaceable>number
- of messages</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates the prefetch size in use by a channel.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1005">
- <entry morerows="1">CHN-1005</entry>
- <entry>Flow Control Enforced (Queue <replaceable>queue name</replaceable>)</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that producer flow control has been imposed on a channel owning to
- excessive queue depth in the indicated queue. Produces using the channel will be
- requested to pause the sending of messages. See <xref
- linkend="Qpid-Producer-Flow-Control"/> for more details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1006">
- <entry morerows="1">CHN-1006</entry>
- <entry>Flow Control Removed</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that producer flow control has been removed from a channel. See <xref
- linkend="Qpid-Producer-Flow-Control"/> for more details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1007">
- <entry morerows="1">CHN-1007</entry>
- <entry>Open Transaction : <replaceable>time</replaceable> ms</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a producer transaction has been open for longer than that
- permitted. See <xref linkend="Java-Broker-Runtime-Producer-Transaction-Timeout"/> for
- more details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1008">
- <entry morerows="1">CHN-1008</entry>
- <entry>Idle Transaction : <replaceable>time</replaceable> ms</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a producer transaction has been idle for longer than that
- permitted. See <xref linkend="Java-Broker-Runtime-Producer-Transaction-Timeout"/> for
- more details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1009">
- <entry morerows="1">CHN-1009</entry>
- <entry>Discarded message : <replaceable>message number</replaceable> as no alternate
- exchange configured for queue : <replaceable>queue name</replaceable>{1} routing key :
- <replaceable>routing key</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a channel has discarded a message as the maximum delivery count has
- been exceeded but the queue defines no alternate exchange. See <xref
- linkend="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"
- /> for more details. Note that <replaceable>message number</replaceable> is an
- internal message reference.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1010">
- <entry morerows="1">CHN-1010</entry>
- <entry>Discarded message : <replaceable>message number</replaceable> as no binding on
- alternate exchange : <replaceable>exchange name</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a channel has discarded a message as the maximum delivery count has
- been exceeded but the queue's alternate exchange has no binding to a queue. See <xref
- linkend="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"
- /> for more details. Note that <replaceable>message number</replaceable> is an
- internal message reference.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1011">
- <entry morerows="1">CHN-1011</entry>
- <entry>Message : <replaceable>message number</replaceable> moved to dead letter queue :
- <replaceable>queue name</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a channel has moved a message to the named dead letter queue
- </para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1012">
- <entry morerows="1">CHN-1012</entry>
- <entry>Flow Control Ignored. Channel will be closed.</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a channel violating the imposed flow control has been closed
- </para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1013">
- <entry morerows="1">CHN-1013</entry>
- <entry>Uncommitted transaction contains <replaceable>size</replaceable> bytes of incoming message data.</entry>
- </row>
- <row>
- <entry>
- <para>Warns about uncommitted transaction with large message(s)
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Subscription">
- <title>Subscription Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1001">
- <entry morerows="1">SUB-1001</entry>
- <entry>Create : [<replaceable>Durable</replaceable>] Arguments :
- <replaceable>arguments</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a subscription (corresponds to JMS concept of a MessageConsumer)
- has been created.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1002">
- <entry morerows="1">SUB-1002</entry>
- <entry>Close</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a subscription has been closed.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1003">
- <entry morerows="1">SUB-1003</entry>
- <entry>State : <replaceable>boolean</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a subscription has changed state. This occurs when the consumer is
- ready to receive more messages. As this happens frequently in normal operation, this
- log messages is disabled by default.</para>
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-MessageStore">
- <title>Message Store Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1001">
- <entry morerows="1">MST-1001</entry>
- <entry>Created</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a message store has been created. The message store is responsible
- for the storage of the messages themselves, including the message body and any
- headers.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1002">
- <entry morerows="1">MST-1002</entry>
- <entry>Store location : <replaceable>path</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the message store is using <replaceable>path</replaceable> for the
- location of the message store.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1003">
- <entry morerows="1">MST-1003</entry>
- <entry>Closed</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the message store has been closed.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1004">
- <entry morerows="1">MST-1004</entry>
- <entry>Recovery Start</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that message recovery has begun.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1005">
- <entry morerows="1">MST-1005</entry>
- <entry>Recovered <replaceable>number of messages</replaceable> messages.</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that recovery recovered the given number of messages from the
- store.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1006">
- <entry morerows="1">MST-1006</entry>
- <entry>Recovered Complete</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the message recovery is concluded.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1007">
- <entry morerows="1">MST-1007</entry>
- <entry>Store Passivated</entry>
- </row>
- <row>
- <entry>
- <para>The store is entering a passive state where is it unavailable for normal
- operations. Currently this message is used by HA when the node is in replica
- state.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1008">
- <entry morerows="1">MST-1008</entry>
- <entry>Store overfull, flow control will be enforced</entry>
- </row>
- <row>
- <entry>
- <para>The store has breached is maximum configured size. See <xref
- linkend="Qpid-Producer-Flow-Control"/> for details.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1009">
- <entry morerows="1">MST-1009</entry>
- <entry>Store overfull condition cleared</entry>
- </row>
- <row>
- <entry>
- <para>The store size has fallen beneath its resume capacity and therefore flow control
- has been rescinded. See <xref linkend="Qpid-Producer-Flow-Control"/> for
- details.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-TransactionStore">
- <title>Transaction Store Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1001">
- <entry morerows="1">TXN-1001</entry>
- <entry>Created</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a transaction store has been created. The transaction store is
- responsible for the storage of messages instances, that is, the presence of a message
- on a queue.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1002">
- <entry morerows="1">TXN-1002</entry>
- <entry>Store location : <replaceable>path</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the transaction store is using <replaceable>path</replaceable> for
- the location of the store.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1003">
- <entry morerows="1">TXN-1003</entry>
- <entry>Closed</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the transaction store has been closed.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1004">
- <entry morerows="1">TXN-1004</entry>
- <entry>Recovery Start</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that transaction recovery has begun.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-MST-TXN">
- <entry morerows="1">TXN-1005</entry>
- <entry>Recovered <replaceable>number</replaceable> messages for queue
- <replaceable>name</replaceable>.</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that recovery recovered the given number of message instances for the
- given queue.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1006">
- <entry morerows="1">TXN-1006</entry>
- <entry>Recovered Complete</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the message recovery is concluded.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-ConfigurationStore">
- <title>Configuration Store Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1001">
- <entry morerows="1">CFG-1001</entry>
- <entry>Created</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a configuration store has been created. The configuration store is
- responsible for the storage of the definition of objects such as queues, exchanges,
- and bindings.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1002">
- <entry morerows="1">CFG-1002</entry>
- <entry>Store location : <replaceable>path</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the configuration store is using <replaceable>path</replaceable>
- for the location of the store.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1003">
- <entry morerows="1">CFG-1003</entry>
- <entry>Closed</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the configuration store has been closed.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1004">
- <entry morerows="1">CFG-1004</entry>
- <entry>Recovery Start</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that configuration recovery has begun.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1005">
- <entry morerows="1">CFG-1005</entry>
- <entry>Recovered Complete</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the configuration recovery is concluded.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-HA">
- <title>HA Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1001">
- <entry morerows="1">HA-1001</entry>
- <entry>Created</entry>
- </row>
- <row>
- <entry>
- <para>This HA node has been created.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1002">
- <entry morerows="1">HA-1002</entry>
- <entry>Deleted</entry>
- </row>
- <row>
- <entry>
- <para>This HA node has been deleted</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1003">
- <entry morerows="1">HA-1003</entry>
- <entry>Added : Node : '<replaceable>name</replaceable>'
- (<replaceable>host:port</replaceable>)</entry>
- </row>
- <row>
- <entry>
- <para>A new node has been added to the group.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1004">
- <entry morerows="1">HA-1004</entry>
- <entry>Removed : Node : '<replaceable>name</replaceable>'
- (<replaceable>host:port</replaceable>)</entry>
- </row>
- <row>
- <entry>
- <para>The node has been removed from the group. This removal is permanent.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1005">
- <entry morerows="1">HA-1005</entry>
- <entry>Joined : Node : '<replaceable>name</replaceable>'
- (<replaceable>host:port</replaceable>)</entry>
- </row>
- <row>
- <entry>
- <para>The node has become reachable. This may be as a result of the node being
- restarted, or a network problem may have been resolved.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1006">
- <entry morerows="1">HA-1006</entry>
- <entry>Left : Node : '<replaceable>name</replaceable>'
- (<replaceable>host:port</replaceable>)</entry>
- </row>
- <row>
- <entry>
- <para>The node is no longer reachable. This may be as a result of the node being stopped
- or a network partition may be preventing it from being connected. The node is still a
- member of the group.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1007">
- <entry morerows="1">HA-1007</entry>
- <entry>HA-1007 : Master transfer requested : to '<replaceable>name</replaceable>'
- (<replaceable>host:port</replaceable>)</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that a master transfer operation has been requested.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1008">
- <entry morerows="1">HA-1008</entry>
- <entry>HA-1008 : Intruder detected : Node '<replaceable>name</replaceable>'
- (<replaceable>host:port</replaceable>)</entry>
- </row>
- <row>
- <entry>
- <para>Indicates that an unexpected node has joined the group. The virtualhost node will
- go into the ERROR state in response to the condition.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1009">
- <entry morerows="1">HA-1009</entry>
- <entry>HA-1009 : Insufficient replicas contactable</entry>
- </row>
- <row>
- <entry>
- <para>This node (which was in the master role) no longer has sufficient replica in
- contact in order to complete transactions.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1010">
- <entry morerows="1">HA-1010</entry>
- <entry>HA-1010 : Role change reported: Node : '<replaceable>name</replaceable>'
- (<replaceable>host:port</replaceable>) : from <replaceable>role</replaceable> to
- <replaceable>role</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>Indicates that the node has changed role within the group.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1011">
- <entry morerows="1">HA-1011</entry>
- <entry>HA-1011 : Minimum group size : <replaceable>new group size</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>The quorum requirements from completing elections or transactions has been
- changed.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1012">
- <entry morerows="1">HA-1012</entry>
- <entry>HA-1012 : Priority : <replaceable>priority</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>The priority of the object node has been changed. Zero indicates that the node
- cannot be elected master.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1013">
- <entry morerows="1">HA-1013</entry>
- <entry>HA-1013 : Designated primary : <replaceable>true|false</replaceable></entry>
- </row>
- <row>
- <entry>
- <para>This node has been designated primary and can now operate solo. Applies to two
- node groups only.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1014">
- <entry morerows="1">HA-1014</entry>
- <entry>HA-1014 : Diverged transactions discarded</entry>
- </row>
- <row>
- <entry>
- <para>This node is in the process of rejoining the group but has discovered that some
- of its transactions differ from those of the current master. The node will
- automatically roll-back (i.e. discard) the diverging transactions in order to be
- allowed to rejoin the group. This situation can only usually occur as a result of use
- of the weak durability options. These allow the group to operate with fewer than
- quorum nodes and therefore allow the inconsistencies to develop. </para>
- <para>On encountering this condition, it is <emphasis>strongly</emphasis> recommendend
- to run an application level reconcilation to determine the data that has been
- lost.</para>
- </entry>
- </row>
-
- </tbody>
- </tgroup>
- </table>
-
- <table pgwide="1" id="Java-Broker-Appendix-Operation-Logging-Message-List-Port">
- <title>Port Log Messages</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Message Id</entry>
- <entry>Message Text / Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1001">
- <entry morerows="1">PRT-1001</entry>
- <entry>Create</entry>
- </row>
- <row>
- <entry>
- <para>Port has been created.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1002">
- <entry morerows="1">PRT-1002</entry>
- <entry>Open</entry>
- </row>
- <row>
- <entry>
- <para>Port has been open</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1003">
- <entry morerows="1">PRT-1003</entry>
- <entry>Close</entry>
- </row>
- <row>
- <entry>
- <para>Port has been closed</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1004">
- <entry morerows="1">PRT-1004</entry>
- <entry>Connection count <replaceable>number</replaceable> within <replaceable>warn limit</replaceable> % of maximum <replaceable>limit</replaceable>
- </entry>
- </row>
- <row>
- <entry>
- <para>Warns that number of open connections approaches maximum allowed limit</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1005">
- <entry morerows="1">PRT-1005</entry>
- <entry>Connection from <replaceable>host</replaceable> rejected</entry>
- </row>
- <row>
- <entry>
- <para>Connection from given host is rejected because of reaching the maximum allowed limit</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
-</table>
-
-</appendix>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Queue-Alerts.xml b/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Queue-Alerts.xml
deleted file mode 100644
index 687a063289..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-Queue-Alerts.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<appendix id="Java-Broker-Appendix-Queue-Alerts">
- <title>Queue Alerts</title>
- <para>The Broker supports a variety of queue alerting thresholds. Once configured on a queue,
- these limits will be periodically written to the log if these limits are breached, until the
- condition is rectified.</para>
- <para>For example, if queue <literal>myqueue</literal> is configured with a message count alert of
- 1000, and then owing to a failure of a downstream system messages begin to accumulate on the
- queue, the following alerts will be written periodically to the log. </para>
- <screen>
-INFO [default:VirtualHostHouseKeepingTask] (queue.NotificationCheck) - MESSAGE_COUNT_ALERT
- On Queue myqueue - 1272: Maximum count on queue threshold (1000) breached.
- </screen>
- <para>Note that queue alerts are <emphasis>soft</emphasis> in nature; breaching the limit will
- merely cause the alerts to be generated but messages will still be accepted to the queue.</para>
- <table pgwide="1" id="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages">
- <title>Queue Alerts</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Alert Name</entry>
- <entry>Alert Format and Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry morerows="1">MESSAGE_COUNT_ALERT</entry>
- <entry> MESSAGE_COUNT_ALERT On Queue <replaceable>queuename</replaceable> -
- <replaceable>number of messages</replaceable>: Maximum count on queue threshold
- (<replaceable>limit</replaceable>) breached. </entry>
- </row>
- <row>
- <entry>
- <para>The number of messages on the given queue has breached its configured
- limit.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">MESSAGE_SIZE_ALERT</entry>
- <entry> MESSAGE_SIZE_ALERT On Queue <replaceable>queuename</replaceable>
- -<replaceable>message size</replaceable> : Maximum message size threshold
- (<replaceable>limit</replaceable>) breached. [Message ID=<replaceable>message
- id</replaceable>]</entry>
- </row>
- <row>
- <entry>
- <para>The size of an individual messages has breached its configured limit.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">QUEUE_DEPTH_ALERT</entry>
- <entry> QUEUE_DEPTH_ALERT On Queue <replaceable>queuename</replaceable> -
- <replaceable>total size of all messages on queue</replaceable> : Maximum queue depth
- threshold (<replaceable>limit</replaceable>) breached.</entry>
- </row>
- <row>
- <entry>
- <para>The total size of all messages on the queue has breached its configured
- limit.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">MESSAGE_AGE_ALERT</entry>
- <entry>MESSAGE_AGE_ALERT On Queue <replaceable>queuename</replaceable> - <replaceable>age
- of message</replaceable> : Maximum age on queue threshold
- (<replaceable>limit</replaceable>) breached. </entry>
- </row>
- <row>
- <entry>
- <para>The age of a message on the given queue has breached its configured limit.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-</appendix>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-System-Properties.xml b/qpid/doc/book/src/java-broker/Java-Broker-Appendix-System-Properties.xml
deleted file mode 100644
index bee52f47b2..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Appendix-System-Properties.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<appendix id="Java-Broker-Appendix-System-Properties">
- <title>System Properties</title>
- <para>The following table describes the Java system properties used by the Broker to control
- various optional behaviours.</para>
- <para>The preferred method of enabling these system properties is using the <link
- linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"
- ><literal>QPID_OPTS</literal></link> environment variable described in the previous
- section.</para>
- <table pgwide="1">
- <title>System properties</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>System property</entry>
- <entry>Default</entry>
- <entry>Purpose</entry>
- </row>
- </thead>
- <tbody>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Heartbeat-Timeout-Factor">
- <entry>qpid.broker_heartbeat_timeout_factor</entry>
- <entry>2</entry>
- <entry>Factor to determine the maximum length of that may elapse between heartbeats being
- received from the peer before a connection is deemed to have been broken.</entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Dead-Letter-Exchange-Suffix">
- <entry>qpid.broker_dead_letter_exchange_suffix</entry>
- <entry>_DLE</entry>
- <entry>Used with the <xref
- linkend="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"/>
- feature. Governs the suffix used when generating a name for a Dead Letter
- Exchange.</entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Dead-Letter-Queue-Suffix">
- <entry>qpid.broker_dead_letter_queue_suffix</entry>
- <entry>_DLQ</entry>
- <entry>Used with the <xref
- linkend="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"/>
- feature. Governs the suffix used when generating a name for a Dead Letter Queue.</entry>
- </row>
- <row>
- <entry>qpid.broker_msg_auth</entry>
- <entry>false</entry>
- <entry>
- <para>If set true, the Broker ensures that the user id of each received message matches
- the user id of the producing connection. If this check fails, the message is returned
- to the producer's connection with a 403 (Access Refused) error code.</para>
- <para>This is check is currently not enforced when using AMQP 0-10 and 1-0
- protocols.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Status-Updates">
- <entry>qpid.broker_status_updates</entry>
- <entry>true</entry>
- <entry>
- <para>If set true, the Broker will produce operational logging messages.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Default-Supported-Protocol-Version-Reply">
- <entry>qpid.broker_default_supported_protocol_version_reply</entry>
- <entry>none</entry>
- <entry>
- <para>Used during protocol negotiation. If set, the Broker will offer this AMQP version
- to a client requesting an AMQP protocol that is not supported by the Broker. If not set, the
- Broker offers the highest protocol version it supports.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Disabled-Features">
- <entry>qpid.broker_disabled_features</entry>
- <entry>none</entry>
- <entry>
- <para>Allows optional Broker features to be disabled. Currently understood feature
- names are: <literal>qpid.jms-selector</literal></para>
- <para>Feature names should be comma separated.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Frame-Size">
- <entry>qpid.broker_frame_size</entry>
- <entry>65536</entry>
- <entry>
- <para>Maximum AMQP frame size supported by the Broker.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Jmx-Method-Rights">
- <entry>qpid.broker_jmx_method_rights_infer_all_access</entry>
- <entry>true</entry>
- <entry>
- <para>Used when using <link linkend="Java-Broker-Security-ACLs">ACLs</link> and the JMX
- management interface.</para>
- <para>If set true, the METHOD object permission is sufficient to allow the user to
- perform the operation. If set false, the user will require both the METHOD object
- permission and the underlying object permission too (for instance QUEUE object
- permission if performing management operations on a queue). If the user is not granted
- both permissions, the operation will be denied.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Jmx-Custom-Rmi">
- <entry>qpid.broker_jmx_use_custom_rmi_socket_factory</entry>
- <entry>true</entry>
- <entry>
- <para>Applicable to the JMX management interface. If true, the Broker creates a custom
- RMI socket factory that is secured from changes outside of the JVM. If false,
- a standard RMI socket factory is used.</para>
- <para>It is not recommended to change this property from its default value.</para>
- </entry>
- </row>
- <row id="Java-Broker-Appendix-System-Properties-Broker-Log-Record-Buffer-Size">
- <entry>qpid.broker_log_records_buffer_size</entry>
- <entry>4096</entry>
- <entry>
- <para>Controls the number of recent Broker log entries that remain viewable online via
- the HTTP Management interface.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-</appendix>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Backup-And-Recovery.xml b/qpid/doc/book/src/java-broker/Java-Broker-Backup-And-Recovery.xml
deleted file mode 100644
index 09bb2b4fcc..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Backup-And-Recovery.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Backup-And-Recovery">
- <title>Backup And Recovery</title>
- <section id="Java-Broker-Backup-And-Recovery-Broker">
- <title>Broker</title>
- <para>To perform a complete backup whilst the Broker is shutdown, simply copy all the files the
- exist beneath <literal>${QPID_WORK}</literal>, assuming all virtualhost nodes and virtualhost
- are in their standard location, this will copy all configuration and persistent message data. </para>
- <para>There is currently no safe mechanism to take a complete copy of the entire Broker whilst
- it is running.</para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Node">
- <title>Virtualhost Node</title>
- <para>To perform a complete backup of a Virtualhost node whilst it is stopped (or Broker down),
- simply copy all the files the exist beneath
- <literal>${QPID_WORK}/&lt;nodename&gt;/config</literal>, assuming the virtualhost node is in
- the standard location. This will copy all configuration that belongs to that virtualhost
- node.</para>
- <para>The technique for backing up a virtualhost node whilst it is running depends on its
- type.</para>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB">
- <title>BDB</title>
- <para>Qpid Broker distribution includes the "hot" backup utility <literal>backup.sh</literal>
- which can be found at broker bin folder. This utility can perform the backup when broker is
- running.</para>
- <para><literal>backup.sh</literal> script invokes
- <classname>org.apache.qpid.server.store.berkeleydb.BDBBackup</classname> to do the
- job.</para>
- <para>You can also run this class from command line like in an example below:</para>
- <example>
- <title>Performing store backup by using <classname>BDBBackup</classname> class
- directly</title>
- <cmdsynopsis>
- <command>java</command>
- <arg choice="plain">-cp qpid-bdbstore-&qpidCurrentRelease;.jar</arg>
- <arg choice="plain">org.apache.qpid.server.store.berkeleydb.BDBBackup</arg>
- <sbr/>
- <arg choice="plain">-fromdir <replaceable>${QPID_WORK}/&lt;nodename&gt;/config</replaceable></arg>
- <arg choice="plain">-todir <replaceable>path/to/backup/folder</replaceable></arg>
- </cmdsynopsis>
- </example>
- <para>In the example above BDBBackup utility is called from
- qpid-bdbstore-&qpidCurrentRelease;.jar to backup the store at
- <literal>${QPID_WORK}/&lt;nodename&gt;/config</literal> and copy store logs into
- <literal>path/to/backup/folder</literal>.</para>
- <para>Linux and Unix users can take advantage of <literal>backup.sh</literal> bash script by
- running this script in a similar way.</para>
- <example>
- <title>Performing store backup by using <classname>backup.sh</classname> bash script</title>
- <cmdsynopsis>
- <command>backup.sh</command>
- <arg choice="plain">-fromdir <replaceable>${QPID_WORK}/&lt;nodename&gt;/config</replaceable></arg>
- <arg choice="plain">-todir <replaceable>path/to/backup/folder</replaceable></arg>
- </cmdsynopsis>
- </example>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA">
- <title>BDB-HA</title>
- <para>See <xref linkend="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB"/></para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-Derby">
- <title>Derby</title>
- <para>Not yet supported</para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JDBC">
- <title>JDBC</title>
- <para>The responsibility for backup is delegated to the database server itself. See the
- documentation accompanying it. Any technique that takes a consistent snapshot of the
- database is acceptable.</para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JSON">
- <title>JSON</title>
- <para>JSON stores its config in a single text file. It can be safely backed up using standard
- command line tools.</para>
- </section>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost">
- <title>Virtualhost</title>
- <para>To perform a complete backup of a Virtualhost whilst it is stopped (or Broker down),
- simply copy all the files the exist beneath
- <literal>${QPID_WORK}/&lt;name&gt;/messages</literal>, assuming the virtualhost is in the
- standard location. This will copy all messages that belongs to that virtualhost.</para>
- <para>The technique for backing up a virtualhost whilst it is running depends on its
- type.</para>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-BDB">
- <title>BDB</title>
- <para>Use the same backup utility described above, but use the path
- <literal>${QPID_WORK}/&lt;name&gt;/messages</literal> instead.</para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Derby">
- <title>Derby</title>
- <para>Not yet supported</para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-JDBC">
- <title>JDBC</title>
- <para>The responsibility for backup is delegated to the database server itself. See the
- documentation accompanying it. Any technique that takes a consistent snapshot of the
- database is acceptable.</para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-Provided">
- <title>Provided</title>
- <para>The contents of the virtualhost will be backed up as part of virtualhost node that
- contains it.</para>
- </section>
- <section id="Java-Broker-Backup-And-Recovery-Virtualhost-BDBHA">
- <title>BDB-HA</title>
- <para>The contents of the virtualhost will be backed up as part of virtualhost node that
- contains it.</para>
- </section>
- </section>
-
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Close-On-No-Route.xml b/qpid/doc/book/src/java-broker/Java-Broker-Close-On-No-Route.xml
deleted file mode 100644
index 7f871dcc20..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Close-On-No-Route.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Close-Connection-When-No-Route">
- <title>Closing client connections on unroutable mandatory messages</title>
-
- <section id="Java-Broker-Close-Connection-When-No-Route-Summary">
- <title>Summary</title>
- <para>
- Due to asynchronous nature of AMQP 0-8/0-9/0-9-1 protocols sending a message with a routing key for which no queue binding exist results
- in either message being bounced back (if it is mandatory or immediate) or discarded on broker side otherwise.
- </para>
- <para>
- When a 'mandatory' message is returned back, the Qpid JMS client conveys this by delivering
- an <emphasis>AMQNoRouteException</emphasis> through the configured ExceptionListener on the Connection.
- This does not cause channel or connection closure, however it requires a special exception handling
- on client side in order to deal with <emphasis>AMQNoRouteExceptions</emphasis>.
- This could potentially be a problem when using various messaging frameworks (e.g. Mule)
- as they usually close the connection on receiving any JMSException.
- </para>
- <para>
- In order to simplify application handling of scenarios where 'mandatory' messages
- are being sent to queues which do not actually exist, the Java Broker can be configured such that
- it will respond to this situation by closing the connection
- rather than returning the unroutable message to the client as it normally should.
- From the application perspective, this will result in failure of synchronous operations in progress such as a session commit() call.
- </para>
- <note>
- <para>This feature affects only transacted sessions.</para>
- <para>
- Qpid JMS client sends 'mandatory' messages when using Queue destinations
- and 'non-mandatory' messages when using Topic destinations.
- </para>
- </note>
- </section>
- <section id="Java-Broker-Close-Connection-When-No-Route-Configuration">
- <title>Configuring <emphasis>closeWhenNoRoute</emphasis></title>
- <para>
- The Broker attribute <emphasis>closeWhenNoRoute</emphasis> can be set to specify this feature on broker side.
- By default, it is turned on. Setting <emphasis>closeWhenNoRoute</emphasis> to <emphasis>false</emphasis> switches it off.
- </para>
- <para>
- Setting the <emphasis>closeWhenNoRoute</emphasis> in the JMS client connection URL can override the broker configuration
- on a connection specific basis, for example :
- </para>
- <example>
- <title>Disable feature to close connection on unroutable messages with client URL</title>
- <screen><![CDATA[
-amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672'&closeWhenNoRoute='false']]></screen>
- </example>
- <para>
- If no value is specified on the client the broker setting will be used. If client setting is specified then it will take precedence
- over the broker-wide configuration. If the client specifies and broker does not support this feature the warning will be logged.
- </para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Concepts.xml b/qpid/doc/book/src/java-broker/Java-Broker-Concepts.xml
deleted file mode 100644
index cabc04f150..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Concepts.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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.
-
--->
-
-<chapter id="Java-Broker-Concepts">
- <title>Concepts</title>
-
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Overview.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Broker.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Virtualhost-Nodes.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-RemoteReplicationNodes.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Virtualhosts.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Exchanges.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Queues.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Ports.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Authentication-Providers.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="concepts/Java-Broker-Concepts-Other-Services.xml"/>
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Exchanges-Binding-Arguments.xml b/qpid/doc/book/src/java-broker/Java-Broker-Exchanges-Binding-Arguments.xml
deleted file mode 100644
index 06c5ee7336..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Exchanges-Binding-Arguments.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="">
-<title></title>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Getting-Started.xml b/qpid/doc/book/src/java-broker/Java-Broker-Getting-Started.xml
deleted file mode 100644
index 644190a92a..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Getting-Started.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Getting-Started">
- <title>Getting Started</title>
-
- <section role="h2" id="Java-Broker-Getting-Started-Introduction">
- <title>Introduction</title>
- <para>
- This section describes how to start and stop the Java Broker, and outlines the various command line options.
- </para>
- <para>
- For additional details about the broker configuration store and related command line arguments see
- <xref linkend="Java-Broker-Initial-Configuration"/>.
- The broker is fully configurable via its Web Management Console, for details of this see
- <xref linkend="Java-Broker-Management-Channel-Web-Console"/>.
- </para>
- </section>
- <section role="h2" id="Java-Broker-Getting-Started-Starting-Stopping-Windows">
- <title>Starting/Stopping the broker on Windows</title>
- <para>Firstly change to the installation directory used during the <link linkend="Java-Broker-Installation-InstallationWindows">installation</link>
- and ensure that the <link linkend="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK">QPID_WORK environment variable is set</link>.</para>
- <para>Now use the <command>qpid-server.bat</command> to start the server</para>
- <programlisting><![CDATA[bin\qpid-server.bat]]></programlisting>
- <para>Output similar to the following will be seen:</para>
- <screen>[Broker] BRK-1006 : Using configuration : C:\qpidwork\config.json
-[Broker] BRK-1007 : Using logging configuration : C:\qpid\&windowsExtractedBrokerDirName;\etc\log4j.xml
-[Broker] BRK-1001 : Startup : Version: &qpidCurrentRelease; Build: 1478262
-[Broker] BRK-1010 : Platform : JVM : Oracle Corporation version: 1.7.0_21-b11 OS : Windows 7 version: 6.1 arch: x86
-[Broker] BRK-1011 : Maximum Memory : 1,060,372,480 bytes
-[Broker] BRK-1002 : Starting : Listening on TCP port 5672
-[Broker] MNG-1001 : JMX Management Startup
-[Broker] MNG-1002 : Starting : RMI Registry : Listening on port 8999
-[Broker] MNG-1002 : Starting : JMX RMIConnectorServer : Listening on port 9099
-[Broker] MNG-1004 : JMX Management Ready
-[Broker] MNG-1001 : Web Management Startup
-[Broker] MNG-1002 : Starting : HTTP : Listening on port 8080
-[Broker] MNG-1004 : Web Management Ready
-[Broker] BRK-1004 : Qpid Broker Ready</screen>
- <para>The BRK-1004 message confirms that the Broker is ready for work. The MNG-1002 and BRK-1002 confirm the ports to
- which the Broker is listening (for HTTP/JMX management and AMQP respectively).</para>
- <para>To stop the Broker, use Control-C or use the Shutdown MBean from the
- <link linkend="Java-Broker-Management-Channel-JMX">JMX management plugin</link>.</para>
- </section>
- <section role="h2" id="Java-Broker-Getting-Started-Starting-Stopping-Unix">
- <title>Starting/Stopping the broker on Unix</title>
- <para>Firstly change to the installation directory used during the <link linkend="Java-Broker-Installation-InstallationUnix">installation</link>
- and ensure that the <link linkend="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK">QPID_WORK environment variable is set</link>.</para>
- <para>Now use the <command>qpid-server</command> script to start the server:</para>
- <programlisting><![CDATA[bin/qpid-server]]></programlisting>
- <para>Output similar to the following will be seen:</para>
- <screen>[Broker] BRK-1006 : Using configuration : /var/qpidwork/config.json
-[Broker] BRK-1007 : Using logging configuration : /usr/local/qpid/&unixExtractedBrokerDirName;/etc/log4j.xml
-[Broker] BRK-1001 : Startup : Version: &qpidCurrentRelease; Build: exported
-[Broker] BRK-1010 : Platform : JVM : Sun Microsystems Inc. version: 1.6.0_32-b05 OS : Linux version: 3.6.10-2.fc16.x86_64 arch: amd64
-[Broker] BRK-1011 : Maximum Memory : 1,065,025,536 bytes
-[Broker] BRK-1002 : Starting : Listening on TCP port 5672
-[Broker] MNG-1001 : Web Management Startup
-[Broker] MNG-1002 : Starting : HTTP : Listening on port 8080
-[Broker] MNG-1004 : Web Management Ready
-[Broker] MNG-1001 : JMX Management Startup
-[Broker] MNG-1002 : Starting : RMI Registry : Listening on port 8999
-[Broker] MNG-1002 : Starting : JMX RMIConnectorServer : Listening on port 9099
-[Broker] MNG-1004 : JMX Management Ready
-[Broker] BRK-1004 : Qpid Broker Ready</screen>
- <para>The BRK-1004 message confirms that the Broker is ready for work. The MNG-1002 and BRK-1002 confirm the ports to
- which the Broker is listening (for HTTP/JMX management and AMQP respectively).</para>
- <para>To stop the Broker, use Control-C from the controlling shell, use the
- <command>bin/qpid.stop</command> script, use <command>kill -TERM &lt;pid&gt;</command>, or
- the Shutdown MBean from the <link linkend="Java-Broker-Management-Channel-JMX">JMX management plugin</link>.</para>
- </section>
- <section role="h2" id="Java-Broker-Getting-Started-LogFile">
- <title>Log file</title>
- <para>The Java Broker writes a log file to record both details of its normal operation and any exceptional
- conditions. By default the log file is written within the log subdirectory beneath the work directory
- - <computeroutput>$QPID_WORK/log/qpid.log</computeroutput> (UNIX) and
- <computeroutput>%QPID_WORK%\log\qpid.log</computeroutput> (Windows).</para>
- <para>For details of how to control the logging, see <xref linkend="Java-Broker-Runtime-Log-Files"/></para>
- </section>
- <section role="h2" id="Java-Broker-Getting-Started-CommandLine">
- <title>Using the command line</title>
- <para>The Java Broker understands a number of command line options which may be used to customise the configuration.</para>
- <para>
- For additional details about the broker configuration and related command line arguments see
- <xref linkend="Java-Broker-Initial-Configuration"/>.
- The broker is fully configurable via its Web Management Console, for details of this see
- <xref linkend="Java-Broker-Management-Channel-Web-Console"/>.
- </para>
- <para>To see usage information for all command line options, use the <option>--help</option> option</para>
- <programlisting><![CDATA[bin/qpid-server --help]]></programlisting>
- <screen><![CDATA[usage: Qpid [-cic <path>] [-h] [-icp <path>] [-l <file>] [-mm] [-mmhttp <port>]
- [-mmjmx <port>] [-mmpass <password>] [-mmqv] [-mmrmi <port>] [-os]
- [-sp <path>] [-st <type>] [-v] [-w <period>]
- -cic <path> Create a copy of the initial config
- --create-initial-config <path> file, either to an optionally specified
- file path, or as initial-config.json
- in the current directory
-
- -h, Print this message
- --help
-
- -icp <path> Set the location of initial JSON config
- --initial-config-path <path> to use when creating/overwriting a
- broker configuration store
-
- -l <file> Use the specified log4j xml configuration
- --logconfig <file> file. By default looks for a file named
- etc/log4j.xml in the same directory as
- the configuration file
-
- -mm Start broker in management mode,
- --management-mode disabling the AMQP ports
-
- -mmhttp <port> Override http management port in
- --management-mode-http-port <port> management mode
-
- -mmjmx Override jmx connector port in
- --management-mode-jmx-connector-port <port> management mode
-
- -mmpass <password> Set the password for the management
- --management-mode-password <password> mode user mm_admin
-
- -mmqv Make virtualhosts stay in the quiesced
- --management-mode-quiesce-virtualhosts state during management mode.
-
- -mmrmi <port> Override jmx rmi registry port in
- --management-mode-rmi-registry-port <port> management mode
-
- -os Overwrite the broker configuration store
- --overwrite-store with the current initial configuration
-
- -prop "<name=value>" Set a configuration property to use when
- --config-property "<name=value>" resolving variables in the broker
- configuration store, with format
- "name=value"
-
- -sp <path> Use given configuration store location
- --store-path <path>
-
- -st <type> Use given broker configuration store type
- --store-type <type>
-
- -v Print the version information and exit
- --version
-
- -w <period> Monitor the log file configuration file
- --logwatch <period> for changes. Units are seconds. Zero
- means do not check for changes.
-]]></screen>
- </section>
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-High-Availability.xml b/qpid/doc/book/src/java-broker/Java-Broker-High-Availability.xml
deleted file mode 100644
index 8282beaa5e..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-High-Availability.xml
+++ /dev/null
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-<chapter id="Java-Broker-High-Availability">
- <title>High Availability</title>
-
- <section id="Java-Broker-High-Availability-GeneralIntroduction">
- <title>General Introduction</title>
- <para>The term High Availability (HA) usually refers to having a number of instances of a
- service such as a Message Broker available so that should a service unexpectedly fail, or
- requires to be shutdown for maintenance, users may quickly connect to another instance and
- continue their work with minimal interruption. HA is one way to make a overall system more
- resilient by eliminating a single point of failure from a system.</para>
- <para>HA offerings are usually categorised as <emphasis role="bold">Active/Active</emphasis> or
- <emphasis role="bold">Active/Passive</emphasis>. An Active/Active system is one where all
- nodes within the group are usually available for use by clients all of the time. In an
- Active/Passive system, one only node within the group is available for use by clients at any
- one time, whilst the others are in some kind of standby state, awaiting to quickly step-in in
- the event the active node becomes unavailable. </para>
- </section>
-
- <section id="Java-Broker-High-Availability-OverviewOfHA">
- <title>Overview of HA within the Java Broker</title>
- <para>The Java Broker provides a HA implementation offering an <emphasis role="bold"
- >Active/Passive</emphasis> mode of operation. When using HA, many instances of the Java
- Broker work together to form an high availability group of two or more nodes.</para>
- <para>The remainder of this section now talks about the specifics of how HA is achieved in terms
- of the <link linkend="Java-Broker-Concepts">concepts</link> introduced earlier in this
- book.</para>
- <para>The <link linkend="Java-Broker-Concepts-Virtualhosts">Virtualhost</link> is the unit of
- replication. This means that any <emphasis>durable</emphasis> queues, exchanges, and bindings
- belonging to that virtualhost, any <emphasis>persistent</emphasis> messages contained within
- the queues and any attribute settings applied to the virtualhost itself are automatically
- replicated to all nodes within the group.<footnote>
- <para>Transient messages and messages on non-durable queues are not replicated.</para>
- </footnote></para>
- <para>It is the <link linkend="Java-Broker-Concepts-Virtualhost-Nodes">Virtualhost Nodes</link>
- (from different Broker instances) that join together to form a group. The virtualhost nodes
- collectively to coordinate the group: they organise replication between the master and
- replicas and conduct elections to determine who becomes the new master in the event of the old
- failing.</para>
- <para>When a virtualhost node is in the <emphasis>master</emphasis> role, the virtualhost
- beneath it is available for messaging work. Any write operations sent to the virtualhost are
- automatically replicated to all other nodes in group.</para>
- <para>When a virtualhost node is in the <emphasis>replica</emphasis> role, the virtualhost
- beneath it is always unavailable for message work. Any attempted connections to a virtualhost
- in this state are automatically turned away, allowing a messaging client to discover where the
- master currently resides. When in replica role, the node sole responsibility is to consume a
- replication stream in order that it remains up to date with the master.</para>
- <para>Messaging clients discover the active virtualhost.This can be achieved using a static
- technique (for instance, a failover url (a feature of a Qpid Java Client)), or a dynamic one
- utilising some kind of proxy or virtual IP (VIP).</para>
- <para>The figure that follows illustrates a group formed of three virtualhost nodes from three
- separate Broker instances. A client is connected to the virtualhost node that is in the master
- role. The two virtualhost nodes <literal>weather1</literal> and <literal>weather3</literal>
- are replicas and are receiving a stream of updates.</para>
- <figure id="Java-Broker-High-Availability-OverviewOfHA-Figure">
- <title>3-node group deployed across three Brokers.</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/HA-Overview.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Diagram showing a 3 node group deployed across three Brokers</phrase>
- </textobject>
- </mediaobject>
- </figure>
- <para>Currently, the only virtualhost/virtualhost node type offering HA is BDB HA. Internally,
- this leverages the HA capabilities of the Berkeley DB JE edition. BDB JE is an <link
- linkend="Java-Broker-Miscellaneous-Installing-Oracle-BDB-JE">optional dependency</link> of
- the Broker.</para>
- <note>
- <para>The Java Broker HA solution is incompatible with the HA solution offered by the CPP
- Broker. It is not possible to co-locate Java and CPP Brokers within the same group.</para>
- </note>
- </section>
- <section id="Java-Broker-High-Availability-CreatingGroup">
- <title>Creating a group</title>
- <para>This section describes how to create a group. At a high level, creating a group involves
- first creating the first node standalone, then creating subsequent nodes referencing the first
- node so the nodes can introduce themselves and gradually the group is built up.</para>
- <para>A group is created through either <link
- linkend="Java-Broker-Management-Channel-Web-Console">Web Management</link> or the <link
- linkend="Java-Broker-Management-Channel-REST-API">REST API</link>. These instructions
- presume you are using Web Management. To illustrate the example it builds the group
- illustrated in figure <xref linkend="Java-Broker-High-Availability-OverviewOfHA-Figure"
- /></para>
- <para><orderedlist>
- <listitem>
- <para>Install a Broker on each machine that will be used to host the group. As messaging
- clients will need to be able to connect to and authentication to all Brokers, it usually
- makes sense to choose a common authentication mechanism e.g. Simple LDAP Authentication,
- External with SSL client authentication or Kerberos.</para>
- </listitem>
- <listitem>
- <para>Select one Broker instance to host the first node instance. This choice is an
- arbitrary one. The node is special only whilst creating group. Once creation is
- complete, all nodes will be considered equal.</para>
- </listitem>
- <listitem>
- <para>Click the <literal>Add</literal> button on the Virtualhost Panel on the Broker
- tab.</para>
- <para>
- <orderedlist>
- <listitem>
- <para>Give the Virtualhost node a unique name e.g. <literal>weather1</literal>. The
- name must be unique within the group and unique to that Broker. It is best if the
- node names are chosen from a different nomenclature than the machine names
- themselves.</para>
- </listitem>
- <listitem>
- <para>Choose <literal>BDB_HA</literal> and select <literal>New group</literal>
- </para>
- </listitem>
- <listitem>
- <para>Give the group a name e.g. <literal>weather</literal>. The group name must be
- unique and will be the name also given to the virtualhost, so this is the name the
- messaging clients will use in their connection url.</para>
- </listitem>
- <listitem>
- <para>Give the address of this node. This is an address on this node's host that
- will be used for replication purposes. The hostname <emphasis>must</emphasis> be
- resolvable by all the other nodes in the group. This is separate from the address
- used by messaging clients to connect to the Broker. It is usually best to choose a
- symbolic name, rather than an IP address.</para>
- </listitem>
- <listitem>
- <para>Now add the node addresses of all the other nodes that will form the group. In
- our example we are building a three node group so we give the node addresses of
- <literal>chaac:5000</literal> and <literal>indra:5000</literal>.</para>
- </listitem>
- <listitem>
- <para>Click Add to create the node. The virtualhost node will be created with the
- virtualhost. As there is only one node at this stage, the role will be
- master.</para>
- </listitem>
- </orderedlist>
- <figure>
- <title>Creating 1st node in a group</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/HA-Create-1.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Creating 1st node in a group</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
- </listitem>
- <listitem>
- <para>Now move to the second Broker to be the group. Click the <literal>Add</literal>
- button on the Virtualhost Panel on the Broker tab of the second Broker.</para>
- <para>
- <orderedlist>
- <listitem>
- <para>Give the Virtualhost node a unique name e.g.
- <literal>weather2</literal>.</para>
- </listitem>
- <listitem>
- <para>Choose <literal>BDB_HA</literal> and choose <literal>Existing group</literal>
- </para>
- </listitem>
- <listitem>
- <para>Give the details of the <emphasis>existing node</emphasis>. Following our
- example, specify <literal>weather</literal>, <literal>weather1</literal> and
- <literal>thor:5000</literal></para>
- </listitem>
- <listitem>
- <para>Give the address of this node.</para>
- </listitem>
- <listitem>
- <para>Click Add to create the node. The node will use the existing details to
- contact it and introduce itself into the group. At this stage, the group will have
- two nodes, with the second node in the replica role.</para>
- </listitem>
- <listitem>
- <para>Repeat these steps until you have added all the nodes to the group.</para>
- </listitem>
- </orderedlist>
- <figure>
- <title>Adding subsequent nodes to the group</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/HA-Create-2.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Adding subsequent nodes to the group</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
- </listitem>
-
- </orderedlist></para>
- <para>The group is now formed and is ready for us. Looking at the virtualhost node of any of the
- nodes shows a complete view of the whole group. <figure>
- <title>View of group from one node</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/HA-Create-3.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>View of group from one node</phrase>
- </textobject>
- </mediaobject>
- </figure></para>
- </section>
-
- <section id="Java-Broker-High-Availability-Behaviour">
- <title>Behaviour of the Group</title>
- <para>This section first describes the behaviour of the group in its default configuration. It
- then goes on to talk about the various controls that are available to override it. It
- describes the controls available that affect the <ulink
- url="http://en.wikipedia.org/wiki/ACID#Durability">durability</ulink> of transactions and
- the data consistency between the master and replicas and thus make trade offs between
- performance and reliability.</para>
-
- <section id="Java-Broker-High-Availability-Behaviour-Default-Behaviour">
- <title>Default Behaviour</title>
- <para>Let's first look at the behaviour of a group in default configuration.</para>
- <para>In the default configuration, for any messaging work to be done, there must be at least
- <emphasis>quorum</emphasis> nodes present. This means for example, in a three node group,
- this means there must be at least two nodes available.</para>
- <para>When a messaging client sends a transaction, it can be assured that, before the control
- returns back to his application after the commit call that the following is true:</para>
- <para><itemizedlist>
- <listitem>
- <para>At the master, the transaction is <emphasis>written to disk and OS level caches
- are flushed</emphasis> meaning the data is on the storage device.</para>
- </listitem>
- <listitem>
- <para>At least quorum minus 1 replicas, <emphasis>acknowledge the receipt of
- transaction</emphasis>. The replicas will write the data to the storage device
- sometime later.</para>
- </listitem>
- </itemizedlist></para>
- <para>If there were to be a master failure immediately after the transaction was committed,
- the transaction would be held by at least quorum minus one replicas. For example, if we had
- a group of three, then we would be assured that at least one replica held the
- transaction.</para>
-
- <para>In the event of a master failure, if quorum nodes remain, those nodes hold an election.
- The nodes will elect master the node with the most recent transaction. If two or more nodes
- have the most recent transaction the group makes an arbitrary choice. If quorum number of
- nodes does not remain, the nodes cannot elect a new master and will wait until nodes rejoin.
- You will see later that manual controls are available allow service to be restored from
- fewer than quorum nodes and to influence which node gets elected in the event of a
- tie.</para>
-
- <para>Whenever a group has fewer than quorum nodes present, the virtualhost will be
- unavailable and messaging connections will be refused. If quorum disappears at the very
- moment a messaging client sends a transaction that transaction will fail.</para>
-
- <para>You will have noticed the difference in the synchronization policies applied the master
- and the replicas. The replicas send the acknowledgement back before the data is written to
- disk. The master synchronously writes the transaction to storage. This is an example of a
- trade off between durability and performance. We will see more about how to control this
- trade off later.</para>
- </section>
- <section id="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy">
- <title>Synchronization Policy</title>
- <para>The <emphasis>synchronization policy</emphasis> dictates what a node must do when it
- receives a transaction before it acknowledges that transaction to the rest of the
- group.</para>
- <para>The following options are available: <itemizedlist>
- <listitem>
- <para><emphasis>SYNC</emphasis>. The node must write the transaction to disk and flush
- any OS level buffers before sending the acknowledgement. SYNC is offers the highest
- durability but offers the least performance.</para>
- </listitem>
- <listitem>
- <para><emphasis>WRITE_NO_SYNC</emphasis>. The node must write the transaction to disk
- before sending the acknowledgement. OS level buffers will be flush as some point
- later. This typically provides an assurance against failure of the application but not
- the operating system or hardware.</para>
- </listitem>
- <listitem>
- <para><emphasis>NO_SYNC</emphasis>. The node immediately sends the acknowledgement. The
- transaction will be written and OS level buffers flushed as some point later. NO_SYNC
- offers the highest performance but the lowest durability level. This synchronization
- policy is sometimes known as <emphasis>commit to the network</emphasis>.</para>
- </listitem>
- </itemizedlist></para>
- <para>It is possible to assign a one policy to the master and a different policy to the
- replicas. These are configured as <link
- linkend="Java-Broker-Management-Managing-Virtualhost-Attributes">attributes on the
- virtualhost</link>. By default the master uses <emphasis>SYNC</emphasis> and replicas use
- <emphasis>NO_SYNC</emphasis>.</para>
- </section>
- <section id="Java-Broker-High-Availability-Behaviour-NodePriority">
- <title>Node Priority</title>
- <para>Node priority can be used to influence the behaviour of the election algorithm. It is
- useful in the case were you want to favour some nodes over others. For instance, if you wish
- to favour nodes located in a particular data centre over those in a remote site. </para>
- <para>The following options are available: <itemizedlist>
- <listitem>
- <para><emphasis>Highest</emphasis>. Nodes with this priority will be more favoured. In
- the event of two or more nodes having the most recent transaction, the node with this
- priority will be elected master. If two or more nodes have this priority the algorithm
- will make an arbitrary choice.</para>
- </listitem>
- <listitem>
- <para><emphasis>High</emphasis>. Nodes with this priority will be favoured but not as
- much so as those with Highest.</para>
- </listitem>
- <listitem>
- <para><emphasis>Normal</emphasis>. This is default election priority.</para>
- </listitem>
- <listitem>
- <para><emphasis>Never</emphasis>. The node will never be elected <emphasis>even if the
- node has the most recent transaction</emphasis>. The node will still keep up to date
- with the replication stream and will still vote itself, but can just never be
- elected.</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>Node priority is configured as an <link
- linkend="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">attribute on the
- virtualhost node</link> and can be changed at runtime and is effective immediately.</para>
- <important>
- <para>Use of the Never priority can lead to transaction loss. For example, consider a group
- of three where replica-2 is marked as Never. If a transaction were to arrive and it be
- acknowledged only by Master and Replica-2, the transaction would succeed. Replica 1 is
- running behind for some reason (perhaps a full-GC). If a Master failure were to occur at
- that moment, the replicas would elect Replica-1 even though Replica-2 had the most recent
- transaction.</para>
- <para>Transaction loss is reported by message <link
- linkend="Java-Broker-Appendix-Operation-Logging-Message-HA-1014">HA-1014</link>.</para>
- </important>
- </section>
- <section id="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes">
- <title>Required Minimum Number Of Nodes</title>
- <para>This controls the required minimum number of nodes to complete a transaction and to
- elect a new master. By default, the required number of nodes is set to
- <emphasis>Default</emphasis> (which signifies quorum).</para>
- <para>It is possible to reduce the required minimum number of nodes. The rationale for doing
- this is normally to temporarily restore service from fewer than quorum nodes following an
- extraordinary failure.</para>
- <para>For example, consider a group of three. If one node were to fail, as quorum still
- remained, the system would continue work without any intervention. If the failing node were
- the master, a new master would be elected.</para>
- <para>What if a further node were to fail? Quorum no longer remains, and the remaining node
- would just wait. It cannot elect itself master. What if we wanted to restore service from
- just this one node?</para>
- <para>In this case, Required Number of Nodes can be reduced to 1 on the remain node, allowing
- the node to elect itself and service to be restored from the singleton. Required minimum
- number of nodes is configured as an <link
- linkend="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">attribute on the
- virtualhost node</link> and can be changed at runtime and is effective immediately.</para>
- <important>
- <para>The attribute must be used cautiously. Careless use will lead to lost transactions and
- can lead to a <ulink url="http://en.wikipedia.org/wiki/Split-brain_(computing)"
- >split-brain</ulink> in the event of a network partition. If used to temporarily restore
- service from fewer than quorum nodes, it is <emphasis>imperative</emphasis> to revert it
- to the Default value as the failed nodes are restored.</para>
- <para>Transaction loss is reported by message <link
- linkend="Java-Broker-Appendix-Operation-Logging-Message-HA-1014">HA-1014</link>.</para>
- </important>
- </section>
- <section id="Java-Broker-High-Availability-Behaviour-DesignatedPrimary">
- <title>Designated Primary</title>
- <para>This attribute applies to the groups of two only.</para>
- <para> In a group of two, if a node were to fail then in default configuration work will cease
- as quorum no longer exists. A single node cannot elect itself master. </para>
- <para>The designated primary flag allows a node in a two node group to elect itself master and
- to operate sole. Designated Primary is configured as an <link
- linkend="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes">attribute on the
- virtualhost node</link> and can be changed at runtime and is effective immediately.</para>
- <para>For example, consider a group of two where the master fails. Service will be interrupted
- as the remaining node cannot elect itself master. To allow it to become master, apply the
- designated primary flag to it. It will elect itself master and work can continue, albeit
- from one node.</para>
- <important>
- <para>It is imperative not to allow designated primary to be set on both nodes at once. To
- do so will mean, in the event of a network partition, a <ulink
- url="http://en.wikipedia.org/wiki/Split-brain_(computing)">split-brain</ulink> will
- occur.</para>
- <para>Transaction loss is reported by message <link
- linkend="Java-Broker-Appendix-Operation-Logging-Message-HA-1014">HA-1014</link>.</para>
- </important>
- </section>
- </section>
- <section id="Java-Broker-High-Availability-NodeOperations">
- <title>Node Operations</title>
- <section id="Java-Broker-High-Availability-NodeOperations-Lifecycle">
- <title>Lifecycle</title>
- <para>Virtualhost nodes can be stopped, started and deleted.</para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Stop</emphasis></para>
- <para>Stopping a master node will cause the node to temporarily leave the group. Any
- messaging clients will be disconnected and any in-flight transaction rollbacked. The
- remaining nodes will elect a new master if quorum number of nodes still remains.</para>
- <para>Stopping a replica node will cause the node to temporarily leave the group too.
- Providing quorum still exists, the current master will continue without interruption. If
- by leaving the group, quorum no longer exists, all the nodes will begin waiting,
- disconnecting any messaging clients, and the virtualhost will become unavailable.</para>
- <para>A stopped virtualhost node is still considered to be a member of the group.</para>
- </listitem>
- <listitem>
- <para><emphasis>Start</emphasis></para>
- <para>Starting a virtualhost node allows it to rejoin the group.</para>
- <para>If the group already has a master, the node will catch up from the master and then
- become a replica once it has done so.</para>
- <para>If the group did not have quorum and so had no master, but the rejoining of this
- node means quorum now exists, an election will take place. The node with the most up to
- date transaction will become master unless influenced by the priority rules described
- above.</para>
- <note>
- <para>The length of time taken to catch up will depend on how long the node has been
- stopped. The worst case is where the node has been stopped for more than one hour. In
- this case, the master will perform an automated <literal>network restore</literal>.
- This involves streaming all the data held by the master over to the replica. This
- could take considerable time.</para>
- </note>
- </listitem>
- <listitem>
- <para><emphasis>Delete</emphasis></para>
- <para>A virtualhost node can be deleted. Deleting a node permanently removes the node from
- the group. The data stored locally is removed but this does not affect the data held by
- the remainder of the group.</para>
- <note>
- <para>The names of deleted virtualhost node cannot be reused within a group.</para>
- </note>
- </listitem>
- </itemizedlist>
- <para>It is also possible to add nodes to an existing group using the procedure described
- above.</para>
- </section>
- <section id="Java-Broker-High-Availability-NodeOperations-TransferMaster">
- <title>Transfer Master</title>
- <para>This operation allows the mastership to be moved from node to node. This is useful for
- restoring a business as usual state after a failure.</para>
- <para>When using this function, the following occurs. <orderedlist>
- <listitem>
- <para>The system first gives time for the chosen new master to become reasonable up to
- date. </para>
- </listitem>
- <listitem>
- <para>It then suspends transactions on the old master and allows the chosen node to
- become up to date.</para>
- </listitem>
- <listitem>
- <para>The suspended transactions are aborted and any messaging clients connected to the
- old master are disconnected.</para>
- </listitem>
- <listitem>
- <para>The chosen master becomes the new master. The old master becomes a replica.</para>
- </listitem>
- <listitem>
- <para>Messaging clients reconnect the new master.</para>
- </listitem>
- </orderedlist></para>
- </section>
- </section>
-
- <section id="Java-Broker-High-Availability-ClientFailover">
- <title>Client failover</title>
- <para>As mentioned above, the clients need to be able to find the location of the active
- virtualhost within the group.</para>
- <para>Clients can do this using a static technique, for example , utilising the <ulink
- url="&qpidjmsdocClientConectionUrl;">failover feature of the Qpid connection url</ulink>
- where the client has a list of all the nodes, and tries each node in sequence until it
- discovers the node with the active virtualhost.</para>
- <para>Another possibility is a dynamic technique utilising a proxy or Virtual IP (VIP). These
- require other software and/or hardware and are outside the scope of this document.</para>
- </section>
- <section role="h3" id="Java-Broker-High-Availability-JMXAPI">
- <title>Qpid JMX API for HA</title>
- <para>The Qpid JMX API for HA is now deprecated. New users are recommended to use the <link
- linkend="Java-Broker-Management-Channel-REST-API">REST API.</link></para>
- </section>
-
- <section id="Java-Broker-High-Availability-DiskSpace">
- <title>Disk space requirements</title>
- <para>In the case where node in a group are down, the master must keep the data they are missing
- for them to allow them to return to the replica role quickly.</para>
- <para>By default, the master will retain up to 1hour of missed transactions. In a busy
- production system, the disk space occupied could be considerable.</para>
- <para>This setting is controlled by virtualhost context variable
- <literal>je.rep.repStreamTimeout</literal>.</para>
- </section>
-
- <section id="Java-Broker-High-Availability-Network-Requirements">
- <title>Network Requirements</title>
- <para>The HA Cluster performance depends on the network bandwidth, its use by existing traffic,
- and quality of service.</para>
- <para>In order to achieve the best performance it is recommended to use a separate network
- infrastructure for the Qpid HA Nodes which might include installation of dedicated network
- hardware on Broker hosts, assigning a higher priority to replication ports, installing a group
- in a separate network not impacted by any other traffic.</para>
- </section>
-
- <section id="Java-Broker-High-Availability-Security">
- <title>Security</title>
- <para>The replication stream between the master and the replicas is insecure and can be
- intercepted by anyone having access to the replication network.</para>
- <para>In order to reduce the security risks the entire HA group is recommended to run in a
- separate network protected from general access and/or utilise SSH-tunnels/IPsec.</para>
- </section>
-
- <section id="Java-Broker-High-Availability-Backup">
- <title>Backups</title>
- <para>It is recommend to use the hot backup script to periodically backup every node in the
- group. <xref linkend="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"/>.</para>
- </section>
-
-
- <section id="Java-Broker-High-Availability-Reset-Group-Infomational">
- <title>Reset Group Information</title>
- <para>BDB JE internally stores details of the group within its database. There are some
- circumstances when resetting this information is useful.<itemizedlist>
- <listitem>
- <para>Copying data between environments (e.g. production to UAT)</para>
- </listitem>
- <listitem>
- <para>Some disaster recovery situations where a group must be recreated on new
- hardware</para>
- </listitem>
- </itemizedlist></para>
- <para>This is not an normal operation and is not usually required</para>
- <para>The following command replaces the group table contained within the JE logs files with the
- provided information. </para>
- <example>
- <title>Resetting of replication group with <classname>DbResetRepGroup</classname></title>
- <cmdsynopsis>
- <command>java</command>
- <arg choice="plain">-cp je-&oracleBdbProductVersion;.jar</arg>
- <arg choice="plain">com.sleepycat.je.rep.util.DbResetRepGroup</arg>
- <arg choice="plain">-h <replaceable>path/to/jelogfiles</replaceable></arg>
- <sbr/>
- <arg choice="plain">-groupName <replaceable>newgroupname</replaceable></arg>
- <arg choice="plain">-nodeName <replaceable>newnodename</replaceable></arg>
- <arg choice="plain">-nodeHostPort <replaceable>newhostname:5000</replaceable></arg>
- </cmdsynopsis>
- </example>
- <para>The modified log files can then by copied into
- <literal>${QPID_WORK}/&lt;nodename&gt;/config</literal> directory of a target Broker. Then
- start the Broker, and add a BDB HA Virtualhost node specify the same group name, node name and
- node address. You will then have a group with a single node, ready to start re-adding
- additional nodes as described above. </para>
- </section>
-
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Initial-Configuration.xml b/qpid/doc/book/src/java-broker/Java-Broker-Initial-Configuration.xml
deleted file mode 100644
index ce461d32d7..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Initial-Configuration.xml
+++ /dev/null
@@ -1,360 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Initial-Configuration">
- <title>Initial Configuration</title>
-
-
- <section id="Java-Broker-Initial-Configuration-Introduction">
- <title>Introduction</title>
- <para>This section describes how to perform initial configuration on the command line. Once
- the Broker is started, subsequent management is performed using the <link
- linkend="Java-Broker-Management-Channel">Management interfaces</link></para>
- <para> The configuration for each component is stored as an entry in the broker
- configuration store, currently implemented as a JSON file which persists changes to
- disk, BDB or Derby database or an in-memory store which does not. The following
- components configuration is stored there: <itemizedlist>
- <listitem>
- <para>Broker</para>
- </listitem>
- <listitem>
- <para>Virtual Host</para>
- </listitem>
- <listitem>
- <para>Port</para>
- </listitem>
- <listitem>
- <para>Authentication Provider</para>
- </listitem>
- <listitem>
- <para>Access Control Provider</para>
- </listitem>
- <listitem>
- <para>Group Provider</para>
- </listitem>
- <listitem>
- <para>Key store</para>
- </listitem>
- <listitem>
- <para>Trust store</para>
- </listitem>
- <listitem>
- <para>Plugin</para>
- </listitem>
- </itemizedlist>
- </para>
-
- <para> Broker startup involves two configuration related items, the 'Initial Configuration'
- and the Configuration Store. When the broker is started, if a Configuration Store does
- not exist at the current <link linkend="Java-Broker-Initial-Configuration-Location"
- >store location</link> then one will be initialised with the current <link
- linkend="Java-Broker-Initial-Configuration-Initial-Config-Location">'Initial
- Configuration'</link>. Unless otherwise requested to <link
- linkend="Java-Broker-Initial-Configuration-Location">overwrite the configuration
- store</link> then subsequent broker restarts will use the existing configuration
- store and ignore the contents of the 'Initial Configuration'. </para>
- </section>
-
- <section id="Java-Broker-Initial-Configuration-Location">
- <title>Configuration Store Location</title>
- <para> The broker will default to using <link
- linkend="Java-Broker-Initial-Configuration-Configuration-Properties"
- >${qpid.work_dir}</link>/config.json as the path for its configuration store unless
- otherwise instructed. </para>
- <para> The command line argument <emphasis>-sp</emphasis> (or
- <emphasis>--store-path</emphasis>) can optionally be used to specify a different
- relative or absolute path to use for the broker configuration store: </para>
- <screen>
-$ ./qpid-server -sp ./my-broker-configuration.json
- </screen>
-
- <para> If no configuration store exists at the specified/defaulted location when the broker
- starts then one will be initialised using the current <link
- linkend="Java-Broker-Initial-Configuration-Initial-Config-Location">'Initial
- Configuration'</link>. </para>
- </section>
-
- <section id="Java-Broker-Initial-Configuration-Initial-Config-Location">
- <title>'Initial Configuration' Location</title>
- <para> The 'Initial Configuration' JSON file is used when initialising new broker
- configuration stores. The broker will default to using an internal file within its jar
- unless otherwise instructed. </para>
- <para> The command line argument <emphasis>-icp </emphasis> (or
- <emphasis>--initial-config-path</emphasis>) can be used to override the brokers
- internal file and supply a <link
- linkend="Java-Broker-Initial-Configuration-Create-Initial-Config">user-created
- one</link>:</para>
- <screen>
-$ ./qpid-server -icp ./my-initial-configuration.json
- </screen>
-
- <para> If a Configuration Store already exists at the current <link
- linkend="Java-Broker-Initial-Configuration-Location">store location</link> then the
- current 'Initial Configuration' will be ignored unless otherwise requested to <link
- linkend="Java-Broker-Initial-Configuration-Location">overwrite the configuration
- store</link>
- </para>
- </section>
-
- <section id="Java-Broker-Initial-Configuration-Create-Initial-Config">
- <title>Creating an 'Initial Configuration' JSON File</title>
-
- <para> It is possible to have the broker output its default internal 'Initial Configuration'
- file to disk using the command line argument <emphasis>-cic</emphasis> (or
- <emphasis>--create-initial-config</emphasis>). If the option is used without
- providing a path, a file called <emphasis>initial-config.json</emphasis> will be created
- in the current directory, or alternatively the file can be created at a specified
- location: </para>
- <screen>
-$ ./qpid-server -cic ./initial-config.json
- </screen>
-
- <para> The 'Initial Configuration' JSON file shares a common format with the brokers JSON
- Configuration Store implementation, so it is possible to use a brokers Configuration
- Store output as an initial configuration. Typically 'Initial Configuration' files would
- not to contain IDs for the configured entities, so that IDs will be generated when the
- configuration store is initialised and prevent use of the same IDs across multiple
- brokers, however it may prove useful to include IDs if using the Memory <link
- linkend="Java-Broker-Initial-Configuration-Type">Configuration Store Type</link>. </para>
- <para> It can be useful to use <link
- linkend="Java-Broker-Initial-Configuration-Configuration-Properties">Configuration
- Properties</link> within 'Initial Configuration' files to allow a degree of
- customisation with an otherwise fixed file. </para>
- <para> For an example file, see <xref
- linkend="Java-Broker-Configuring-And-Managing-Configuration-Initial-Config-Example"
- />
- </para>
-
- </section>
-
- <section id="Java-Broker-Initial-Configuration-Overwrite-Config-Store">
- <title>Overwriting An Existing Configuration Store</title>
- <para> If a configuration store already exists at the configured <link
- linkend="Java-Broker-Initial-Configuration-Location">store location</link> then it
- is used and the current <link
- linkend="Java-Broker-Initial-Configuration-Initial-Config-Location">'Initial
- Configuration'</link> is ignored. </para>
- <para> The command line argument <emphasis>-os</emphasis> (or
- <emphasis>--overwrite-store</emphasis>) can be used to force a new broker
- configuration store to be initialised from the current 'Initial Configuration' even if
- one exists: </para>
- <screen>
-$ ./qpid-server -os -icp ./my-initial-configuration.json
- </screen>
- <para> This can be useful to effectively play configuration into one or more broker to
- pre-configure them to a particular state, or alternatively to ensure a broker is always
- started with a fixed configuration. In the latter case, use of the Memory <link
- linkend="Java-Broker-Initial-Configuration-Type">Configuration Store Type</link> may
- also be useful. </para>
- </section>
-
- <section id="Java-Broker-Initial-Configuration-Type">
- <title>Configuration Store Type</title>
- <para> There are currently two implementations of the pluggable Broker Configuration Store,
- the default one which persists content to disk in a JSON file, and another which
- operates only in-memory and so does not retain changes across broker restarts and always
- relies on the current <link
- linkend="Java-Broker-Initial-Configuration-Initial-Config-Location">'Initial
- Configuration'</link> to provide the configuration to start the broker with. </para>
- <para> The command line argument <emphasis>-st</emphasis> (or
- <emphasis>--store-type</emphasis>) can be used to override the default
- <emphasis>json</emphasis>)configuration store type and allow choosing an alternative,
- such as <emphasis>memory</emphasis>) </para>
- <screen>
-$ ./qpid-server -st memory
- </screen>
- <para> This can be useful when running tests, or always wishing to start the broker with the
- same <link linkend="Java-Broker-Initial-Configuration-Initial-Config-Location">'Initial
- Configuration'</link>
- </para>
- </section>
-
- <section id="Java-Broker-Initial-Configuration-Configuration-Properties">
- <title>Customising Configuration using Configuration Properties</title>
- <para> It is possible for 'Initial Configuration' (and Configuration Store) files to contain
- ${properties} that can be resolved to String values at startup, allowing a degree of
- customisation using a fixed file. Configuration Property values can be set either via
- Java System Properties, or by specifying ConfigurationPproperties on the broker command
- line. If both are defined, System Property values take precedence. </para>
-
- <para> The broker has the following set of core configuration properties, with the indicated
- default values if not otherwise configured by the user: <table>
- <title>Base Configuration Properties</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry> Name </entry>
- <entry> Description </entry>
- <entry> Value </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry> qpid.amqp_port </entry>
- <entry> Port number used for the brokers default AMQP messaging port </entry>
- <entry> "5672" </entry>
- </row>
- <row>
- <entry> qpid.http_port </entry>
- <entry> Port number used for the brokers default HTTP management port </entry>
- <entry> "8080" </entry>
- </row>
- <row>
- <entry> qpid.rmi_port </entry>
- <entry> Port number used for the brokers default RMI Registry port, to
- advertise the JMX ConnectorServer. </entry>
- <entry> "8999" </entry>
- </row>
- <row>
- <entry> qpid.jmx_port </entry>
- <entry> Port number used for the brokers default JMX port </entry>
- <entry> "9099" </entry>
- </row>
- <row>
- <entry> qpid.home_dir </entry>
- <entry> Location of the broker installation directory, which contains
- the 'lib' directory and the 'etc' directory often used to store
- files such as group and ACL files. </entry>
- <entry> Defaults to the value set into the QPID_HOME system property if
- it is set, or remains unset otherwise unless configured by the user.
- </entry>
- </row>
- <row>
- <entry> qpid.work_dir </entry>
- <entry> Location of the broker working directory, which might contain
- the persistent message store and broker configuration store files. </entry>
- <entry> Defaults to the value set into the QPID_WORK system property if
- it is set, or the 'work' subdirectory of the JVMs current working
- directory. </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
-
- <para> Use of these core properties can be seen in the <link
- linkend="Java-Broker-Configuring-And-Managing-Configuration-Initial-Config-Example"
- >default 'Initial Configuration' example</link>. </para>
-
- <para> Configuration Properties can be set on the command line using the
- <emphasis>-prop</emphasis> (or <emphasis>--configuration-property</emphasis>)
- command line argument: </para>
-
- <screen>
-$ ./qpid-server -prop "qpid.amqp_port=10000" -prop "qpid.http_port=10001"
- </screen>
- <para> In the example above, property used to set the port number of the default AMQP port
- is specified with the value 10000, overriding the default value of 5672, and similarly
- the value 10001 is used to override the default HTTP port number of 8080. When using the
- 'Initial Configuration' to initialise a new Configuration Store (either at first broker
- startup, when requesting to <link linkend="Java-Broker-Initial-Configuration-Location"
- >overwrite the configuration store</link>) these new values will be used for the
- port numbers instead. </para>
- <para> NOTE: When running the broker on Windows and starting it via the qpid-server.bat
- file, the "name=value" argument MUST be quoted. </para>
-
- </section>
-
- <section id="Java-Broker-Configuring-And-Managing-Configuration-Initial-Config-Example">
- <title>Example of JSON 'Initial Configuration'</title>
- <para> An example of the default 'Initial Configuration' JSON file the broker uses is
- provided below:</para>
- <example>
- <title>JSON 'Initial configuration' File</title>
- <programlisting><![CDATA[
-{
- "name": "${broker.name}",
- "modelVersion": "2.0",
- "defaultVirtualHost" : "default",
- "authenticationproviders" : [ {
- "name" : "passwordFile",
- "type" : "PlainPasswordFile",
- "path" : "${qpid.home_dir}${file.separator}etc${file.separator}passwd",
- "preferencesproviders" : [{
- "name": "fileSystemPreferences",
- "type": "FileSystemPreferences",
- "path" : "${qpid.work_dir}${file.separator}user.preferences.json"
- }]
- } ],
- "ports" : [ {
- "name" : "AMQP",
- "port" : "${qpid.amqp_port}",
- "authenticationProvider" : "passwordFile"
- }, {
- "name" : "HTTP",
- "port" : "${qpid.http_port}",
- "authenticationProvider" : "passwordFile",
- "protocols" : [ "HTTP" ]
- }, {
- "name" : "RMI_REGISTRY",
- "port" : "${qpid.rmi_port}",
- "protocols" : [ "RMI" ]
- }, {
- "name" : "JMX_CONNECTOR",
- "port" : "${qpid.jmx_port}",
- "authenticationProvider" : "passwordFile",
- "protocols" : [ "JMX_RMI" ]
- }],
- "virtualhostnodes" : [ {
- "name" : "default",
- "type" : "JSON",
- "virtualHostInitialConfiguration" : "{ \"type\" : \"DERBY\" }"
- } ],
- "plugins" : [ {
- "type" : "MANAGEMENT-HTTP",
- "name" : "httpManagement"
- }, {
- "type" : "MANAGEMENT-JMX",
- "name" : "jmxManagement"
- } ]
-}
-]]></programlisting>
- <para>In the configuration above the following entries are stored: <itemizedlist>
- <listitem>
- <para> Authentication Provider of type
- <emphasis>PlainPasswordFile</emphasis> with name "passwordFile".
- </para>
- </listitem>
- <listitem>
- <para> Four Port entries: "AMQP", "HTTP", "RMI_REGISTRY", "JMX_CONNECTOR".
- </para>
- </listitem>
- <listitem>
- <para> Virtualhost Node called default. On initial startup, it
- virtualHostInitialConfiguration will cause a virtualhost to be created
- with the same name. The configuration will be stored in a
- <emphasis>JSON</emphasis> configuration store, the message data will
- be stored in a <emphasis>DERBY</emphasis> message store.</para>
- </listitem>
- <listitem>
- <para>Two management plugins: "jmxManagement" of type "MANAGEMENT-JMX" and
- "httpManagement" of type "MANAGEMENT-HTTP".</para>
- </listitem>
- <listitem>
- <para>Broker attributes are stored as a root entry.</para>
- </listitem>
- </itemizedlist>
- </para>
- </example>
- </section>
-
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Installation.xml b/qpid/doc/book/src/java-broker/Java-Broker-Installation.xml
deleted file mode 100644
index 5a8b8d910c..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Installation.xml
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Installation">
- <title>Installation</title>
- <section role="h2" id="Java-Broker-Installation-Introduction">
- <title>Introduction</title>
- <para>This document describes how to install the Java Broker on both Windows and UNIX
- platforms.</para>
- </section>
- <section role="h2" id="Java-Broker-Installation-Prerequistes">
- <title>Prerequisites</title>
- <section role="h3" id="Java-Broker-Installation-Prerequistes-Java">
- <title>Java Platform</title>
- <para> The Java Broker is an 100% Java implementation and as such it can be used on any
- operating system supporting Java 1.7 or higher<footnote><para>Java Cryptography Extension (JCE)
- Unlimited Strength required for some features</para></footnote>. This includes Linux, Solaris, Mac OS X, and
- Windows XP/Vista/7/8.</para>
- <para> The broker has been tested with Java implementations from both Oracle and IBM. Whatever
- platform you chose, it is recommended that you ensure it is patched with any critical
- updates made available from the vendor. </para>
- <para> Verify that your JVM is installed properly by following <link
- linkend="Java-Broker-Miscellaneous-JVM-Verification">these instructions.</link>
- </para>
- </section>
- <section role="h3" id="Java-Broker-Installation-Prerequistes-Disk">
- <title>Disk</title>
- <para>The Java Broker installation requires approximately 20MB of free disk space.</para>
- <para>The Java Broker also requires a working directory. The working directory is used for the
- message store, that is, the area of the file-system used to record persistent messages
- whilst they are passing through the Broker. The working directory is also used for the
- default location of the log file. The size of the working directory will depend on the how
- the Broker is used.</para>
- <para>The performance of the file system hosting the work directory is key to the performance
- of Broker as a whole. For best performance, choose a device that has low latency and one
- that is uncontended by other applications.</para>
- <para>Be aware that there are additional considerations if you are considering hosting the
- working directory on NFS.</para>
- </section>
- <section role="h3" id="Java-Broker-Installation-Prerequistes-Memory">
- <title>Memory</title>
- <para>Qpid caches messages on the heap for performance reasons, so in general, the Broker will
- benefit from as much heap as possible. However, on a 32bit JVM, the maximum addressable
- memory range for a process is 4GB, after leaving space for the JVM's own use this will give
- a maximum heap size of approximately ~3.7GB.</para>
- </section>
- <section role="h3" id="Java-Broker-Installation-Prerequistes-OperatingSystemAccount">
- <title>Operating System Account</title>
- <para>Installation or operation of Qpid does <emphasis>not</emphasis> require a privileged
- account (i.e. root on UNIX platforms or Administrator on Windows). However it is suggested
- that you use an dedicated account (e.g. qpid) for the installation and operation of the Java
- Broker.</para>
- </section>
- </section>
-
- <section role="h2" id="Java-Broker-Installation-Download">
- <title>Download</title>
- <section role="h3" id="Java-Broker-Installation-Download-Release">
- <title>Broker Release</title>
- <para>You can download the latest Java broker package from the <ulink url="&qpidDownloadUrl;"
- >Download Page</ulink>. </para>
- <para> It is recommended that you confirm the integrity of the download by verifying the PGP
- signature matches that available on the site. Instructions are given on the download page.
- </para>
- </section>
- </section>
-
- <section role="h2" id="Java-Broker-Installation-InstallationWindows">
- <title>Installation on Windows</title>
- <para> Firstly, verify that your JVM is installed properly by following <link
- linkend="Java-Broker-Miscellaneous-JVM-Verification-Windows">these instructions.</link>
- </para>
- <para>Now chose a directory for Qpid broker installation. This directory will be used for the
- Qpid JARs and configuration files. It need not be the same location as the work directory used
- for the persistent message store or the log file (you will choose this location later). For
- the remainder this example we will assume that location c:\qpid has been chosen.</para>
- <para>Next extract the &windowsBrokerDownloadFileName; package into the directory, using either
- the zip file handling offered by Windows (right click the file and select 'Extract All') or a
- third party tool of your choice.</para>
- <para>The extraction of the broker package will have created a directory
- &windowsExtractedBrokerDirName; within c:\qpid</para>
- <screen>
- Directory of c:\qpid\&windowsExtractedBrokerDirName;
-
-07/25/2012 11:22 PM .
-09/30/2012 10:51 AM ..
-09/30/2012 12:24 AM bin
-08/21/2012 11:17 PM etc
-07/25/2012 11:22 PM lib
-07/20/2012 08:10 PM 65,925 LICENSE
-07/20/2012 08:10 PM 3,858 NOTICE
-07/20/2012 08:10 PM 1,346 README.txt
-</screen>
- <section role="h3" id="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK">
- <title>Setting the working directory</title>
- <para>Qpid requires a work directory. This directory is used for the default location of the
- Qpid log file and is used for the storage of persistent messages. The work directory can be
- set on the command-line (for the lifetime of the command interpreter), but you will normally
- want to set the environment variable permanently via the Advanced System Settings in the
- Control Panel.</para>
- <screen>set QPID_WORK=C:\qpidwork</screen>
- <para>If the directory referred to by <link
- linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Work">QPID_WORK</link> does not
- exist, the Java Broker will attempt to create it on start-up.</para>
- </section>
- </section>
-
- <section role="h2" id="Java-Broker-Installation-InstallationUnix">
- <title>Installation on UNIX platforms</title>
- <para> Firstly, verify that your JVM is installed properly by following <link
- linkend="Java-Broker-Miscellaneous-JVM-Verification-Unix">these instructions.</link>
- </para>
- <para>Now chose a directory for Qpid broker installation. This directory will be used for the
- Qpid JARs and configuration files. It need not be the same location as the work directory used
- for the persistent message store or the log file (you will choose this location later). For
- the remainder this example we will assume that location /usr/local/qpid has been
- chosen.</para>
- <para>Next extract the &unixBrokerDownloadFileName; package into the directory.</para>
- <programlisting>mkdir /usr/local/qpid
-cd /usr/local/qpid
-tar xvzf &unixBrokerDownloadFileName;</programlisting>
- <para>The extraction of the broker package will have created a directory
- &unixExtractedBrokerDirName; within /usr/local/qpid</para>
- <screen>ls -la &unixExtractedBrokerDirName;/
-total 152
-drwxr-xr-x 8 qpid qpid 272 25 Jul 23:22 .
-drwxr-xr-x 45 qpid qpid 1530 30 Sep 10:51 ..
--rw-r--r--@ 1 qpid qpid 65925 20 Jul 20:10 LICENSE
--rw-r--r--@ 1 qpid qpid 3858 20 Jul 20:10 NOTICE
--rw-r--r--@ 1 qpid qpid 1346 20 Jul 20:10 README.txt
-drwxr-xr-x 10 qpid qpid 340 30 Sep 00:24 bin
-drwxr-xr-x 9 qpid qpid 306 21 Aug 23:17 etc
-drwxr-xr-x 34 qpid qpid 1156 25 Jul 23:22 lib
- </screen>
- <section role="h3" id="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK">
- <title>Setting the working directory</title>
- <para>Qpid requires a work directory. This directory is used for the default location of the
- Qpid log file and is used for the storage of persistent messages. The work directory can be
- set on the command-line (for the lifetime of the current shell), but you will normally want
- to set the environment variable permanently the user's shell profile file (~/.bash_profile
- for Bash etc).</para>
- <screen><![CDATA[export QPID_WORK=/var/qpidwork]]>
- </screen>
- <para>If the directory referred to by <link
- linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Work">QPID_WORK</link> does not
- exist, the Java Broker will attempt to create it on start-up. </para>
- </section>
- </section>
- <section role="h2" id="Java-Broker-Installation-OptionalDependencies">
- <title>Optional Dependencies</title>
- <para>If you wish to utilise storage options using Oracle BDB JE or an External Database, see
- <xref linkend="Java-Broker-Miscellaneous-Installing-Oracle-BDB-JE"/> and <xref
- linkend="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"/> for details of
- installing their dependencies.</para>
- </section>
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Introduction.xml b/qpid/doc/book/src/java-broker/Java-Broker-Introduction.xml
deleted file mode 100644
index 1eb33d810e..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Introduction.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE chapter[
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Introduction">
- <title>Introduction</title>
- <para>The Java Broker is a powerful open-source message broker that implements all versions of the
- <ulink url="http://www.amqp.org"> Advanced Message Queuing Protocol (AMQP)</ulink>. The Java
- Broker is actually one of two message brokers provided by the <ulink
- url="http://qpid.apache.org">Apache Qpid project</ulink>: the Java Broker and the C++
- Broker.</para>
- <para>This document relates to the Java Broker. The <ulink url="&qpidCppBook;">C++ Broker is
- described separately</ulink>.</para>
- <para><emphasis>Headline features</emphasis></para>
- <itemizedlist mark="circle">
- <listitem>
- <para>100% Java implementation - runs on any platform supporting Java 1.7 or higher</para>
- </listitem>
- <listitem>
- <para>Messaging clients support in Java, C++, Python.</para>
- </listitem>
- <listitem>
- <para>JMS 1.1 compliance (Java client).</para>
- </listitem>
- <listitem>
- <para>Persistent and non-persistent (transient) message support</para>
- </listitem>
- <listitem>
- <para>Supports for all common messaging patterns (point-to-point, publish/subscribe, fan-out
- etc).</para>
- </listitem>
- <listitem>
- <para>Transaction support including XA<footnote>
- <para>XA provided when using AMQP 0-10</para>
- </footnote></para>
- </listitem>
- <listitem>
- <para>Supports for all versions of the AMQP protocol</para>
- </listitem>
- <listitem>
- <para>Automatic message translation, allowing clients using different AMQP versions to communicate with each other.</para>
- </listitem>
- <listitem>
- <para>Pluggable authentication architecture with out-of-the-box support for Kerberos, LDAP,
- External, and file-based authentication mechanisms.</para>
- </listitem>
- <listitem>
- <para>Pluggable storage architecture with implementations including <ulink
- url="http://db.apache.org/derby/">Apache Derby</ulink>, <ulink
- url="&oracleBdbProductOverviewUrl;">Oracle BDB JE</ulink><footnote>
- <para>Oracle BDB JE must be downloaded separately.</para>
- </footnote>, and External Database</para>
- </listitem>
- <listitem>
- <para>Web based management interface and programmatic management interfaces via REST and JMX
- APIs.</para>
- </listitem>
- <listitem>
- <para>SSL support</para>
- </listitem>
- <listitem>
- <para>High availability (HA) support.<footnote>
- <para>HA currently only available to users of the optional BDB JE HA based message store.</para>
- </footnote></para>
- </listitem>
- </itemizedlist>
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Management-Channels.xml b/qpid/doc/book/src/java-broker/Java-Broker-Management-Channels.xml
deleted file mode 100644
index 3a71f8c366..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Management-Channels.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Management-Channel">
- <title>Management Channels</title>
- <para>The Broker can be managed over a number of different channels.</para>
- <itemizedlist>
- <listitem>
- <para>HTTP - The primary channel for management. The HTTP interface comprises of a Web
- Console and a REST API.</para>
- </listitem>
- <listitem>
- <para>JMX - The Broker provides a JMX compliant management interface. This is not currently
- undergoing further development and is retained largely for backward compatibility. It is
- suggested the new users favour the Web Console/REST API.</para>
- </listitem>
- <listitem>
- <para>AMQP - The AMQP protocols 0-8..0-10 allow for some management of Exchanges, Queue and
- Bindings. This will be superseded by AMQP 1.0 Management. It is suggested that new users
- favour the Management facilities provided by the Web Console/REST API.</para>
- </listitem>
- </itemizedlist>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/channels/Java-Broker-Management-Channel-HTTP.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/channels/Java-Broker-Management-Channel-Web-Console.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/channels/Java-Broker-Management-Channel-REST-API.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/channels/Java-Broker-Management-Channel-JMX.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/channels/Java-Broker-Management-Channel-AMQP-Intrinsic.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="management/channels/Java-Broker-Management-Channel-QMF.xml"/>
-</chapter>
-
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Management-Managing-Entities.xml b/qpid/doc/book/src/java-broker/Java-Broker-Management-Managing-Entities.xml
deleted file mode 100644
index 6a6fe11296..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Management-Managing-Entities.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
-[
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]><!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Management-Managing-Entities">
- <title>Managing Entities</title>
- <para>This section describes how to manage entities within the Broker. The principles underlying
- entity management are the same regardless of entity type. For this reason, this section begins
- with a general description that applies to all.</para>
- <para>Since not all channels support the management of all entity type, this section commences
- with a table showing which entity type is supported by each channel.</para>
-
- <section id="Java-Broker-Management-Managing-Entities-General">
- <title>General Description</title>
- <para>The following description applies to all entities within the Broker regardless of their
- type.</para>
- <para>
- <itemizedlist>
- <listitem>
- <para>All entities have a parent, and may have children. The parent of the Broker is
- called the System Context. It has no parent.</para>
- </listitem>
- <listitem>
- <para>Entities have one or more attributes. For example a <literal>name</literal>, an
- <literal>id</literal> or a <literal>maximumQueueDepth</literal></para>
- </listitem>
- <listitem>
- <para>Entities can be durable or non-durable. Durable entities survive a restart.
- Non-durable entities will not.</para>
- </listitem>
- <listitem>
- <para>Attributes may have a default value. If an attribute value is not specified the
- default value is used.</para>
- </listitem>
- <listitem>
- <para>Attributes values can be expressed as a simple value (e.g. <literal>myName</literal>
- or <literal>1234</literal>), in terms of context variables
- (e.g.<literal>${foo}</literal> or <literal>/data/${foo}/</literal>).</para>
- </listitem>
- <listitem>
- <para>Each entity has zero or more context variables.</para>
- </listitem>
- <listitem>
- <para>The System Context entity (the ultimate ancestor of all object) has a context too.
- It is read only and is populated with all Java System Properties. Thus it can be
- influenced from the Broker's external environment. See <link
- linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Opts">QPID_OPTS </link>
- environment variable.</para>
- </listitem>
- <listitem>
- <para>When resolving an attribute's value, if the value contains a variable
- (e.g.<literal>${foo}</literal>), the variable is first resolved using the entity's own
- context variables. If the entity has no definition for the context variable, the
- entity's parent is tried, then its grandparent and so forth, all the way until the
- SystemContext is reached.</para>
- </listitem>
- <listitem>
- <para>Some entities support state and have a lifecycle.</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>What follows now is a section dedicated to each entity type. For each entity type key
- features are described along with the entities key attributes, key context variables, details
- of the entities lifecycle and any other operations.</para>
- </section>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Entities-Matrix.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Broker.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-VirtualhostNodes.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Virtualhosts.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-RemoteReplicationNodes.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Exchanges.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Queues.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Ports.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Authentication-Providers.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Keystores.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Truststores.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Group-Providers.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Access-Control-Providers.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Plugins-HTTP.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="management/managing/Java-Broker-Management-Managing-Plugins-JMX.xml"/>
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Background-Recovery.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Background-Recovery.xml
deleted file mode 100644
index 99f05c4544..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Background-Recovery.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Runtime-Background-Recovery">
- <title>Background Recovery</title>
- <para>On startup of the Broker, or restart of a Virtualhost, the Broker restores all durable
- queues and their messages from disk. In the Broker's default mode the Virtualhosts do not become
- active until this recovery process completes. If queues have a large number of entries, this may
- take considerable time. During this time no messaging can be performed.</para>
- <para>The Broker has a background recovery feature allows the system to return to operation
- sooner. If enabled the recovery process takes place in the background allow producers and
- consumers to begin work earlier.</para>
- <para>The feature respects the message delivery order requirements of standard queues, that is any
- messages arriving whilst the background recovery is in flight won't overtake older messages
- still to be recovered from disk. There is an exception for the out of order queue types whilst
- background recovery is in flight. For instance, with priority queues older lower priority
- messages may be delivered before newer, higher priority.</para>
- <para>To activate the feature, set a <link
- linkend="Java-Broker-Management-Managing-Entities-General">context variable</link>
- <literal>use_async_message_store_recovery</literal> at the desired Virtualhost, or at Broker or
- higher to enable the feature broker-wide.</para>
- <note>
- <para>The background recovery feature does not write operational log messages to indicate its
- progress. This means messages <link
- linkend="Java-Broker-Appendix-Operation-Logging-Message-MST-1004">MST-1004</link> and <link
- linkend="Java-Broker-Appendix-Operation-Logging-Message-MST-1005">MST-1005</link> will not
- be seen.</para>
- </note>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Connection-Limit.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Connection-Limit.xml
deleted file mode 100644
index 06cf6a6631..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Connection-Limit.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Runtime-Connection-Limit">
- <title>Connection Limits</title>
- <para>
- Each connection to the Broker consumes resources while it is connected. In order to protect
- the Broker against malfunctioning (or malicious) client processes, it is possible to limit the
- number of connections that can be active on any given port.
- </para>
- <para>
- Connection limits on AMQP ports are controlled by an attribute "maxOpenConnections" on
- the port. By default this takes the value of the context variable
- <literal>qpid.port.max_open_connections</literal> which in itself is defaulted to the
- value <literal>-1</literal> meaning there is no limit.
- </para>
- <para>
- If the interpolated value of <literal>maxOpenConnections</literal> on an AMQP port is a
- positive integer, then when that many active connections have been established no new
- connections will be allowed (until an existing connection has been closed). Any such
- rejection of a connection will be accompanied by the operational log message
- <link linkend="Java-Broker-Appendix-Operation-Logging-Message-PRT-1005">PRT-1005</link>.
- </para>
- <para>
- The context variable <literal>qpid.port.open_connections_warn_percent</literal> can be
- used to control when a warning log message is generated as the number of open connections
- approaches the limit for the port. The default value of this variable is
- <literal>80</literal> meaning that if more the number of open connections to the port
- has exceeded 80% of the given limit then the operatinal log message
- <link linkend="Java-Broker-Appendix-Operation-Logging-Message-PRT-1004">PRT-1004</link>
- will be generated.
- </para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control.xml
deleted file mode 100644
index 8de3f7f0d3..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control.xml
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Qpid-Producer-Flow-Control">
- <title>Producer Flow Control</title>
-
- <section role="h2" id="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control-GeneralInformation">
- <title>General Information</title>
- <para>
- The Java Broker supports a flow control mechanism to which can be used to prevent either a single queue
- or an entire virtualhost exceeding configured limits. These two mechanisms are described
- next.
- </para>
- </section>
- <section role="h2" id="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control-ServerConfiguration">
- <title>Server Configuration</title>
- <section role="h3">
- <title>Configuring a Queue to use flow control</title>
- <para>
- Flow control is enabled on a producer when it sends a message to a Queue
- which is "overfull". The producer flow control will be rescinded when all
- Queues on which a producer is blocking become "underfull". A Queue is defined
- as overfull when the size (in bytes) of the messages on the queue exceeds the
- <emphasis>capacity</emphasis> of the Queue. A Queue becomes "underfull" when its
- size becomes less than the <emphasis>resume capacity</emphasis>.
- </para>
- <para>
- The capacity and resume capacity can be specified when the queue is created. This
- can be done using the Flow Control Settings within the Queue creation dialogue.
- </para>
- <section role="h4">
- <title>Broker Log Messages</title>
- <para>
- There are four Broker log messages that may occur if flow control through queue capacity limits is enabled.
- Firstly, when a capacity limited queue becomes overfull, a log message similar to the following is produced
- </para>
- <programlisting>
-MESSAGE [vh(/test)/qu(MyQueue)] [vh(/test)/qu(MyQueue)] QUE-1003 : Overfull : Size : 1,200 bytes, Capacity : 1,000
- </programlisting>
- <para>Then for each channel which becomes blocked upon the overful queue a log message similar to the following is produced:</para>
- <programlisting>
-MESSAGE [con:2(guest@anonymous(713889609)/test)/ch:1] [con:2(guest@anonymous(713889609)/test)/ch:1] CHN-1005 : Flow Control Enforced (Queue MyQueue)
- </programlisting>
- <para>When enough messages have been consumed from the queue that it becomes underfull, then the following log is generated: </para>
- <programlisting>
-MESSAGE [vh(/test)/qu(MyQueue)] [vh(/test)/qu(MyQueue)] QUE-1004 : Underfull : Size : 600 bytes, Resume Capacity : 800
- </programlisting>
- <para>And for every channel which becomes unblocked you will see a message similar to: </para>
- <programlisting>
-MESSAGE [con:2(guest@anonymous(713889609)/test)/ch:1] [con:2(guest@anonymous(713889609)/test)/ch:1] CHN-1006 : Flow Control Removed
- </programlisting>
- <para>Obviously the details of connection, virtual host, queue, size, capacity, etc would depend on the configuration in use.</para>
-
-
- </section><!-- Broker Log Messages -->
- </section><!-- Configuring a Queue to use flow control -->
-
- <section role="h3">
- <title>Disk quota-based flow control</title>
- <para>
- Flow control can also be triggered when a configured disk quota is exceeded. This is supported by the BDB and
- Derby virtualhosts.
- </para>
- <para>
- This functionality blocks all producers on reaching the disk overflow limit. When consumers
- consume the messages, causing disk space usage to falls below the underflow limit, the
- producers are unblocked and continue working as normal.
- </para>
- <para>
- Two limits can be configured:
- </para>
- <para>
- overfull limit - the maximum space on disk (in bytes).
- </para>
- <para>
- underfull limit - when the space on disk drops below this limit, producers are allowed to resume publishing.
- </para>
-
- <para>
- The overfull and underful limit can be specified when a new virtualhost is created or an exiting
- virtualhost is edited. This can be done using the Store Overflow and Store Underfull settings
- within the virtual host creation and edit dialogue. If editing an existing virtualhost, the virtualhost
- must be restarted for the new values to take effect.
- </para>
-
- <para>
- The disk quota functionality is based on "best effort" principle. This means the broker
- cannot guarantee that the disk space limit will not be exceeded. If several concurrent
- transactions are started before the limit is reached, which collectively cause the limit
- to be exceeded, the broker may allow all of them to be committed.
- </para>
-
- <section role="h4">
- <title>Broker Log Messages for quota flow control</title>
- <para>
- There are two broker log messages that may occur if flow control through disk quota limits is enabled.
- When the virtual host is blocked due to exceeding of the disk quota limit the following message
- appears in the broker log
- <programlisting>
-[vh(/test)/ms(BDBMessageStore)] MST-1008 : Store overfull, flow control will be enforced
- </programlisting>
- When virtual host is unblocked after cleaning the disk space the following message appears in the broker log
- <programlisting>
-[vh(/test)/ms(BDBMessageStore)] MST-1009 : Store overfull condition cleared
- </programlisting>
- </para>
- </section>
- </section><!-- Disk quota-based flow control -->
- </section><!-- Server configuration -->
-
-
- <section role="h2" id="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control-ClientImpact">
- <title>Client impact and configuration</title>
- <para>
- If a producer sends to a queue which is overfull, the broker will respond by
- instructing the client not to send any more messages. The impact of this is
- that any future attempts to send will block until the broker rescinds the flow control order.
- </para>
- <para>
- While blocking the client will periodically log the fact that it is blocked waiting on flow control.
- </para>
- <programlisting>
-WARN Message send delayed by 5s due to broker enforced flow control
-WARN Message send delayed by 10s due to broker enforced flow control
- </programlisting>
- <para>
- After a set period the send will timeout and throw a JMSException to the calling code.
- </para>
- <para>
- If such a JMSException is thrown, the message will not be sent to the broker,
- however the underlying Session may still be active - in particular if the
- Session is transactional then the current transaction will not be automatically
- rolled back. Users may choose to either attempt to resend the message, or to
- roll back any transactional work and close the Session.
- </para>
- <para>
- Both the timeout delay and the periodicity of the warning messages can be set
- using Java system properties.
- </para>
- <para>
- The amount of time (in milliseconds) to wait before timing out
- is controlled by the property qpid.flow_control_wait_failure.
- </para>
- <para>
- The frequency at which the log message informing that the producer is flow
- controlled is sent is controlled by the system property qpid.flow_control_wait_notify_period.
- </para>
- <para>
- Adding the following to the command line to start the client would result in a timeout of one minute,
- with warning messages every ten seconds:
- </para>
- <programlisting>
--Dqpid.flow_control_wait_failure=60000
--Dqpid.flow_control_wait_notify_period=10000
- </programlisting>
- </section> <!-- Client impact and configuration -->
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management.xml
deleted file mode 100644
index 814b366d9d..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Runtime-Disk-Space-Management">
- <title>Disk Space Management</title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control.xml"/>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Flow-To-Disk.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Flow-To-Disk.xml
deleted file mode 100644
index 4ffde911bf..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Flow-To-Disk.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Runtime-Flow-To-Disk">
- <title>Flow to Disk</title>
- <para>Flow to disk limits the amount of heap memory that can be occupied by messages. Once this
- limit is reached any new transient messages and all existing transient messages will be
- transferred to disk. Newly arriving transient messages will continue to go to the disk until the
- cumulative size of all messages falls below the limit once again.</para>
- <para>By default the Broker makes 40% of the max available memory for messages. This memory is
- divided between all the queues across all virtual hosts defined on the Broker with a percentage
- calculated according to their current queue size. These calculations are refreshed periodically
- by the housekeeping cycle.</para>
- <para>For example if there are two queues, one containing 75MB and the second 100MB messages
- respectively and the Broker has 1GB heap memory with the default of 40% available for messages.
- The first queue will have a target size of 170MB and the second 230MB. Once 400MB is taken by
- messages, messages will begin to flow to disk. New messages will cease to flow to disk when
- their cumulative size falls beneath 400MB.</para>
- <para>Flow to disk is configured by Broker context variable
- <literal>broker.flowToDiskThreshold</literal>. It is expressed as a size in bytes and defaults
- to 40% of the JVM maximum heap size.</para>
- <para>Log message <link linkend="Java-Broker-Appendix-Operation-Logging-Message-BRK-1014"
- >BRK-1014</link> is written when the feature activates. Once the total space of all messages
- decreases below the threshold, the message <link
- linkend="Java-Broker-Appendix-Operation-Logging-Message-BRK-1015">BRK-1015</link> is written
- to show that the feature is no longer active.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Handling-Undeliverable-Messages.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Handling-Undeliverable-Messages.xml
deleted file mode 100644
index fe42cf0203..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Handling-Undeliverable-Messages.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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 id="Java-Broker-Runtime-Handling-Undeliverable-Messages">
- <title>Handing Undeliverable Messages</title>
-
- <section role="h2" id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Introduction">
- <title>Introduction</title>
- <para> Messages that cannot be delivered successfully to a consumer (for instance, because the
- client is using a transacted session and rolls-back the transaction) can be made available on
- the queue again and then subsequently be redelivered, depending on the precise session
- acknowledgement mode and messaging model used by the application. This is normally desirable
- behaviour that contributes to the ability of a system to withstand unexpected errors. However, it
- leaves open the possibility for a message to be repeatedly redelivered (potentially indefinitely),
- consuming system resources and preventing the delivery of other messages. Such undeliverable
- messages are sometimes known as poison messages.</para>
- <para>For an example, consider a stock ticker application that has been designed to consume prices
- contained within JMS TextMessages. What if inadvertently a BytesMessage is placed onto the queue?
- As the ticker application does not expect the BytesMessage, its processing might fail and cause it
- to roll-back the transaction, however the default behavior of the Broker would mean that the
- BytesMessage would be delivered over and over again, preventing the delivery of other legitimate
- messages, until an operator intervenes and removes the erroneous message from the queue. </para>
- <para>Qpid has maximum delivery count and dead-letter queue (DLQ) features which can be used in
- concert to construct a system that automatically handles such a condition. These features are
- described in the following sections.</para>
- </section>
-
- <section role="h2" id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count">
- <title>Maximum Delivery Count</title>
- <para> Maximum delivery count is a property of a queue. If a consumer application is unable to
- process a message more than the specified number of times, then the broker will either route the
- message to a dead-letter queue (if one has been defined), or will discard the message. </para>
- <para> In order for a maximum delivery count to be enforced, the consuming client
- <emphasis>must</emphasis> call <ulink url="&oracleJeeDocUrl;javax/jms/Session.html#rollback()"
- >Session#rollback()</ulink> (or <ulink url="&oracleJeeDocUrl;javax/jms/Session.html#recover()"
- >Session#recover()</ulink> if the session is not transacted). It is during the Broker's
- processing of Session#rollback() (or Session#recover()) that if a message has been seen
- at least the maximum number of times then it will move the message to the DLQ or discard the
- message.</para>
- <para>If the consuming client fails in another manner, for instance, closes the connection, the
- message will not be re-routed and consumer application will see the same poison message again
- once it reconnects.</para>
- <para> If the consuming application is using AMQP 0-9-1, 0-9, or 0-8 protocols, it is necessary to
- set the client system property <varname>qpid.reject.behaviour</varname> or connection or binding
- URL option <varname>rejectbehaviour</varname> to the value <literal>server</literal>.</para>
- <para>It is possible to determine the number of times a message has been sent to a consumer via
- the Management interfaces, but is not possible to determine this information from a message client.
- Specifically, the optional JMS message header <property>JMSXDeliveryCount</property> is not
- supported.</para>
- <para>Maximum Delivery Count can be specified when a new queue is created or using the the
- queue declare property <property>x-qpid-maximum-delivery-count</property></para>
- </section>
-
- <section role="h2" id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues">
- <title>Dead Letter Queues (DLQ)</title>
- <para>A Dead Letter Queue (DLQ) acts as an destination for messages that have somehow exceeded the
- normal bounds of processing and is utilised to prevent disruption to flow of other messages. When
- a DLQ is enabled for a given queue if a consuming client indicates it no longer wishes the
- receive the message (typically by exceeding a Maximum Delivery Count) then the message is moved
- onto the DLQ and removed from the original queue. </para>
- <para>The DLQ feature causes generation of a Dead Letter Exchange and a Dead Letter Queue. These
- are named convention QueueName<emphasis>_DLE</emphasis> and QueueName<emphasis>_DLQ</emphasis>.</para>
- <para>DLQs can be enabled when a new queue is created
- or using the queue declare property <property>x-qpid-dlq-enabled</property>.</para>
- <caution>
- <title>Avoid excessive queue depth</title>
- <para>Applications making use of DLQs <emphasis>should</emphasis> make provision for the frequent
- examination of messages arriving on DLQs so that both corrective actions can be taken to resolve
- the underlying cause and organise for their timely removal from the DLQ. Messages on DLQs
- consume system resources in the same manner as messages on normal queues so excessive queue
- depths should not be permitted to develop.</para>
- </caution>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Log-Files.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Log-Files.xml
deleted file mode 100644
index 1fde82656d..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Log-Files.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Runtime-Log-Files">
- <title>Log Files</title>
- <para> The Broker uses the <ulink url="http://logging.apache.org/log4j/1.2/">Apache Log4J</ulink>
- Logging Framework for all logging activity. </para>
- <para> In the Broker's shipped configuration, all logging is directed to log file <literal><link
- linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Work"
- >${QPID_WORK}</link>/log/qpid.log</literal>. The log file is not rotated and will be overwritten
- when the Broker restarts. Logging levels are configured in such a way that the log will comprise
- of:</para>
- <itemizedlist>
- <listitem>
- <para>Opertional Log Events. These report key events in the lifecycle of objects (Broker
- start-up, Queue creation, Queue deletion etc) within the Broker. See <xref
- linkend="Java-Broker-Appendix-Operation-Logging"/> for details of the formation of these
- messages.</para>
- </listitem>
- <listitem>
- <para>Queue Alert Events. These report when the queue thresholds have been breached. See <xref
- linkend="Java-Broker-Appendix-Queue-Alerts"/> for details.</para>
- </listitem>
- <listitem>
- <para>Any Error and Warning conditions.</para>
- </listitem>
- </itemizedlist>
- <para>Logging can be reconfigured either by changing the logging configuration file <literal><link
- linkend="Java-Broker-Appendix-Environment-Variables-Qpid-Home"
- >${QPID_HOME}</link>/etc/log4j.xml</literal> or at runtime using the Logging Management MBean,
- see <xref linkend="Java-Broker-Management-Channel-JMX-MBeans"/> for
- details.</para>
- <section id="Java-Broker-Runtime-Log-Files-Enable-Debug">
- <title>Enabling Debug</title>
- <para>It can be helpful to enable debug within the Broker in order to understand a problem more
- clearly. If this is required, debug can be enabled at runtime (without restarting the Broker)
- using the Logging Management MBean. The change can also be made by changing the log configuration
- file and restarting the Broker. Whichever mechanism is chosen, change the appender associated
- with <literal>org.apache.qpid</literal> from <literal>WARN</literal> to
- <literal>DEBUG</literal>.</para>
- <example>
- <title>Changing the log4j.xml configuration file to enable debug</title>
- <screen><![CDATA[
-...
-<logger additivity="true" name="org.apache.qpid">
- <level value="debug"/> <!-- change the level value from warn to debug -->
-</logger>
-...]]></screen>
- </example>
- <important>
- <para>Running a production system at <literal>DEBUG</literal> level can have performance
- implications by slowing the Broker down. It can also generate large log files. Take care to
- revert the logging level back to <literal>WARN</literal> after the analysis is performed.</para>
- </important>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Message-Compression.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Message-Compression.xml
deleted file mode 100644
index ee080f85cf..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Message-Compression.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Runtime-Message-Compression">
- <title>Message Compression</title>
- <para>The Java Broker supports<footnote><para>Message compression is not yet supported for the 1.0
- protocol.</para></footnote> message compression. This feature works in co-operation with Qpid
- Clients implementing the same feature.</para>
- <para>Once the feature is enabled (using Broker context variable
- <emphasis>broker.messageCompressionEnabled</emphasis>), the Broker will advertise support for the
- message compression feature to the client at connection time. This allows clients to opt to turn
- on message compression, allowing message payload sizes to be reduced.</para>
- <para>If the Broker has connections from clients who have message compression enabled and others who
- do not, it will internally, on-the-fly, decompress compressed messages when sending to clients
- without support and conversely, compress uncomressed messages when sending to clients who do.</para>
- <para>The Broker has a threshold below which it will not consider compressing a message, this is
- controlled by Broker content variable
- (<literal>connection.messageCompressionThresholdSize</literal>) and expresses a size in bytes.</para>
- <para>This feature <emphasis>may</emphasis> have a beneficial effect on performance by:</para>
- <itemizedlist>
- <listitem>
- <para>Reducing the number of bytes transmitted over the wire, both between Client and Broker, and
- in the HA case, Broker to Broker, for replication purposes.</para>
- </listitem>
- <listitem>
- <para>Reducing storage space when data is at rest within the Broker, both on disk and in
- memory.</para>
- </listitem>
- </itemizedlist>
- <para>Of course, compression and decompression is computationally expensive. Turning on the feature
- may have a negative impact on CPU utilization on Broker and/or Client. Also for small messages
- payloads, message compression may increase the message size. It is recommended to test the feature
- with representative data.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Producer-Transaction-Timeout.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Producer-Transaction-Timeout.xml
deleted file mode 100644
index 2813274c61..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime-Producer-Transaction-Timeout.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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 id="Java-Broker-Runtime-Producer-Transaction-Timeout">
- <title>Producer Transaction Timeout</title>
- <section role="h2" id="Java-Broker-Runtime-Producer-Transaction-Timeout-GeneralInformation">
- <title>General Information</title>
- <para> The transaction timeout mechanism is used to control broker resources when clients
- producing messages using transactional sessions hang or otherwise become unresponsive, or simply
- begin a transaction and keep using it without ever calling <ulink
- url="&oracleJeeDocUrl;javax/jms/Session.html#commit">Session#commit()</ulink>.</para>
- <para>Users can choose to configure an idleWarn or openWarn threshold, after which the identified
- transaction should be logged as a WARN level alert as well as (more importantly) an idleClose or
- openClose threshold after which the transaction and the connection it applies to will be
- closed.</para>
- <para>This feature is particularly useful in environments where the owner of the broker does not
- have full control over the implementation of clients, such as in a shared services
- deployment.</para>
- <para>The following section provide more details on this feature and its use.</para>
- </section>
- <section role="h2" id="Java-Broker-Runtime-Producer-Transaction-Timeout-Purpose">
- <title>Purpose</title>
- <para> This feature has been introduced to address the scenario where an open transaction on the
- broker holds an open transaction on the persistent store. This can have undesirable consequences
- if the store does not time out or close long-running transactions, such as with BDB. This can can
- result in a rapid increase in disk usage size, bounded only by available space, due to growth of
- the transaction log. </para>
- </section>
- <section role="h2" id="Java-Broker-Runtime-Producer-Transaction-Timeout-Scope">
- <title>Scope</title>
- <para>Note that only <ulink url="&oracleJeeDocUrl;javax/jms/MessageProducer.html"
- >MessageProducer</ulink> clients will be affected by a transaction timeout, since store
- transaction lifespan on a consumer only spans the execution of the call to Session#commit() and
- there is no scope for a long-lived transaction to arise.</para>
- <para>It is also important to note that the transaction timeout mechanism is purely a JMS
- transaction timeout, and unrelated to any other timeouts in the Qpid client library and will have
- no impact on any RDBMS your application may utilise.</para>
- </section>
- <section role="h2" id="Java-Broker-Runtime-Producer-Transaction-Timeout-Effect">
- <title>Effect</title>
- <para>Full details of configuration options are provided in the sections that follow. This section
- gives a brief overview of what the Transaction Timeout feature can do.</para>
- <section role="h3" id="Java-Broker-Runtime-Producer-Transaction-Timeout-Effect-Broker-Side">
- <title>Broker Logging and Connection Close</title>
- <para>When the openWarn or idleWarn specified threshold is exceeded, the broker will log a WARN
- level alert with details of the connection and channel on which the threshold has been exceeded,
- along with the age of the transaction.</para>
- <para>When the openClose or idleClose specified threshold value is exceeded, the broker will
- throw an exception back to the client connection via the <ulink
- url="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">ExceptionListener</ulink>, log the
- action and then close the connection.</para>
- <para>The example broker log output shown below is where the idleWarn threshold specified is
- lower than the idleClose threshold and the broker therefore logs the idle transaction 3 times
- before the close threshold is triggered and the connection closed out.</para>
- <screen><![CDATA[CHN-1008 : Idle Transaction : 13,116 ms
-CHN-1008 : Idle Transaction : 14,116 ms
-CHN-1008 : Idle Transaction : 15,118 ms
-CHN-1003 : Close]]>
- </screen>
- <para>The second example broker log output shown below illustrates the same mechanism operating
- on an open transaction.</para>
- <screen><![CDATA[
-CHN-1007 : Open Transaction : 12,406 ms
-CHN-1007 : Open Transaction : 13,406 ms
-CHN-1007 : Open Transaction : 14,406 ms
-CHN-1003 : Close]]>
- </screen>
- </section>
- <section role="h3" id="Java-Broker-Runtime-Producer-Transaction-Timeout-Effect-Client-Side">
- <title>Client Side Effect</title>
- <para>After a Close threshold has been exceeded, the trigger client will receive this exception
- on its <ulink url="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">exception
- listener</ulink>, prior to being disconnected:</para>
- <computeroutput>org.apache.qpid.AMQConnectionClosedException: Error: Idle transaction timed out
- [error code 506: resource error]</computeroutput>
- <para>Any later attempt to use the connection will result in this exception being thrown:</para>
- <screen><![CDATA[Producer: Caught an Exception: javax.jms.IllegalStateException: Object org.apache.qpid.client.AMQSession_0_8@129b0e1 has been closed
- javax.jms.IllegalStateException: Object org.apache.qpid.client.AMQSession_0_8@129b0e1 has been closed
- at org.apache.qpid.client.Closeable.checkNotClosed(Closeable.java:70)
- at org.apache.qpid.client.AMQSession.checkNotClosed(AMQSession.java:555)
- at org.apache.qpid.client.AMQSession.createBytesMessage(AMQSession.java:573)]]>
- </screen>
- <para>Thus clients must be able to handle this case successfully, reconnecting where required and
- registering an exception listener on all connections. This is critical, and must be communicated
- to client applications by any broker owner switching on transaction timeouts.</para>
- </section>
-
- </section>
- <section role="h2" id="Java-Broker-Runtime-Producer-Transaction-Timeout-Configuration">
- <title>Configuration</title>
- <section role="h3" id="Java-Broker-Runtime-Producer-Transaction-Timeout-Configuration-Overview">
- <title>Configuration</title>
- <para>The transaction timeouts can be specified when a new virtualhost is created or an exiting
- virtualhost is edited.</para>
- <para>We would recommend that only warnings are configured at first, which should allow broker
- administrators to obtain an idea of the distribution of transaction lengths on their systems,
- and configure production settings appropriately for both warning and closure. Ideally
- establishing thresholds should be achieved in a representative UAT environment, with clients and
- broker running, prior to any production deployment.</para>
- <para>It is impossible to give suggested values, due to the large variation in usage depending on
- the applications using a broker. However, clearly transactions should not span the expected
- lifetime of any client application as this would indicate a hung client.</para>
- <para>When configuring warning and closure timeouts, it should be noted that these only apply to
- message producers that are connected to the broker, but that a timeout will cause the connection
- to be closed - this disconnecting all producers and consumers created on that connection.</para>
- <para>This should not be an issue for environments using Mule or Spring, where connection
- factories can be configured appropriately to manage a single MessageProducer object per JMS
- Session and Connection. Clients that use the JMS API directly should be aware that sessions
- managing both consumers and producers, or multiple producers, will be affected by a single
- producer hanging or leaving a transaction idle or open, and closed, and must take appropriate
- action to handle that scenario.</para>
- </section>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Runtime.xml b/qpid/doc/book/src/java-broker/Java-Broker-Runtime.xml
deleted file mode 100644
index 25dc7e9684..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Runtime.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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.
-
--->
-
-<chapter id="Java-Broker-Runtime">
- <title>Runtime</title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime-Log-Files.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="Java-Broker-Runtime-Disk-Space-Management.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="Java-Broker-Runtime-Producer-Transaction-Timeout.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
- href="Java-Broker-Runtime-Handling-Undeliverable-Messages.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Close-On-No-Route.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime-Flow-To-Disk.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime-Background-Recovery.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime-Message-Compression.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime-Connection-Limit.xml"/>
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Java-Broker-Security.xml b/qpid/doc/book/src/java-broker/Java-Broker-Security.xml
deleted file mode 100644
index 47d3cae164..0000000000
--- a/qpid/doc/book/src/java-broker/Java-Broker-Security.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?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.
-
--->
-
-<chapter id="Java-Broker-Security">
- <title>Security</title>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="security/Java-Broker-Security-Authentication-Providers.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="security/Java-Broker-Security-Group-Providers.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="security/Java-Broker-Security-ACLs.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="security/Java-Broker-Security-Configuration-Encryption.xml"/>
-</chapter>
diff --git a/qpid/doc/book/src/java-broker/Makefile b/qpid/doc/book/src/java-broker/Makefile
deleted file mode 100644
index 0266a0f54d..0000000000
--- a/qpid/doc/book/src/java-broker/Makefile
+++ /dev/null
@@ -1,20 +0,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.
-#
-
-include ../Makefile.inc
diff --git a/qpid/doc/book/src/java-broker/commonEntities.xml b/qpid/doc/book/src/java-broker/commonEntities.xml
deleted file mode 100644
index cdee906369..0000000000
--- a/qpid/doc/book/src/java-broker/commonEntities.xml
+++ /dev/null
@@ -1,52 +0,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.
-
--->
-
-<!ENTITY qpidDownloadUrl "http://qpid.apache.org/download.html">
-<!ENTITY qpidCppBook "../../AMQP-Messaging-Broker-CPP-Book/html/">
-
-<!ENTITY qpidCurrentRelease "0.32-SNAPSHOT">
-
-<!ENTITY windowsBrokerDownloadFileName "qpid-java-broker-&qpidCurrentRelease;.zip">
-<!ENTITY windowsExtractedBrokerDirName "qpid-broker-&qpidCurrentRelease;">
-<!ENTITY unixBrokerDownloadFileName "qpid-java-broker-&qpidCurrentRelease;.tar.gz">
-<!ENTITY unixExtractedBrokerDirName "qpid-broker-&qpidCurrentRelease;">
-
-<!-- Client doc links -->
-<!ENTITY qpidjmsdocClientConectionUrl "../../Programming-In-Apache-Qpid/html/QpidJNDI.html#section-jms-connection-url">
-
-<!-- Oracle javadoc -->
-<!ENTITY oracleJdkDocUrl "http://docs.oracle.com/javase/7/docs/api/">
-<!ENTITY oracleJeeDocUrl "http://docs.oracle.com/javaee/6/api/">
-<!ENTITY oracleKeytool "http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html">
-<!ENTITY oracleJconsole "http://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html">
-
-<!-- Oracle BDB JE-->
-<!ENTITY oracleJeDownloadUrl "http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html?ssSourceSiteId=ocomen">
-<!ENTITY oracleBdbProductOverviewUrl "http://www.oracle.com/technetwork/products/berkeleydb/overview/index-093405.html">
-<!ENTITY oracleBdbRepGuideUrl "http://oracle.com/cd/E17277_02/html/ReplicationGuide/">
-<!ENTITY oracleBdbJavaDocUrl "http://docs.oracle.com/cd/E17277_02/html/java/">
-<!ENTITY oracleBdbProductVersion "5.0.104">
-
-<!ENTITY oracleJmxTutorial "http://docs.oracle.com/javase/tutorial/jmx/">
-
-<!ENTITY qpidSrc "http://svn.apache.org/viewvc/qpid/trunk/qpid/java/">
-<!ENTITY qpidManagementCommonSrc "&qpidSrc;management/common/src/main/java/">
-<!ENTITY qpidSrcSuffix ".java?view=co">
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Authentication-Providers.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Authentication-Providers.xml
deleted file mode 100644
index d361efb0ab..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Authentication-Providers.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Concepts-Authentication-Providers">
- <title>Authentication Providers</title>
- <para>
- <emphasis>Authentication Providers</emphasis> are used by <emphasis>Ports</emphasis> to authenticate connections.
- Many <emphasis>Authentication Providers</emphasis> can be configured on the Broker at the same time, from which
- each <emphasis>Port</emphasis> can be assigned one.
- </para>
- <para>Some Authentication Providers offer facilities for creation and deletion of users.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Broker.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Broker.xml
deleted file mode 100644
index 90193176a7..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Broker.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?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 id="Java-Broker-Concepts-Broker">
- <title>Broker</title>
- <para>The <emphasis>Broker</emphasis> is the outermost entity within the system.</para>
- <para>The Broker is backed by storage. This storage is used to record the durable entities that exist beneath it.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Exchanges.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Exchanges.xml
deleted file mode 100644
index 5eb02dc5dd..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Exchanges.xml
+++ /dev/null
@@ -1,204 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Concepts-Exchanges">
-<title>Exchanges</title>
- <para>An <emphasis>Exchange</emphasis> is a named entity within the <emphasis>Virtualhost</emphasis> which receives
- messages from producers and routes them to matching <emphasis>Queue</emphasis>s within the <emphasis>Virtualhost</emphasis>.</para>
- <para>The server provides a set of exchange types with each exchange type implementing a different routing algorithm. For details of how
- these exchanges types work see <xref linkend="Java-Broker-Concepts-Exchanges-Types"/> below.</para>
- <para>The server predeclares a number of exchange instances with names starting with &quot;<literal>amq.</literal>&quot;. These are defined in
- <xref linkend="Java-Broker-Concepts-Exchanges-Predeclared"/>.</para>
- <para>Applications can make use the pre-declared exchanges, or they may declare their own. The number of exchanges within a virtual host is
- limited only by resource constraints.</para>
- <para>The behaviour when an exchange is unable to route a message to any queue is defined in <xref linkend="Java-Broker-Concepts-Exchanges-UnroutableMessage"/></para>
- <section id="Java-Broker-Concepts-Exchanges-Predeclared">
- <title>Predeclared Exchanges</title>
- <para>Each virtual host pre-declares the following exchanges:
- <itemizedlist>
- <listitem><para>amq.direct (an instance of a direct exchange)</para></listitem>
- <listitem><para>amq.topic (an instance of a topic exchange)</para></listitem>
- <listitem><para>amq.fanout (an instance of a fanout exchange)</para></listitem>
- <listitem><para>amq.match (an instance of a headers exchange)</para></listitem>
- </itemizedlist>
- </para>
- <para>The conceptual &quot;<literal>default exchange</literal>&quot; always exists, effectively a special instance of
- direct exchange which uses the empty string as its name. All queues are automatically bound to it upon their creation
- using the queue name as the binding key, and unbound upon their deletion. It is not possible to manually add or remove
- bindings within this exchange.</para>
- <para>Applications may not declare exchanges with names beginning with &quot;<literal>amq.</literal>&quot;. Such names are reserved for system use.</para>
- </section>
- <section id="Java-Broker-Concepts-Exchanges-Types">
- <title>Exchange Types</title>
- <para>
- The following Exchange types are supported.
- <itemizedlist>
- <listitem><para>Direct</para></listitem>
- <listitem><para>Topic</para></listitem>
- <listitem><para>Fanout</para></listitem>
- <listitem><para>Headers</para></listitem>
- </itemizedlist>
- These exchange types are described in the following sub-sections.</para>
-
- <section id="Java-Broker-Concepts-Exchanges-Types-Direct">
- <title>Direct</title>
- <para>The direct exchange type routes messages to queues based on an exact match between
- the routing key of the message, and the binding key used to bind the queue to the exchange. Additional
- filter rules may be specified using a <link linkend="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector">
- binding argument specifying a JMS message selector</link>.
- </para>
- <para>This exchange type is often used to implement point to point messaging. When used in this manner, the normal
- convention is that the binding key matches the name of the queue. It is also possible to use this exchange type
- for multi-cast, in this case the same binding key is associated with many queues.</para>
- <figure>
- <title>Direct exchange</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Exchange-Direct.png" format="PNG" scalefit="1"/>
- </imageobject>
- </mediaobject>
- </figure>
- <para>The figure above illustrates the operation of direct exchange type. The yellow messages published with the routing key
- &quot;<literal>myqueue</literal>&quot; match the binding key corresponding to queue &quot;<literal>myqueue</literal>&quot; and so are routed there. The red
- messages published with the routing key &quot;<literal>foo</literal>&quot; match two bindings in the table so a copy of the message is
- routed to both the &quot;<literal>bar1</literal>&quot; and &quot;<literal>bar2</literal>&quot; queues.</para>
- <para>The routing key of the blue message matches no binding keys, so the message is unroutable. It is handled as described
- in <xref linkend="Java-Broker-Concepts-Exchanges-UnroutableMessage"/>.</para>
- </section>
- <section id="Java-Broker-Concepts-Exchanges-Types-Topic">
- <title>Topic</title>
- <para>This exchange type is used to support the classic publish/subscribe paradigm.</para>
- <para>The topic exchange is capable of routing messages to queues based on wildcard matches between the routing key and the
- binding key pattern defined by the queue binding. Routing keys are formed from one or more words, with each word delimited
- by a full-stop (.). The pattern matching characters are the * and # symbols. The * symbol matches a single word and the #
- symbol matches zero or more words.</para>
- <para>Additional filter rules may be specified using a <link linkend="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector">
- binding argument specifying a JMS message selector</link>.</para>
- <para>The following three figures help explain how the topic exchange functions.</para>
- <para></para>
- <figure>
- <title>Topic exchange - exact match on topic name</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Exchange-Topic.png" format="PNG" scalefit="1"/>
- </imageobject>
- </mediaobject>
- </figure>
- <para>The figure above illustrates publishing messages with routing key &quot;<literal>weather</literal>&quot;. The exchange routes each
- message to every bound queue whose binding key matches the routing key.</para>
- <para>In the case illustrated, this means that each subscriber's queue receives every yellow message.</para>
- <figure>
- <title>Topic exchange - matching on hierarchical topic patterns</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Exchange-Topic-Hierarchical.png" format="PNG" scalefit="1"/>
- </imageobject>
- </mediaobject>
- </figure>
- <para>The figure above illustrates publishing messages with hierarchical routing keys. As before, the exchange routes each
- message to every bound queue whose binding key matches the routing key but as the binding keys contain wildcards, the
- wildcard rules described above apply.</para>
- <para>In the case illustrated, <literal>sub1</literal> has received the red and green message as &quot;<literal>news.uk</literal>&quot; and &quot;<literal>news.de</literal>&quot;
- match binding key &quot;<literal>news.#</literal>&quot;. The red message has also gone to <literal>sub2</literal> and <literal>sub3</literal> as it's routing key
- is matched exactly by &quot;<literal>news.uk</literal>&quot; and by &quot;<literal>*.uk</literal>&quot;.</para>
- <para>The routing key of the yellow message matches no binding keys, so the message is unroutable. It is handled as described
- in <xref linkend="Java-Broker-Concepts-Exchanges-UnroutableMessage"/>.</para>
- <figure>
- <title>Topic exchange - matching on JMS message selector</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Exchange-Topic-JMSSelector.png" format="PNG" scalefit="1"/>
- </imageobject>
- </mediaobject>
- </figure>
- <para>The figure above illustrates messages with properties published with routing key &quot;<literal>shipping</literal>&quot;.</para>
- <para>As before, the exchange routes each message to every bound queue whose binding key matches the routing key but as a JMS selector
- argument has been specified, the expression is evaluated against each matching message. Only messages whose message header values or properties
- match the expression are routed to the queue.</para>
- <para>In the case illustrated, <literal>sub1</literal> has received the yellow and blue message as their property &quot;<literal>area</literal>&quot;
- cause expression &quot;<literal>area in ('Forties', 'Cromarty')</literal>&quot; to evaluate true. Similarly, the yellow message has also gone to
- <literal>gale_alert</literal> as its property &quot;<literal>speed</literal>&quot; causes expression &quot;<literal>speed &gt; 7 and speed &lt; 10</literal>&quot;
- to evaluate true.</para>
- <para>The properties of purple message cause no expressions to evaluate true, so the message is unroutable. It is handled as described in
- <xref linkend="Java-Broker-Concepts-Exchanges-UnroutableMessage"/>.</para>
- </section>
- <section id="Java-Broker-Concepts-Exchanges-Types-Fanout">
- <title>Fanout</title>
- <para>The fanout exchange type routes messages to all queues bound to the exchange, regardless of the message's routing key.</para>
- <para>Filter rules may be specified using a <link linkend="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector">
- binding argument specifying a JMS message selector</link>.</para>
- <figure>
- <title>Fanout exchange</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Exchange-Fanout.png" format="PNG" scalefit="1"/>
- </imageobject>
- </mediaobject>
- </figure>
- </section>
- <section id="Java-Broker-Concepts-Exchanges-Types-Headers">
- <title>Headers</title>
- <para>The headers exchange type routes messages to queues based on header properties within the message. The message is passed to
- a queue if the header properties of the message satisfy the <link linkend="Java-Broker-Concepts-Exchanges-BindingArguments-x-match">
- x-match expression</link> specified by the binding arguments with which the queue was bound.
- </para>
- </section>
- </section>
- <section id="Java-Broker-Concepts-Exchanges-BindingArguments">
- <title>Binding Arguments</title>
- <para>Binding arguments are used by certain exchange types to further filter messages.</para>
- <section id="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector">
- <title>JMS Selector</title>
- <para>The binding argument <literal>x-filter-jms-selector</literal> specifies a JMS selector conditional expression. The expression
- is written in terms of message header and message property names. If the expression evaluates to true, the message is routed to the queue.
- This type of binding argument is understood by exchange types direct, topic and fanout.<footnote><para>
- This is a Qpid specific extension.</para></footnote>.</para>
- </section>
- <section id="Java-Broker-Concepts-Exchanges-BindingArguments-x-match">
- <title>x-match</title>
- <para>The binding argument <literal>x-match</literal> is understood by exchange type headers. It can take two values, dictating how the
- rest of the name value pairs are treated during matching.</para>
- <itemizedlist>
- <listitem><para><literal>all</literal> implies that all the other pairs must match the headers property of a message for that message to be routed
- (i.e. an AND match)</para></listitem>
- <listitem><para><literal>any</literal> implies that the message should be routed if any of the fields in the headers property match one of the
- fields in the arguments table (i.e. an OR match)</para></listitem>
- </itemizedlist>
- <para>A field in the bind arguments matches a field in the message if either the field in the bind arguments has no value and a field of the
- same name is present in the message headers or if the field in the bind arguments has a value and a field of the same name exists in the
- message headers and has that same value.</para>
- </section>
- </section>
- <section id="Java-Broker-Concepts-Exchanges-UnroutableMessage">
- <title>Unrouteable Messages</title>
- <para>If an exchange is unable to route a message to any queues, the Broker will:
- <itemizedlist>
- <listitem><para>If using AMQP 0-10 protocol, and an alternate exchange has been set on the exchange, the message is routed to the alternate exchange.
- The alternate exchange routes the message according to its routing algorithm and its binding table. If the messages is still unroutable,
- the message is discarded.</para></listitem>
- <listitem><para>If using AMQP protocols 0-8..0-9-1, and the publisher set the mandatory flag and the<link linkend="Java-Broker-Close-Connection-When-No-Route">
- close when no route</link> feature did not close the connection, the message is returned to the Producer.</para></listitem>
- <listitem><para>Otherwise, the message is discarded.</para></listitem>
- </itemizedlist>
- </para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Other-Services.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Other-Services.xml
deleted file mode 100644
index 854a8001d6..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Other-Services.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Concepts-Other-Services">
-<title>Other Services</title>
- <para>
- The Broker can also have <emphasis>Access Control Providers</emphasis>, <emphasis>Group Providers</emphasis>,
- <emphasis>Keystores</emphasis>, <emphasis>Trustores</emphasis> and [Management] <emphasis>Plugins</emphasis> configured.
- </para>
-
- <section id="Java-Broker-Concepts-Access-Control-Providers">
- <title>Access Control Providers</title>
- <para><emphasis>Access Control Providers</emphasis> are used to authorize various operations relating to Broker objects.</para>
- <para>Access Control Provider configuration and management details are covered in <xref linkend="Java-Broker-Security-ACLs"/>.</para>
- </section>
-
- <section id="Java-Broker-Concepts-Group-Providers">
- <title>Group Providers</title>
- <para><emphasis>Group Providers</emphasis> are used to aggregate authenticated user principals into groups
- which can be then be used in Access Control rules applicable to the whole group.</para>
- <para>Group Provider configuration and management is covered in <xref linkend="Java-Broker-Security-Group-Providers"/>.</para>
- </section>
-
- <section id="Java-Broker-Concepts-Keystores">
- <title>Keystores</title>
- <para><emphasis>Keystores</emphasis> are used to configure details of keystores holding SSL keys and certificates
- for the SSL transports on Ports.</para>
- <para>Keystore configuration and management is covered in <xref linkend="Java-Broker-Management-Managing-Keystores"/>.</para>
- </section>
-
- <section id="Java-Broker-Concepts-Truststores">
- <title>Truststores</title>
- <para><emphasis>Truststores </emphasis> are used to configure details of keystores holding SSL certificates
- for trusting Client Certificate on SSL ports.
- </para>
- <para>Truststore configuration and management is covered in <xref linkend="Java-Broker-Management-Managing-Truststores"/>.</para>
- </section>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Overview.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Overview.xml
deleted file mode 100644
index 691cf2aab3..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Overview.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?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 id="Java-Broker-Concepts-Overview">
- <title>Overview</title>
- <para>The Broker comprises of a number of entities. This section summaries the purpose of
- each of the entities and describes the relationships between them. These details are developed
- further in the sub-sections that follow.</para>
- <para>The most important entity is the <emphasis>Virtualhost</emphasis>. A virtualhost is an
- independent namespace in which messaging is performed. A <emphasis>virtualhost</emphasis> exists
- in a container called a <emphasis>virtualhost node</emphasis>. A virtualhost node has exactly
- one virtualhost.</para>
- <para><emphasis>Ports</emphasis> accept connections for messaging and management. The Broker
- supports any number of ports. When connecting for messaging, the user specifies a virtualhost
- name to indicate the virtualhost to which it is to be connected.</para>
- <para><emphasis>Authentication Providers</emphasis> assert the identity of the user as it connects
- for messaging or management. The Broker supports any number of authentication providers. Each
- port is associated with exactly one authentication provider. The port uses the authentication
- provider to assert the identity of the user as new connections are received.</para>
- <para><emphasis>Group Providers</emphasis> provide mechanisms that provide grouping of users. A
- Broker supports zero or more group providers.</para>
- <para><emphasis>Access Control Provider</emphasis> allows the abilities of users (or groups of
- users) to be restrained. A Broker can have zero or one access control providers.</para>
- <para><emphasis>Keystores</emphasis> provide a repositories of certificates and are used when the
- Broker accepts SSL connections. Any number of keystore providers can be defined. Keystores are
- be associated with Ports defined to accepts SSL.</para>
- <para><emphasis>Truststores</emphasis> provide a repositories of trust and are used to validate a
- peer. Any number of truststore provides can be defined. Truststores can be associated with Ports
- and other entities that form SSL connections.</para>
- <para><emphasis>Remote Replication Nodes</emphasis> are used when the high availability feature is
- in use. It is the remote representation of other virtualhost nodes that form part of the same
- group.</para>
- <para>These concepts will be developed over the forthcoming pages. The diagrams below also help
- put these entities in context of one and other.</para>
- <para><figure>
- <title>Message Flow through Key Entities</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Broker-MessageFlow.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Message Flow through the Key Entities of the Broker</phrase>
- </textobject>
- </mediaobject>
- </figure></para>
- <para><figure>
- <title>Broker Structure</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Broker-Model.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Broker Structure</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Ports.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Ports.xml
deleted file mode 100644
index 9f577ca5f4..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Ports.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Concepts-Ports">
- <title>Ports</title>
- <para> The Broker supports configuration of <emphasis>Ports</emphasis> to specify the particular
- AMQP messaging and HTTP/JMX management connectivity it offers for use. </para>
- <para> Each Port is configured with the particular <emphasis>Protocols</emphasis> and
- <emphasis>Transports</emphasis> it supports, as well as the <emphasis>Authentication
- Provider</emphasis> to be used to authenticate connections. Where SSL is in use, the
- <emphasis>Port</emphasis> configuration also defines which <emphasis>Keystore</emphasis>
- to use and (where supported) which <emphasis>TrustStore(s)</emphasis> and whether Client
- Certificates should be requested/required. </para>
- <para> Different <emphasis>Ports</emphasis> can support different protocols, and many
- <emphasis>Ports</emphasis> can be configured on the Broker.</para>
- <para> The following AMQP protocols are currently supported by the Broker: <itemizedlist>
- <listitem><para><emphasis>AMQP 0-8</emphasis></para></listitem>
- <listitem><para><emphasis>AMQP 0-9</emphasis></para></listitem>
- <listitem><para><emphasis>AMQP 0-9-1</emphasis></para></listitem>
- <listitem><para><emphasis>AMQP 0-10</emphasis></para></listitem>
- <listitem><para><emphasis>AMQP 1.0</emphasis></para></listitem>
- </itemizedlist>
- </para>
-
- <para> Additionally, HTTP and JMX ports can be configured for use by the associated management
- plugins. </para>
- <para>This diagram explains how Ports, <link
- linkEnd="Java-Broker-Concepts-Authentication-Providers">Authentication Providers</link>
- and an Access Control Provider work together to allow an application to form a connection to
- a Virtualhost.<figure>
- <title>Control flow during Authentication</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Broker-PortAuthFlow.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Control flow during Authentication</phrase>
- </textobject>
- </mediaobject>
- </figure></para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Queues.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Queues.xml
deleted file mode 100644
index 103a62ec38..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Queues.xml
+++ /dev/null
@@ -1,372 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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.
-
--->
-
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "../commonEntities.xml">
-%entities;
-]>
-<section id="Java-Broker-Concepts-Queues">
- <title>Queues</title>
- <para><emphasis>Queue</emphasis>s are named entities within a <link linkend="Java-Broker-Concepts-Virtualhosts">Virtualhost</link> that
- hold/buffer messages for later delivery to consumer applications. An <link
- linkend="Java-Broker-Concepts-Exchanges">Exchange</link> for passing messages to a queue.
- Consumers subscribe to a queue in order to receive messages for it. </para>
- <para>The Broker supports different queue types, each with different delivery semantics. It also messages on a queue to be treated as a group.</para>
- <section id="Java-Broker-Concepts-Queues-Types">
- <title>Types</title>
- <para>The Broker supports four different queue types, each with different delivery semantics.<itemizedlist>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-Standard"
- >Standard</link> - a simple First-In-First-Out (FIFO) queue</para>
- </listitem>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-Priority"
- >Priority</link> - delivery order depends on the priority of each message</para>
- </listitem>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-Sorted">Sorted</link> -
- delivery order depends on the value of the sorting key property in each message</para>
- </listitem>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-LVQ">Last Value
- Queue</link> - also known as an LVQ, retains only the last (newest) message received
- with a given LVQ key value</para>
- </listitem>
- </itemizedlist></para>
- <section id="Java-Broker-Concepts-Queues-Types-Standard">
- <title>Standard</title>
- <para>A simple First-In-First-Out (FIFO) queue</para>
- </section>
- <section id="Java-Broker-Concepts-Queues-Types-Priority">
- <title>Priority</title>
- <para>In a priority queue, messages on the queue are delivered in an order determined by the
- <ulink url="&oracleJeeDocUrl;javax/jms/Message.html#getJMSPriority()">JMS priority message
- header</ulink> within the message. By default Qpid supports the 10 priority levels
- mandated by JMS, with priority value 0 as the lowest priority and 9 as the highest. </para>
- <para>It is possible to reduce the effective number of priorities if desired.</para>
- <para>JMS defines the <ulink url="&oracleJeeDocUrl;javax/jms/Message.html#DEFAULT_PRIORITY">
- default message priority</ulink> as 4. Messages sent without a specified priority use this
- default. </para>
- </section>
- <section id="Java-Broker-Concepts-Queues-Types-Sorted">
- <title>Sorted Queues</title>
- <para>Sorted queues allow the message delivery order to be determined by value of an arbitrary
- <ulink url="&oracleJeeDocUrl;javax/jms/Message.html#getStringProperty()">JMS message
- property</ulink>. Sort order is alpha-numeric and the property value must have a type
- java.lang.String.</para>
- <para>Messages sent to a sorted queue without the specified JMS message property will be
- inserted into the 'last' position in the queue.</para>
- </section>
- <section id="Java-Broker-Concepts-Queues-Types-LVQ">
- <title>Last Value Queues (LVQ)</title>
- <para>LVQs (or conflation queues) are special queues that automatically discard any message
- when a newer message arrives with the same key value. The key is specified by arbitrary
- <ulink url="&oracleJeeDocUrl;javax/jms/Message.html#getPropertyNames()">JMS message
- property</ulink>.</para>
- <para>An example of an LVQ might be where a queue represents prices on a stock exchange: when
- you first consume from the queue you get the latest quote for each stock, and then as new
- prices come in you are sent only these updates. </para>
- <para>Like other queues, LVQs can either be browsed or consumed from. When browsing an
- individual subscriber does not remove the message from the queue when receiving it. This
- allows for many subscriptions to browse the same LVQ (i.e. you do not need to create and
- bind a separate LVQ for each subscriber who wishes to receive the contents of the
- LVQ).</para>
- <para>Messages sent to an LVQ without the specified property will be delivered as normal and
- will never be "replaced".</para>
- </section>
- </section>
- <section id="Java-Broker-Concepts-Queues-QueueDeclareArguments">
- <title>Queue Declare Arguments</title>
- <para>To create a priority, sorted or LVQ queue programmatically from JMX or AMQP, pass the
- appropriate queue-declare arguments.</para>
- <table>
- <title>Queue-declare arguments understood for priority, sorted and LVQ queues</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Queue type</entry>
- <entry>Argument name</entry>
- <entry>Argument name</entry>
- <entry>Argument Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>priority</entry>
- <entry>x-qpid-priorities</entry>
- <entry>java.lang.Integer</entry>
- <entry>Specifies a priority queue with given number priorities</entry>
- </row>
- <row>
- <entry>sorted</entry>
- <entry>qpid.queue_sort_key</entry>
- <entry>java.lang.String</entry>
- <entry>Specifies sorted queue with given message property used to sort the
- entries</entry>
- </row>
- <row>
- <entry>lvq</entry>
- <entry>qpid.last_value_queue_key</entry>
- <entry>java.lang.String</entry>
- <entry>Specifies lvq queue with given message property used to conflate the
- entries</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- <section id="Java-Broker-Concepts-Queues-Message-Grouping">
- <title>Messaging Grouping</title>
- <para> The broker allows messaging applications to classify a set of related messages as
- belonging to a group. This allows a message producer to indicate to the consumer that a group
- of messages should be considered a single logical operation with respect to the application. </para>
- <para> The broker can use this group identification to enforce policies controlling how messages
- from a given group can be distributed to consumers. For instance, the broker can be configured
- to guarantee all the messages from a particular group are processed in order across multiple
- consumers. </para>
- <para> For example, assume we have a shopping application that manages items in a virtual
- shopping cart. A user may add an item to their shopping cart, then change their mind and
- remove it. If the application sends an <emphasis>add</emphasis> message to the broker,
- immediately followed by a <emphasis>remove</emphasis> message, they will be queued in the
- proper order - <emphasis>add</emphasis>, followed by <emphasis>remove</emphasis>. </para>
- <para> However, if there are multiple consumers, it is possible that once a consumer acquires
- the <emphasis>add</emphasis> message, a different consumer may acquire the
- <emphasis>remove</emphasis> message. This allows both messages to be processed in parallel,
- which could result in a "race" where the <emphasis>remove</emphasis> operation is incorrectly
- performed before the <emphasis>add</emphasis> operation. </para>
- <section id="Java-Broker-Concepts-Queues-GroupingMessages">
- <title>Grouping Messages</title>
- <para> In order to group messages, the application would designate a particular message header
- as containing a message's <emphasis>group identifier</emphasis>. The group identifier stored
- in that header field would be a string value set by the message producer. Messages from the
- same group would have the same group identifier value. The key that identifies the header
- must also be known to the message consumers. This allows the consumers to determine a
- message's assigned group. </para>
- <para> The header that is used to hold the group identifier, as well as the values used as
- group identifiers, are totally under control of the application. </para>
- </section>
- <section id="Java-Broker-Concepts-Queues-BrokerRole">
- <title> The Role of the Broker in Message Grouping </title>
- <para> The broker will apply the following processing on each grouped message: <itemizedlist>
- <listitem>
- <para>Enqueue a received message on the destination queue.</para>
- </listitem>
- <listitem>
- <para>Determine the message's group by examining the message's group identifier
- header.</para>
- </listitem>
- <listitem>
- <para>Enforce <emphasis>consumption ordering</emphasis> among messages belonging to the
- same group. <emphasis>Consumption ordering</emphasis> means one of two things
- depending on how the queue has been configured. </para>
- <itemizedlist>
- <listitem>
- <para> In default mode, a group gets assigned to a single consumer for the lifetime
- of that consumer, and the broker will pass all subsequent messages in the group to
- that consumer. </para>
- </listitem>
- <listitem>
- <para>In 'shared groups' mode (which gives the same behaviour as the Qpid C++
- Broker) the broker enforces a looser guarantee, namely that all the
- <emphasis>currently unacknowledged messages</emphasis> in a group are sent to
- the same consumer, but the consumer used may change over time even if the
- consumers do not. This means that only one consumer can be processing messages
- from a particular group at any given time, however if the consumer acknowledges
- all of its acquired messages then the broker <emphasis>may</emphasis> pass the
- next pending message in that group to a different consumer. </para>
- </listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
- </para>
- <para> The absence of a value in the designated group header field of a message is treated as
- follows: <itemizedlist>
- <listitem>
- <para> In default mode, failure for a message to specify a group is treated as a desire
- for the message not to be grouped at all. Such messages will be distributed to any
- available consumer, without the ordering quarantees imposed by grouping. </para>
- </listitem>
- <listitem>
- <para> In 'shared groups' mode (which gives the same behaviour as the Qpid C++ Broker)
- the broker assigns messages without a group value to a 'default group'. Therefore, all
- such "unidentified" messages are considered by the broker as part of the same group,
- which will handled like any other group. The name of this default group is
- "qpid.no-group", although it can be customised as detailed below. </para>
- </listitem>
- </itemizedlist>
- </para>
- <para> Note that message grouping has no effect on queue browsers.</para>
- <para> Note well that distinct message groups would not block each other from delivery. For
- example, assume a queue contains messages from two different message groups - say group "A"
- and group "B" - and they are enqueued such that "A"'s messages are in front of "B". If the
- first message of group "A" is in the process of being consumed by a client, then the
- remaining "A" messages are blocked, but the messages of the "B" group are available for
- consumption by other consumers - even though it is "behind" group "A" in the queue. </para>
-</section>
-</section>
- <section id="Java-Broker-Concepts-Queues-SetLowPrefetch">
- <title>Using low pre-fetch with special queue types</title>
- <para>Qpid clients receive buffered messages in batches, sized according to the pre-fetch value.
- The current default is 500. </para>
- <para>However, if you use the default value you will probably <emphasis>not</emphasis> see
- desirable behaviour when using priority, sorted, lvq or grouped queues. Once the broker has
- sent a message to the client its delivery order is then fixed, regardless of the special
- behaviour of the queue. </para>
- <para>For example, if using a priority queue and a prefetch of 100, and 100 messages arrive with
- priority 2, the broker will send these messages to the client. If then a new message arrives
- will priority 1, the broker cannot leap frog messages of lower priority. The priority 1 will
- be delivered at the front of the next batch of messages to be sent to the client.</para>
- <para> So, you need to set the prefetch values for your client (consumer) to make this sensible.
- To do this set the Java system property <varname>max_prefetch</varname> on the client
- environment (using -D) before creating your consumer. </para>
- <para>A default for all client connections can be set via a system property: </para>
- <programlisting>
--Dmax_prefetch=1
-</programlisting>
- <para> The prefetch can be also be adjusted on a per connection basis by adding a
- <varname>maxprefetch</varname> value to the <ulink url="&qpidjmsdocClientConectionUrl;"
- >Connection URLs</ulink>
- </para>
- <programlisting>
-amqp://guest:guest@client1/development?maxprefetch='1'&amp;brokerlist='tcp://localhost:5672'
-</programlisting>
- <para>Setting the Qpid pre-fetch to 1 will give exact queue-type semantics as perceived by the
- client however, this brings a performance cost. You could test with a slightly higher
- pre-fetch to trade-off between throughput and exact semantics.</para>
- </section>
- <section id="Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers">
- <title>Forcing all consumers to be non-destructive</title>
- <para>When a consumer attaches to a queue, the normal behaviour is that messages are
- sent to that consumer are acquired exclusively by that consumer, and when the consumer
- acknowledges them, the messages are removed from the queue.</para>
- <para>Another common pattern is to have queue "browsers" which send all messages to the
- browser, but do not prevent other consumers from receiving the messages, and do not
- remove them from the queue when the browser is done with them. Such a browser is an
- instance of a "non-destructive" consumer.</para>
- <para>If every consumer on a queue is non destructive then we can obtain some interesting
- behaviours. In the case of a <link linked="Java-Broker-Concepts-Queues-Types-LVQ">LVQ
- </link> then the queue will always contain the most up to date value for every key. For
- a standard queue, if every consumer is non-destructive then we have something that
- behaves like a topic (every consumer receives every message) except that instead of
- only seeing messages that arrive after the point at which the consumer is created, all
- messages which have not been removed due to TTL expiry (or, in the case of LVQs,
- overwirtten by newer values for the same key).</para>
- <para>A queue can be created to enforce all consumers are non-destructive. This can be
- be achieved using the following queue declare argument:</para>
- <table>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Argument Name</entry>
- <entry>Argument Type</entry>
- <entry>Argument Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>qpid.ensure_nondestructive_consumers</entry>
- <entry>java.lang.Boolean</entry>
- <entry>Set to true if the queue should make all consumers attached to it behave
- non-destructively. (Default is false).</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>Through the <link linkend="Java-Broker-Management-Channel-REST-API">REST</link> api,
- the equivalent attribute is named <varname>ensureNondestructiveConsumers</varname>.
- </para>
- <section>
- <title>Bounding size using min/max TTL</title>
- <para>For queues other than LVQs, having only non-destructive consumers could mean that
- messages would never get deleted, leaving the queue to grow unconstrainedly. To
- prevent this you can use the ability to set the maximum TTL of the queue. To ensure
- all messages have the same TTL you could also set the minimum TTL to the same value.
- </para>
- <para>Minimum/Maximum TTL for a queue can be set though the HTTP Management UI, using the
- REST API or by hand editing the configuration file (for JSON configuration stores).
- The attribute names are <varname>minimumMessageTtl</varname> and
- <varname>maximumMessageTtl</varname> and the TTL value is given in milliseconds.</para>
- </section>
- <section>
- <title>Choosing to receive messages based on arrival time</title>
- <para>A queue with no destructive consumers will retain all messages until they expire
- due to TTL. It may be the case that a consumer only wishes to receive messages
- that have been sent in the last 60 minutes, and any new messages that arrive, or
- alternatively it may wish only to receive newly arriving messages and not any that
- are already in the queue. This can be achieved by using a filter on the arrival
- time.</para>
- <para>A special parameter <varname>x-qpid-replay-period</varname> can be used in the
- consumer declaration to control the messages the consumer wishes to receive. The
- value of <varname>x-qpid-replay-period</varname> is the time, in seconds, for which
- the consumer wishes to see messages. A replay period of 0 indicates only newly
- arriving messages should be sent. A replay period of 3600 indicates that only
- messages sent in the last hour - along with any newly arriving messages - should be
- sent.</para>
- <table>
- <title>Setting the replay period</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Syntax</entry>
- <entry>Example</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Addressing</entry>
- <entry>myqueue ; { link : { x-subscribe: { arguments : { x-qpid-replay-period : '3600' } } } }</entry>
- </row>
- <row>
- <entry>Binding URL</entry>
- <entry>direct://amq.direct/myqueue/myqueue?x-qpid-replay-period='3600'</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- <section>
- <title>Setting a default filter</title>
- <para>A common case might be that the desired default behaviour is that newly attached consumers
- see only newly arriving messages (i.e. standard topic-like behaviour) but other consumers
- may wish to start their message stream from some point in the past. This can be achieved by
- setting a default filter on the queue so that consumers which do not explicitly set a replay
- period get a default (in this case the desired default would be 0).</para>
- <para>The default filter set for a queue can be set via the REST API using the attribute named
- <varname>defaultFilters</varname>. This value is a map from filter name to type and arguments.
- To set the default behaviour for the queue to be that consumers only receive newly arrived
- messages, then you should set this attribute to the value:</para>
- <screen>
- { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "0" ] } }
- </screen>
- <para>
- If the desired default behaviour is that each consumer should see all messages arriving in
- the last minute, as well as all new messages then the value would need to be:</para>
- <screen>
- { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "60" ] } }
- </screen>
-
- </section>
-
-
- </section>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-RemoteReplicationNodes.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-RemoteReplicationNodes.xml
deleted file mode 100644
index b9162fd8e3..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-RemoteReplicationNodes.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Concepts-RemoteReplicationNodes">
- <title>Remote Replication Nodes</title>
- <para>Used for HA only. A <emphasis>remote replication node</emphasis> is a representation of
- another virtualhost node in the group.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhost-Nodes.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhost-Nodes.xml
deleted file mode 100644
index c1dd903aed..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhost-Nodes.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Concepts-Virtualhost-Nodes">
- <title>Virtualhost Nodes</title>
- <para>A <emphasis>virtualhost node</emphasis> is a container for the virtualhost. It has exactly
- one virtualhost.</para>
- <para>A <emphasis>virtualhost node</emphasis> is backed by storage. This storage is used to record
- the durable entities that exist beneath the virtualhost node (the virtualhost, queues, exchanges
- etc).</para>
- <para>When HA is in use, it is the virtualhost nodes of many Brokers that come together to form
- the group. The virtualhost nodes together elect a master. When the high availability feature is
- in use, the virtualhost node has <link linkend="Java-Broker-Concepts-RemoteReplicationNodes"
- >remote replications nodes</link>. There is a remote replication node corresponding to each
- remote virtualhost node that form part of the group.</para>
-
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhosts.xml b/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhosts.xml
deleted file mode 100644
index ecc898627e..0000000000
--- a/qpid/doc/book/src/java-broker/concepts/Java-Broker-Concepts-Virtualhosts.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Concepts-Virtualhosts">
- <title>Virtualhosts</title>
- <para>A virtualhost is a namespace in which messaging is performed. Virtualhosts are independent;
- the messaging goes on a within a virtualhost is independent of any messaging that goes on in
- another virtualhost. For instance, a queue named <emphasis>foo</emphasis> defined in one
- virtualhost is completely independent of a queue named <emphasis>foo</emphasis> in another
- virtualhost.</para>
- <para>A virtualhost is identified by a name which must be unique broker-wide. Clients use the name
- to identify the virtualhost to which they wish to connect when they connect.</para>
- <para>A virtualhost exists in a container called a virtualhost node.</para>
- <para>The virtualhost comprises of a number of entities. This section summaries the purpose of
- each of the entities and describes the relationships between them. These details are developed
- further in the sub-sections that follow.</para>
- <para><emphasis>Exchanges</emphasis> is a named entity within the Virtual Host which receives
- messages from producers and routes them to matching Queues.</para>
- <para><emphasis>Queues</emphasis> are named entities that hold messages for delivery to consumer
- applications.</para>
- <para><emphasis>Bindings</emphasis> are relationships between Exchanges and Queue that facilitate
- routing of messages from the Exchange to the Queue.</para>
- <para><emphasis>Connections</emphasis> represent a live connection to the virtualhost from a
- messaging client.</para>
- <para>A <emphasis>Session</emphasis> represents a context for the production or consumption of
- messages. Connection support many Sessions.</para>
- <para>A <emphasis>Consumer</emphasis> represents a live consumer that is attached to queue.</para>
- <para> The following diagram depicts the Virtualhost model: <figure>
- <title>Virtualhost Model</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/VirtualHost-Model.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Virtual Host Model</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </para>
- <para>A <emphasis>virtualhost</emphasis> is backed by storage which is used to store the messages.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/images/Broker-MessageFlow.png b/qpid/doc/book/src/java-broker/images/Broker-MessageFlow.png
deleted file mode 100644
index b687dfe2eb..0000000000
--- a/qpid/doc/book/src/java-broker/images/Broker-MessageFlow.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Broker-Model.png b/qpid/doc/book/src/java-broker/images/Broker-Model.png
deleted file mode 100644
index 8dd0118010..0000000000
--- a/qpid/doc/book/src/java-broker/images/Broker-Model.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Broker-PortAuthFlow.png b/qpid/doc/book/src/java-broker/images/Broker-PortAuthFlow.png
deleted file mode 100644
index 4df2fa1c5e..0000000000
--- a/qpid/doc/book/src/java-broker/images/Broker-PortAuthFlow.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Direct.png b/qpid/doc/book/src/java-broker/images/Exchange-Direct.png
deleted file mode 100644
index 184fb80704..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Direct.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Direct.svg b/qpid/doc/book/src/java-broker/images/Exchange-Direct.svg
deleted file mode 100644
index 76d25fa2ab..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Direct.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.
-
--->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="17 70 436 355" width="436pt" height="355pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2013-10-01 22:37Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="3.488"/><feOffset in="blur" result="offset" dx="0" dy="4"/><feFlood flood-color="black" flood-opacity=".75" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black"><g><path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1333.3334" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><g><use xl:href="#id4_Graphic" filter="url(#Shadow)"/><use xl:href="#id1902_Graphic" filter="url(#Shadow)"/><use xl:href="#id2284_Graphic" filter="url(#Shadow)"/></g><g id="id4_Graphic"><path d="M 66.296997 107.000005 L 160.297 107.000005 C 165.26756 107.000005 169.297 111.02944 169.297 116.000005 L 169.297 136.000005 C 169.297 140.97057 165.26756 145.000005 160.297 145.000005 L 66.296997 145.000005 C 61.326434 145.000005 57.296997 140.97057 57.296997 136.000005 L 57.296997 116.000005 C 57.296997 111.02944 61.326434 107.000005 66.296997 107.000005 Z" fill="#acffa2"/><path d="M 66.296997 107.000005 L 160.297 107.000005 C 165.26756 107.000005 169.297 111.02944 169.297 116.000005 L 169.297 136.000005 C 169.297 140.97057 165.26756 145.000005 160.297 145.000005 L 66.296997 145.000005 C 61.326434 145.000005 57.296997 140.97057 57.296997 136.000005 L 57.296997 116.000005 C 57.296997 111.02944 61.326434 107.000005 66.296997 107.000005 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(62.296997 112.000005)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="56.015625">Producer </tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="55.576172" y="11" textLength="8.6660156">A</tspan></text></g><g id="id1902_Graphic"><path d="M 197.65201 107.500005 L 291.652 107.500005 C 296.62257 107.500005 300.652 111.52944 300.652 116.500005 L 300.652 136.500005 C 300.652 141.47057 296.62257 145.500005 291.652 145.500005 L 197.65201 145.500005 C 192.68144 145.500005 188.65201 141.47057 188.65201 136.500005 L 188.65201 116.500005 C 188.65201 111.52944 192.68144 107.500005 197.65201 107.500005 Z" fill="#acffa2"/><path d="M 197.65201 107.500005 L 291.652 107.500005 C 296.62257 107.500005 300.652 111.52944 300.652 116.500005 L 300.652 136.500005 C 300.652 141.47057 296.62257 145.500005 291.652 145.500005 L 197.65201 145.500005 C 192.68144 145.500005 188.65201 141.47057 188.65201 136.500005 L 188.65201 116.500005 C 188.65201 111.52944 192.68144 107.500005 197.65201 107.500005 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(193.65201 112.500005)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="64.68164">Producer B</tspan></text></g><rect x="255.297" y="90.000006" width="31.222" height="16.5076" fill="#ff0b22"/><rect x="255.297" y="90.000006" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="256.716" y1="91.375606" x2="263.812" y2="91.375606" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="256.716" y1="92.750806" x2="263.812" y2="92.750806" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="256.716" y1="94.126806" x2="263.812" y2="94.126806" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="265.231" y1="98.253806" x2="276.585" y2="98.253806" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="265.231" y1="99.629806" x2="276.585" y2="99.629806" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="265.231" y1="101.004806" x2="276.585" y2="101.004806" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="282.261" y="91.375606" width="2.83837" height="2.75126" fill="none"/><rect x="282.261" y="91.375606" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="262.297" y="96.08351" width="31.222" height="16.5076" fill="#ff0b22"/><rect x="262.297" y="96.08351" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="263.716" y1="97.45851" x2="270.812" y2="97.45851" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="263.716" y1="98.83451" x2="270.812" y2="98.83451" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="263.716" y1="100.20951" x2="270.812" y2="100.20951" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="272.231" y1="104.33651" x2="283.584" y2="104.33651" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="272.231" y1="105.71251" x2="283.584" y2="105.71251" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="272.231" y1="107.08751" x2="283.584" y2="107.08751" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="289.261" y="97.45851" width="2.83837" height="2.75126" fill="none"/><rect x="289.261" y="97.45851" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="124.296996" y="90.00001" width="31.222" height="16.5076" fill="#ff9"/><rect x="124.296996" y="90.00001" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="125.715996" y1="91.37501" x2="132.812" y2="91.37501" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="125.715996" y1="92.75101" x2="132.812" y2="92.75101" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="125.715996" y1="94.12701" x2="132.812" y2="94.12701" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="134.231" y1="98.25351" x2="145.585" y2="98.25351" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="134.231" y1="99.62951" x2="145.585" y2="99.62951" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="134.231" y1="101.00551" x2="145.585" y2="101.00551" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="151.261" y="91.37501" width="2.83837" height="2.75126" fill="none"/><rect x="151.261" y="91.37501" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="129.084" y="96.08351" width="31.222" height="16.5076" fill="#ff9"/><rect x="129.084" y="96.08351" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="130.503" y1="97.45851" x2="137.599" y2="97.45851" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="130.503" y1="98.83451" x2="137.599" y2="98.83451" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="130.503" y1="100.21051" x2="137.599" y2="100.21051" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="139.018" y1="104.33651" x2="150.372" y2="104.33651" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="139.018" y1="105.71251" x2="150.372" y2="105.71251" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="139.018" y1="107.08851" x2="150.372" y2="107.08851" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="156.048" y="97.45851" width="2.83837" height="2.75126" fill="none"/><rect x="156.048" y="97.45851" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="134.002" y="103.58351" width="31.222" height="16.5076" fill="#ff9"/><rect x="134.002" y="103.58351" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="135.422" y1="104.95951" x2="142.518" y2="104.95951" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="135.422" y1="106.33451" x2="142.518" y2="106.33451" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="135.422" y1="107.71051" x2="142.518" y2="107.71051" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="143.937" y1="111.83751" x2="155.29" y2="111.83751" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="143.937" y1="113.21251" x2="155.29" y2="113.21251" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="143.937" y1="114.58851" x2="155.29" y2="114.58851" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="160.967" y="104.95951" width="2.83837" height="2.75126" fill="none"/><rect x="160.967" y="104.95951" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><path d="M 133.699005 163 L 355.605 163 C 360.57557 163 364.605 167.02944 364.605 172 L 364.605 391.274 C 364.605 396.24457 360.57557 400.274 355.605 400.274 L 133.699005 400.274 C 128.72844 400.274 124.699005 396.24457 124.699005 391.274 L 124.699005 172 C 124.699005 167.02944 128.72844 163 133.699005 163 Z" fill="#78caff"/><path d="M 133.699005 163 L 355.605 163 C 360.57557 163 364.605 167.02944 364.605 172 L 364.605 391.274 C 364.605 396.24457 360.57557 400.274 355.605 400.274 L 133.699005 400.274 C 128.72844 400.274 124.699005 396.24457 124.699005 391.274 L 124.699005 172 C 124.699005 167.02944 128.72844 163 133.699005 163 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(129.699005 168)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="69.345703">Qpid Broker</tspan></text><path d="M 148.554005 211.5 L 255.554 211.5 C 260.52457 211.5 264.554 215.52944 264.554 220.5 L 264.554 311.5 C 264.554 316.47057 260.52457 320.5 255.554 320.5 L 148.554005 320.5 C 143.58344 320.5 139.554005 316.47057 139.554005 311.5 L 139.554005 220.5 C 139.554005 215.52944 143.58344 211.5 148.554005 211.5 Z" fill="#a788ff"/><path d="M 148.554005 211.5 L 255.554 211.5 C 260.52457 211.5 264.554 215.52944 264.554 220.5 L 264.554 311.5 C 264.554 316.47057 260.52457 320.5 255.554 320.5 L 148.554005 320.5 C 143.58344 320.5 139.554005 316.47057 139.554005 311.5 L 139.554005 220.5 C 139.554005 215.52944 143.58344 211.5 148.554005 211.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(144.554005 216.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="60.685547">amq.direct</tspan></text><path d="M 282.554 211.5 L 341.554 211.5 C 346.52457 211.5 350.554 215.52944 350.554 220.5 L 350.554 255.5 C 350.554 260.47057 346.52457 264.5 341.554 264.5 L 282.554 264.5 C 277.58344 264.5 273.554 260.47057 273.554 255.5 L 273.554 220.5 C 273.554 215.52944 277.58344 211.5 282.554 211.5 Z" fill="#93d9ff"/><path d="M 282.554 211.5 L 341.554 211.5 C 346.52457 211.5 350.554 215.52944 350.554 220.5 L 350.554 255.5 C 350.554 260.47057 346.52457 264.5 341.554 264.5 L 282.554 264.5 C 277.58344 264.5 273.554 260.47057 273.554 255.5 L 273.554 220.5 C 273.554 215.52944 277.58344 211.5 282.554 211.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(278.554 216.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="7.1591797" y="11" textLength="52.68164">myqueue</tspan></text><path d="M 250.19663 211.12414 C 257.98164 202.25032 264.9523 188.93692 273.554 184.5 C 282.1557 180.06309 296.25709 180.08229 301.812 184.5 C 303.83 186.10487 304.82832 188.87613 305.36258 192.17813" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><path d="M 282.554 274.425 L 341.554 274.425 C 346.52457 274.425 350.554 278.45444 350.554 283.425 L 350.554 318.425 C 350.554 323.39557 346.52457 327.425 341.554 327.425 L 282.554 327.425 C 277.58344 327.425 273.554 323.39557 273.554 318.425 L 273.554 283.425 C 273.554 278.45444 277.58344 274.425 282.554 274.425 Z" fill="#93d9ff"/><path d="M 282.554 274.425 L 341.554 274.425 C 346.52457 274.425 350.554 278.45444 350.554 283.425 L 350.554 318.425 C 350.554 323.39557 346.52457 327.425 341.554 327.425 L 282.554 327.425 C 277.58344 327.425 273.554 323.39557 273.554 318.425 L 273.554 283.425 C 273.554 278.45444 277.58344 274.425 282.554 274.425 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(278.554 279.425)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.826172" y="11" textLength="25.347656">bar1</tspan></text><rect x="210.054" y="291.18696" width="48" height="13.6119385" fill="white"/><rect x="210.054" y="291.18696" width="48" height="13.6119385" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(215.054 292.49293)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="13.249756" y="9" textLength="11.500488">….</tspan></text><rect x="146.05401" y="291.18696" width="63.999992" height="13.6119385" fill="white"/><rect x="146.05401" y="291.18696" width="63.999992" height="13.6119385" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(151.05401 292.49293)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="23.249264" y="9" textLength="7.501465">...</tspan></text><rect x="210.054" y="277.57496" width="48" height="13.6119995" fill="white"/><rect x="210.054" y="277.57496" width="48" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(215.054 278.88096)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.993408" y="9" textLength="18.013184">bar2</tspan></text><rect x="146.05401" y="277.57496" width="63.999992" height="13.6119995" fill="white"/><rect x="146.05401" y="277.57496" width="63.999992" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(151.05401 278.88096)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="20.744381" y="9" textLength="12.5112305">foo</tspan></text><rect x="210.054" y="263.96296" width="48" height="13.6119995" fill="white"/><rect x="210.054" y="263.96296" width="48" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(215.054 265.26896)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.993408" y="9" textLength="18.013184">bar1</tspan></text><rect x="146.05401" y="263.96296" width="63.999992" height="13.6119995" fill="white"/><rect x="146.05401" y="263.96296" width="63.999992" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(151.05401 265.26896)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="20.744381" y="9" textLength="12.5112305">foo</tspan></text><rect x="210.054" y="250.35105" width="48" height="13.611908" fill="white"/><rect x="210.054" y="250.35105" width="48" height="13.611908" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(215.054 251.65701)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".4880371" y="9" textLength="37.023926">myqueue</tspan></text><rect x="146.05401" y="250.35105" width="63.999992" height="13.611908" fill="white"/><rect x="146.05401" y="250.35105" width="63.999992" height="13.611908" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(151.05401 251.65701)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="8.4880333" y="9" textLength="37.023926">myqueue</tspan></text><rect x="210.054" y="239.57501" width="48" height="10.776047" fill="white"/><rect x="210.054" y="239.57501" width="48" height="10.776047" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(215.054 239.46303)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x="5.748291" y="9" textLength="26.503418">queue</tspan></text><rect x="146.05401" y="239.57501" width="63.999992" height="10.776047" fill="white"/><rect x="146.05401" y="239.57501" width="63.999992" height="10.776047" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(151.05401 239.46303)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x=".74486923" y="9" textLength="52.510254">binding_key</tspan></text><path d="M 222.4567 320.96876 C 224.43994 326.31197 225.22727 333.49515 228.407 337 C 231.58674 340.50486 233.90403 344.3383 241.537 342 C 245.68743 340.72856 251.76463 337.0884 258.19681 333.01168" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><path d="M 282.554 337.349 L 341.554 337.349 C 346.52457 337.349 350.554 341.37844 350.554 346.349 L 350.554 381.349 C 350.554 386.31957 346.52457 390.349 341.554 390.349 L 282.554 390.349 C 277.58344 390.349 273.554 386.31957 273.554 381.349 L 273.554 346.349 C 273.554 341.37844 277.58344 337.349 282.554 337.349 Z" fill="#93d9ff"/><path d="M 282.554 337.349 L 341.554 337.349 C 346.52457 337.349 350.554 341.37844 350.554 346.349 L 350.554 381.349 C 350.554 386.31957 346.52457 390.349 341.554 390.349 L 282.554 390.349 C 277.58344 390.349 273.554 386.31957 273.554 381.349 L 273.554 346.349 C 273.554 341.37844 277.58344 337.349 282.554 337.349 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(278.554 342.349)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.826172" y="11" textLength="25.347656">bar2</tspan></text><path d="M 217.1713 320.98211 C 219.37232 328.98728 220.64087 338.99762 223.775 345 C 226.90914 351.00239 227.76532 354.44391 235.978 357 C 240.33458 358.35593 247.02521 358.89955 254.1924 359.2772" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><rect x="307.659" y="230.333" width="31.222" height="16.5076" fill="#ff9"/><rect x="307.659" y="230.333" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="309.078" y1="231.708" x2="316.174" y2="231.708" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="309.078" y1="233.084" x2="316.174" y2="233.084" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="309.078" y1="234.46" x2="316.174" y2="234.46" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="317.593" y1="238.587" x2="328.947" y2="238.587" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="317.593" y1="239.963" x2="328.947" y2="239.963" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="317.593" y1="241.339" x2="328.947" y2="241.339" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="334.623" y="231.708" width="2.83837" height="2.75126" fill="none"/><rect x="334.623" y="231.708" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="312.446" y="236.417" width="31.222" height="16.5076" fill="#ff9"/><rect x="312.446" y="236.417" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="313.865" y1="237.792" x2="320.961" y2="237.792" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="313.865" y1="239.168" x2="320.961" y2="239.168" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="313.865" y1="240.544" x2="320.961" y2="240.544" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="322.38" y1="244.67" x2="333.734" y2="244.67" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="322.38" y1="246.046" x2="333.734" y2="246.046" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="322.38" y1="247.422" x2="333.734" y2="247.422" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="339.41" y="237.792" width="2.83837" height="2.75126" fill="none"/><rect x="339.41" y="237.792" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="317.364" y="243.917" width="31.222" height="16.5076" fill="#ff9"/><rect x="317.364" y="243.917" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="318.783" y1="245.293" x2="325.879" y2="245.293" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="318.783" y1="246.668" x2="325.879" y2="246.668" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="318.783" y1="248.044" x2="325.879" y2="248.044" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="327.298" y1="252.171" x2="338.652" y2="252.171" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="327.298" y1="253.546" x2="338.652" y2="253.546" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="327.298" y1="254.922" x2="338.652" y2="254.922" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="344.328" y="245.293" width="2.83837" height="2.75126" fill="none"/><rect x="344.328" y="245.293" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="309.079" y="294.564" width="31.222" height="16.5076" fill="#ff0b22"/><rect x="309.079" y="294.564" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="310.498" y1="295.94" x2="317.594" y2="295.94" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="310.498" y1="297.316" x2="317.594" y2="297.316" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="310.498" y1="298.691" x2="317.594" y2="298.691" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="319.013" y1="302.818" x2="330.366" y2="302.818" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="319.013" y1="304.194" x2="330.366" y2="304.194" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="319.013" y1="305.569" x2="330.366" y2="305.569" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="336.043" y="295.94" width="2.83837" height="2.75126" fill="none"/><rect x="336.043" y="295.94" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="312.873" y="300.984" width="31.222" height="16.5076" fill="#ff0b22"/><rect x="312.873" y="300.984" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="314.292" y1="302.359" x2="321.388" y2="302.359" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="314.292" y1="303.736" x2="321.388" y2="303.736" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="314.292" y1="305.111" x2="321.388" y2="305.111" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="322.807" y1="309.238" x2="334.16" y2="309.238" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="322.807" y1="310.614" x2="334.16" y2="310.614" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="322.807" y1="311.989" x2="334.16" y2="311.989" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="339.837" y="302.359" width="2.83837" height="2.75126" fill="none"/><rect x="339.837" y="302.359" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="308.652" y="359.347" width="31.222" height="16.5076" fill="#ff0b22"/><rect x="308.652" y="359.347" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="310.071" y1="360.723" x2="317.167" y2="360.723" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="310.071" y1="362.099" x2="317.167" y2="362.099" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="310.071" y1="363.474" x2="317.167" y2="363.474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="318.586" y1="367.601" x2="329.939" y2="367.601" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="318.586" y1="368.977" x2="329.939" y2="368.977" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="318.586" y1="370.352" x2="329.939" y2="370.352" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="335.616" y="360.723" width="2.83837" height="2.75126" fill="none"/><rect x="335.616" y="360.723" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="312.446" y="365.767" width="31.222" height="16.5076" fill="#ff0b22"/><rect x="312.446" y="365.767" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="313.865" y1="367.142" x2="320.961" y2="367.142" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="313.865" y1="368.519" x2="320.961" y2="368.519" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="313.865" y1="369.894" x2="320.961" y2="369.894" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="322.38" y1="374.021" x2="333.733" y2="374.021" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="322.38" y1="375.397" x2="333.733" y2="375.397" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="322.38" y1="376.772" x2="333.733" y2="376.772" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="339.41" y="367.142" width="2.83837" height="2.75126" fill="none"/><rect x="339.41" y="367.142" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><text transform="translate(26.796997 79.00001)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="42.09546" y="9" textLength="88.80908">routing_key=myqueue</tspan></text><text transform="translate(202.031 79.00001)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="10.472812" y="9" textLength="64.296387">routing_key=foo</tspan></text><g id="id2284_Graphic"><path d="M 329.00702 107.000005 L 423.00702 107.000005 C 427.97758 107.000005 432.00702 111.02944 432.00702 116.000005 L 432.00702 136.000005 C 432.00702 140.97057 427.97758 145.000005 423.00702 145.000005 L 329.00702 145.000005 C 324.03645 145.000005 320.00702 140.97057 320.00702 136.000005 L 320.00702 116.000005 C 320.00702 111.02944 324.03645 107.000005 329.00702 107.000005 Z" fill="#acffa2"/><path d="M 329.00702 107.000005 L 423.00702 107.000005 C 427.97758 107.000005 432.00702 111.02944 432.00702 116.000005 L 432.00702 136.000005 C 432.00702 140.97057 427.97758 145.000005 423.00702 145.000005 L 329.00702 145.000005 C 324.03645 145.000005 320.00702 140.97057 320.00702 136.000005 L 320.00702 116.000005 C 320.00702 111.02944 324.03645 107.000005 329.00702 107.000005 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(325.00702 112.000005)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="64.68164">Producer C</tspan></text></g><text transform="translate(333.38602 79.00001)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.473056" y="9" textLength="66.2959">routing_key=qux</tspan></text><path d="M 348.5369 145.28732 C 342.97682 149.191155 347.46709 154.21483 331.855 157 C 316.24291 159.78517 271.83745 152.99187 254.855 162 C 243.4814 168.03298 239.89471 180.65409 236.27266 193.24423" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><path d="M 147.98082 145.24257 C 161.65251 152.82762 181.23191 161.374425 189 168 C 196.76809 174.62558 193.26267 177.8337 194.594 185 C 194.99444 187.15549 195.29843 189.58266 195.54949 192.1589" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><path d="M 240.89769 145.99098 C 240.38351 148.66039 243.08474 149.24897 239.355 154 C 235.62526 158.75103 223.08431 164.99963 218.517 174.5 C 216.17447 179.37265 215.08286 185.64978 214.27983 192.25062" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><rect x="393" y="96.08351" width="31.222" height="16.5076" fill="#0d46ff"/><rect x="393" y="96.08351" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="394.419" y1="97.45851" x2="401.515" y2="97.45851" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="394.419" y1="98.83451" x2="401.515" y2="98.83451" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="394.419" y1="100.20951" x2="401.515" y2="100.20951" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="402.934" y1="104.33651" x2="414.287" y2="104.33651" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.934" y1="105.71251" x2="414.287" y2="105.71251" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.934" y1="107.08751" x2="414.287" y2="107.08751" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="419.964" y="97.45851" width="2.83837" height="2.75126" fill="none"/><rect x="419.964" y="97.45851" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/></g></g></svg>
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Fanout.png b/qpid/doc/book/src/java-broker/images/Exchange-Fanout.png
deleted file mode 100644
index 1e7f8ca397..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Fanout.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Fanout.svg b/qpid/doc/book/src/java-broker/images/Exchange-Fanout.svg
deleted file mode 100644
index 2768886c48..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Fanout.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.
-
--->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="139 112 321 304" width="321pt" height="304pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2013-10-01 22:37Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="3.488"/><feOffset in="blur" result="offset" dx="0" dy="4"/><feFlood flood-color="black" flood-opacity=".75" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black"><g><path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 5</title><g><title>Layer 1</title><g><use xl:href="#id2069_Graphic" filter="url(#Shadow)"/><use xl:href="#id2082_Graphic" filter="url(#Shadow)"/><use xl:href="#id2083_Graphic" filter="url(#Shadow)"/><use xl:href="#id2120_Graphic" filter="url(#Shadow)"/><use xl:href="#id2158_Graphic" filter="url(#Shadow)"/><use xl:href="#id2196_Graphic" filter="url(#Shadow)"/></g><g id="id2069_Graphic"><path d="M 170.145 132 L 431 132 C 435.97056 132 440 136.02944 440 141 L 440 161 C 440 165.97056 435.97056 170 431 170 L 170.145 170 C 165.17444 170 161.145 165.97056 161.145 161 L 161.145 141 C 161.145 136.02944 165.17444 132 170.145 132 Z" fill="#acffa2"/><path d="M 170.145 132 L 431 132 C 435.97056 132 440 136.02944 440 141 L 440 161 C 440 165.97056 435.97056 170 431 170 L 170.145 170 C 165.17444 170 161.145 165.97056 161.145 161 L 161.145 141 C 161.145 136.02944 165.17444 132 170.145 132 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(166.145 137)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="52.68164">Producer</tspan></text></g><g id="id2082_Graphic"><path d="M 168 191.924 L 431 191.924 C 435.97056 191.924 440 195.95344 440 200.924 L 440 383 C 440 387.97056 435.97056 392 431 392 L 168 392 C 163.02944 392 159 387.97056 159 383 L 159 200.924 C 159 195.95344 163.02944 191.924 168 191.924 Z" fill="#78caff"/><path d="M 168 191.924 L 431 191.924 C 435.97056 191.924 440 195.95344 440 200.924 L 440 383 C 440 387.97056 435.97056 392 431 392 L 168 392 C 163.02944 392 159 387.97056 159 383 L 159 200.924 C 159 195.95344 163.02944 191.924 168 191.924 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(164 196.924)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="69.345703">Qpid Broker</tspan></text></g><g id="id2083_Graphic"><path d="M 175.42 240.5 L 312.5 240.5 C 317.47056 240.5 321.5 244.52944 321.5 249.5 L 321.5 269.5 C 321.5 274.47056 317.47056 278.5 312.5 278.5 L 175.42 278.5 C 170.44944 278.5 166.42 274.47056 166.42 269.5 L 166.42 249.5 C 166.42 244.52944 170.44944 240.5 175.42 240.5 Z" fill="#a788ff"/><path d="M 175.42 240.5 L 312.5 240.5 C 317.47056 240.5 321.5 244.52944 321.5 249.5 L 321.5 269.5 C 321.5 274.47056 317.47056 278.5 312.5 278.5 L 175.42 278.5 C 170.44944 278.5 166.42 274.47056 166.42 269.5 L 166.42 249.5 C 166.42 244.52944 170.44944 240.5 175.42 240.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(171.42 245.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="64.664062">amq.fanout</tspan></text></g><path d="M 280.99889 170.35153 C 276.90333 174.40062 273.73998 175.77393 268.711 182.5 C 263.68202 189.22607 254.4898 201.12881 250.822 210.712 C 249.50102 214.16344 248.77526 217.662 248.32317 221.18214" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2120_Graphic"><path d="M 364.92 200.5 L 423.92 200.5 C 428.89056 200.5 432.92 204.52944 432.92 209.5 L 432.92 244.5 C 432.92 249.47056 428.89056 253.5 423.92 253.5 L 364.92 253.5 C 359.94944 253.5 355.92 249.47056 355.92 244.5 L 355.92 209.5 C 355.92 204.52944 359.94944 200.5 364.92 200.5 Z" fill="#93d9ff"/><path d="M 364.92 200.5 L 423.92 200.5 C 428.89056 200.5 432.92 204.52944 432.92 209.5 L 432.92 244.5 C 432.92 249.47056 428.89056 253.5 423.92 253.5 L 364.92 253.5 C 359.94944 253.5 355.92 249.47056 355.92 244.5 L 355.92 209.5 C 355.92 204.52944 359.94944 200.5 364.92 200.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(360.92 205.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub1</tspan></text></g><path d="M 298.44469 240.33408 C 310.86446 235.96522 327.14095 230.28589 337.56869 226.59386" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2158_Graphic"><path d="M 364.92 262.848 L 423.92 262.848 C 428.89056 262.848 432.92 266.87744 432.92 271.848 L 432.92 306.848 C 432.92 311.81856 428.89056 315.848 423.92 315.848 L 364.92 315.848 C 359.94944 315.848 355.92 311.81856 355.92 306.848 L 355.92 271.848 C 355.92 266.87744 359.94944 262.848 364.92 262.848 Z" fill="#93d9ff"/><path d="M 364.92 262.848 L 423.92 262.848 C 428.89056 262.848 432.92 266.87744 432.92 271.848 L 432.92 306.848 C 432.92 311.81856 428.89056 315.848 423.92 315.848 L 364.92 315.848 C 359.94944 315.848 355.92 311.81856 355.92 306.848 L 355.92 271.848 C 355.92 266.87744 359.94944 262.848 364.92 262.848 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(360.92 267.848)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub2</tspan></text></g><path d="M 295.42725 278.67456 C 308.7835 283.65054 326.71209 291.09168 335.5 293.604 C 335.857 293.70606 336.20043 293.80022 336.53099 293.88695" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2196_Graphic"><path d="M 364.92 325.196 L 423.92 325.196 C 428.89056 325.196 432.92 329.22544 432.92 334.196 L 432.92 369.196 C 432.92 374.16656 428.89056 378.196 423.92 378.196 L 364.92 378.196 C 359.94944 378.196 355.92 374.16656 355.92 369.196 L 355.92 334.196 C 355.92 329.22544 359.94944 325.196 364.92 325.196 Z" fill="#93d9ff"/><path d="M 364.92 325.196 L 423.92 325.196 C 428.89056 325.196 432.92 329.22544 432.92 334.196 L 432.92 369.196 C 432.92 374.16656 428.89056 378.196 423.92 378.196 L 364.92 378.196 C 359.94944 378.196 355.92 374.16656 355.92 369.196 L 355.92 334.196 C 355.92 329.22544 359.94944 325.196 364.92 325.196 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(360.92 330.196)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub3</tspan></text></g><path d="M 266.10958 278.82875 C 290.2373 299.88373 323.68641 329.52704 338.5 342 C 338.934 342.36542 339.3543 342.71778 339.76141 343.05758" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><rect x="293.017" y="123" width="31.222" height="16.5076" fill="#ee0026"/><rect x="293.017" y="123" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="294.436" y1="124.376" x2="301.532" y2="124.376" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="294.436" y1="125.752" x2="301.532" y2="125.752" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="294.436" y1="127.127" x2="301.532" y2="127.127" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="302.951" y1="131.254" x2="314.305" y2="131.254" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="302.951" y1="132.63" x2="314.305" y2="132.63" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="302.951" y1="134.005" x2="314.305" y2="134.005" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="319.981" y="124.376" width="2.83837" height="2.75126" fill="none"/><rect x="319.981" y="124.376" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="283.295" y="128.508" width="31.222" height="16.5076" fill="#17ee07"/><rect x="283.295" y="128.508" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="284.715" y1="129.884" x2="291.811" y2="129.884" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="284.715" y1="131.26" x2="291.811" y2="131.26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="284.715" y1="132.635" x2="291.811" y2="132.635" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="293.23" y1="136.762" x2="304.583" y2="136.762" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="293.23" y1="138.138" x2="304.583" y2="138.138" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="293.23" y1="139.513" x2="304.583" y2="139.513" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="310.26" y="129.884" width="2.83837" height="2.75126" fill="none"/><rect x="310.26" y="129.884" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="276.906" y="133.722" width="31.222" height="16.5076" fill="#ff9"/><rect x="276.906" y="133.722" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="278.325" y1="135.098" x2="285.421" y2="135.098" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="278.325" y1="136.474" x2="285.421" y2="136.474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="278.325" y1="137.849" x2="285.421" y2="137.849" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="286.84" y1="141.976" x2="298.193" y2="141.976" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="286.84" y1="143.352" x2="298.193" y2="143.352" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="286.84" y1="144.727" x2="298.193" y2="144.727" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="303.87" y="135.098" width="2.83837" height="2.75126" fill="none"/><rect x="303.87" y="135.098" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="392.111" y="217.97" width="31.222" height="16.5076" fill="#ee0026"/><rect x="392.111" y="217.97" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="393.53" y1="219.346" x2="400.626" y2="219.346" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.53" y1="220.722" x2="400.626" y2="220.722" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.53" y1="222.097" x2="400.626" y2="222.097" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="402.045" y1="226.224" x2="413.399" y2="226.224" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.045" y1="227.6" x2="413.399" y2="227.6" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.045" y1="228.975" x2="413.399" y2="228.975" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="419.075" y="219.346" width="2.83837" height="2.75126" fill="none"/><rect x="419.075" y="219.346" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="382.389" y="223.477" width="31.222" height="16.5076" fill="#17ee07"/><rect x="382.389" y="223.477" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="383.809" y1="224.853" x2="390.905" y2="224.853" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="383.809" y1="226.229" x2="390.905" y2="226.229" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="383.809" y1="227.604" x2="390.905" y2="227.604" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="392.324" y1="231.731" x2="403.677" y2="231.731" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="392.324" y1="233.107" x2="403.677" y2="233.107" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="392.324" y1="234.482" x2="403.677" y2="234.482" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="409.354" y="224.853" width="2.83837" height="2.75126" fill="none"/><rect x="409.354" y="224.853" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="376" y="228.691" width="31.222" height="16.5076" fill="#ff9"/><rect x="376" y="228.691" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="377.419" y1="230.067" x2="384.515" y2="230.067" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="377.419" y1="231.443" x2="384.515" y2="231.443" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="377.419" y1="232.818" x2="384.515" y2="232.818" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="385.934" y1="236.945" x2="397.287" y2="236.945" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="385.934" y1="238.321" x2="397.287" y2="238.321" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="385.934" y1="239.696" x2="397.287" y2="239.696" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="402.964" y="230.067" width="2.83837" height="2.75126" fill="none"/><rect x="402.964" y="230.067" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="392.111" y="284" width="31.222" height="16.5076" fill="#ee0026"/><rect x="392.111" y="284" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="393.53" y1="285.376" x2="400.626" y2="285.376" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.53" y1="286.752" x2="400.626" y2="286.752" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.53" y1="288.127" x2="400.626" y2="288.127" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="402.045" y1="292.254" x2="413.399" y2="292.254" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.045" y1="293.63" x2="413.399" y2="293.63" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.045" y1="295.005" x2="413.399" y2="295.005" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="419.075" y="285.376" width="2.83837" height="2.75126" fill="none"/><rect x="419.075" y="285.376" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="382.389" y="289.507" width="31.222" height="16.5076" fill="#17ee07"/><rect x="382.389" y="289.507" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="383.809" y1="290.883" x2="390.905" y2="290.883" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="383.809" y1="292.259" x2="390.905" y2="292.259" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="383.809" y1="293.634" x2="390.905" y2="293.634" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="392.324" y1="297.761" x2="403.677" y2="297.761" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="392.324" y1="299.137" x2="403.677" y2="299.137" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="392.324" y1="300.512" x2="403.677" y2="300.512" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="409.354" y="290.883" width="2.83837" height="2.75126" fill="none"/><rect x="409.354" y="290.883" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="376" y="294.721" width="31.222" height="16.5076" fill="#ff9"/><rect x="376" y="294.721" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="377.419" y1="296.097" x2="384.515" y2="296.097" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="377.419" y1="297.473" x2="384.515" y2="297.473" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="377.419" y1="298.848" x2="384.515" y2="298.848" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="385.934" y1="302.975" x2="397.287" y2="302.975" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="385.934" y1="304.351" x2="397.287" y2="304.351" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="385.934" y1="305.726" x2="397.287" y2="305.726" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="402.964" y="296.097" width="2.83837" height="2.75126" fill="none"/><rect x="402.964" y="296.097" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="392.111" y="344.523" width="31.222" height="16.5076" fill="#ee0026"/><rect x="392.111" y="344.523" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="393.53" y1="345.899" x2="400.626" y2="345.899" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.53" y1="347.275" x2="400.626" y2="347.275" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.53" y1="348.65" x2="400.626" y2="348.65" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="402.045" y1="352.777" x2="413.399" y2="352.777" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.045" y1="354.153" x2="413.399" y2="354.153" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.045" y1="355.528" x2="413.399" y2="355.528" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="419.075" y="345.899" width="2.83837" height="2.75126" fill="none"/><rect x="419.075" y="345.899" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="382.389" y="350.03" width="31.222" height="16.5076" fill="#17ee07"/><rect x="382.389" y="350.03" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="383.809" y1="351.406" x2="390.905" y2="351.406" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="383.809" y1="352.782" x2="390.905" y2="352.782" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="383.809" y1="354.157" x2="390.905" y2="354.157" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="392.324" y1="358.284" x2="403.677" y2="358.284" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="392.324" y1="359.66" x2="403.677" y2="359.66" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="392.324" y1="361.035" x2="403.677" y2="361.035" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="409.354" y="351.406" width="2.83837" height="2.75126" fill="none"/><rect x="409.354" y="351.406" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="376" y="355.244" width="31.222" height="16.5076" fill="#ff9"/><rect x="376" y="355.244" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="377.419" y1="356.62" x2="384.515" y2="356.62" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="377.419" y1="357.996" x2="384.515" y2="357.996" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="377.419" y1="359.371" x2="384.515" y2="359.371" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="385.934" y1="363.498" x2="397.287" y2="363.498" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="385.934" y1="364.874" x2="397.287" y2="364.874" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="385.934" y1="366.249" x2="397.287" y2="366.249" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="402.964" y="356.62" width="2.83837" height="2.75126" fill="none"/><rect x="402.964" y="356.62" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/></g></g></svg>
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.png b/qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.png
deleted file mode 100644
index faa7507dad..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.svg b/qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.svg
deleted file mode 100644
index 28ac5a072b..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Topic-Hierarchical.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.
-
--->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="52 209 464 364" width="464pt" height="364pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2013-10-01 22:37Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="3.488"/><feOffset in="blur" result="offset" dx="0" dy="4"/><feFlood flood-color="black" flood-opacity=".75" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1333.3334" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black"><g><path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 3</title><g><title>Layer 1</title><g><use xl:href="#id2069_Graphic" filter="url(#Shadow)"/><use xl:href="#id2082_Graphic" filter="url(#Shadow)"/><use xl:href="#id2083_Graphic" filter="url(#Shadow)"/><use xl:href="#id2120_Graphic" filter="url(#Shadow)"/><use xl:href="#id2158_Graphic" filter="url(#Shadow)"/><use xl:href="#id2196_Graphic" filter="url(#Shadow)"/><use xl:href="#id2235_Graphic" filter="url(#Shadow)"/><use xl:href="#id2236_Graphic" filter="url(#Shadow)"/><use xl:href="#id2237_Graphic" filter="url(#Shadow)"/></g><g id="id2069_Graphic"><path d="M 81.699857 247.80647 L 163.69994 247.80647 C 168.6705 247.80647 172.69994 251.83591 172.69994 256.80647 L 172.69994 276.80647 C 172.69994 281.77704 168.6705 285.80647 163.69994 285.80647 L 81.699857 285.80647 C 76.729294 285.80647 72.699857 281.77704 72.699857 276.80647 L 72.699857 256.80647 C 72.699857 251.83591 76.729294 247.80647 81.699857 247.80647 Z" fill="#acffa2"/><path d="M 81.699857 247.80647 L 163.69994 247.80647 C 168.6705 247.80647 172.69994 251.83591 172.69994 256.80647 L 172.69994 276.80647 C 172.69994 281.77704 168.6705 285.80647 163.69994 285.80647 L 81.699857 285.80647 C 76.729294 285.80647 72.699857 281.77704 72.699857 276.80647 L 72.699857 256.80647 C 72.699857 251.83591 76.729294 247.80647 81.699857 247.80647 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(77.699857 252.80647)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="56.015625">Producer </tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="55.576172" y="11" textLength="8.6660156">A</tspan></text></g><g id="id2082_Graphic"><path d="M 170.34993 308.80649 L 389.34993 308.80649 C 394.3205 308.80649 398.34993 312.83592 398.34993 317.80649 L 398.34993 539.7315 C 398.34993 544.70205 394.3205 548.7315 389.34993 548.7315 L 170.34993 548.7315 C 165.37937 548.7315 161.34993 544.70205 161.34993 539.7315 L 161.34993 317.80649 C 161.34993 312.83592 165.37937 308.80649 170.34993 308.80649 Z" fill="#78caff"/><path d="M 170.34993 308.80649 L 389.34993 308.80649 C 394.3205 308.80649 398.34993 312.83592 398.34993 317.80649 L 398.34993 539.7315 C 398.34993 544.70205 394.3205 548.7315 389.34993 548.7315 L 170.34993 548.7315 C 165.37937 548.7315 161.34993 544.70205 161.34993 539.7315 L 161.34993 317.80649 C 161.34993 312.83592 165.37937 308.80649 170.34993 308.80649 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(166.34993 313.80649)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="69.345703">Qpid Broker</tspan></text></g><g id="id2083_Graphic"><path d="M 178.70493 355.91948 L 285.70493 355.91948 C 290.67549 355.91948 294.70493 359.94892 294.70493 364.91948 L 294.70493 432.91948 C 294.70493 437.89005 290.67549 441.91948 285.70493 441.91948 L 178.70493 441.91948 C 173.73437 441.91948 169.70493 437.89005 169.70493 432.91948 L 169.70493 364.91948 C 169.70493 359.94892 173.73437 355.91948 178.70493 355.91948 Z" fill="#a788ff"/><path d="M 178.70493 355.91948 L 285.70493 355.91948 C 290.67549 355.91948 294.70493 359.94892 294.70493 364.91948 L 294.70493 432.91948 C 294.70493 437.89005 290.67549 441.91948 285.70493 441.91948 L 178.70493 441.91948 C 173.73437 441.91948 169.70493 437.89005 169.70493 432.91948 L 169.70493 364.91948 C 169.70493 359.94892 173.73437 355.91948 178.70493 355.91948 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(174.70493 360.91948)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="56.671875">amq.topic</tspan></text></g><rect x="176.20493" y="419.31606" width="64" height="13.6119995" fill="white"/><rect x="176.20493" y="419.31606" width="64" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(181.20493 420.62206)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="19.24585" y="9" textLength="15.508301">*.uk</tspan></text><rect x="240.20493" y="419.31606" width="48.000015" height="13.6119995" fill="white"/><rect x="240.20493" y="419.31606" width="48.000015" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(245.20493 420.62206)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.241951" y="9" textLength="19.516113">sub3</tspan></text><rect x="240.20493" y="405.70406" width="48.000015" height="13.6119995" fill="white"/><rect x="240.20493" y="405.70406" width="48.000015" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(245.20493 407.01006)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.241951" y="9" textLength="19.516113">sub2</tspan></text><rect x="176.20493" y="405.70406" width="64" height="13.6119995" fill="white"/><rect x="176.20493" y="405.70406" width="64" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(181.20493 407.01006)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="10.4919434" y="9" textLength="33.016113">news.uk</tspan></text><rect x="240.20493" y="392.09218" width="48.000015" height="13.6118774" fill="white"/><rect x="240.20493" y="392.09218" width="48.000015" height="13.6118774" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(245.20493 393.39812)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.241951" y="9" textLength="19.516113">sub1</tspan></text><rect x="176.20493" y="392.09218" width="64" height="13.6118774" fill="white"/><rect x="176.20493" y="392.09218" width="64" height="13.6118774" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(181.20493 393.39812)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="12.741943" y="9" textLength="28.516113">news.#</tspan></text><rect x="240.20493" y="381.31612" width="48.000015" height="10.776062" fill="white"/><rect x="240.20493" y="381.31612" width="48.000015" height="10.776062" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(245.20493 381.20415)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x="5.7482986" y="9" textLength="26.503418">queue</tspan></text><rect x="176.20493" y="381.31612" width="64" height="10.776062" fill="white"/><rect x="176.20493" y="381.31612" width="64" height="10.776062" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(181.20493 381.20415)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x=".74487305" y="9" textLength="52.510254">binding_key</tspan></text><path d="M 153.46981 286.07181 C 161.04743 290.81623 166.92217 293.43473 176.20493 300.30649 C 185.48769 307.17824 202.16984 318.1179 209.17193 327.30649 C 211.60625 330.50095 213.07719 333.74156 214.08712 337.0042" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2120_Graphic"><path d="M 323.26993 354.34449 L 382.26993 354.34449 C 387.2405 354.34449 391.26993 358.37392 391.26993 363.34449 L 391.26993 398.34449 C 391.26993 403.31505 387.2405 407.34449 382.26993 407.34449 L 323.26993 407.34449 C 318.29937 407.34449 314.26993 403.31505 314.26993 398.34449 L 314.26993 363.34449 C 314.26993 358.37392 318.29937 354.34449 323.26993 354.34449 Z" fill="#93d9ff"/><path d="M 323.26993 354.34449 L 382.26993 354.34449 C 387.2405 354.34449 391.26993 358.37392 391.26993 363.34449 L 391.26993 398.34449 C 391.26993 403.31505 387.2405 407.34449 382.26993 407.34449 L 323.26993 407.34449 C 318.29937 407.34449 314.26993 403.31505 314.26993 398.34449 L 314.26993 363.34449 C 314.26993 358.37392 318.29937 354.34449 323.26993 354.34449 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(319.26993 359.34449)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub1</tspan></text></g><path d="M 283.20617 355.59578 C 289.20516 350.49986 296.27813 343.43139 301.20493 340.30649 C 306.13173 337.18158 308.24742 334.5667 312.76993 336.84449 C 313.84402 337.38546 314.99355 338.31366 316.19163 339.49113" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2158_Graphic"><path d="M 323.26993 417.26849 L 382.26993 417.26849 C 387.2405 417.26849 391.26993 421.29792 391.26993 426.26849 L 391.26993 461.26849 C 391.26993 466.23905 387.2405 470.2685 382.26993 470.2685 L 323.26993 470.2685 C 318.29937 470.2685 314.26993 466.23905 314.26993 461.26849 L 314.26993 426.26849 C 314.26993 421.29792 318.29937 417.26849 323.26993 417.26849 Z" fill="#93d9ff"/><path d="M 323.26993 417.26849 L 382.26993 417.26849 C 387.2405 417.26849 391.26993 421.29792 391.26993 426.26849 L 391.26993 461.26849 C 391.26993 466.23905 387.2405 470.2685 382.26993 470.2685 L 323.26993 470.2685 C 318.29937 470.2685 314.26993 466.23905 314.26993 461.26849 L 314.26993 426.26849 C 314.26993 421.29792 318.29937 417.26849 323.26993 417.26849 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(319.26993 422.26849)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub2</tspan></text></g><path d="M 295.20184 391.88853 C 299.9174 391.36223 302.1593 387.06715 309.34993 390.30949 C 313.65869 392.25235 321.3357 397.83387 327.92422 402.946" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2196_Graphic"><path d="M 323.26993 480.1935 L 382.26993 480.1935 C 387.2405 480.1935 391.26993 484.22292 391.26993 489.1935 L 391.26993 524.1935 C 391.26993 529.16405 387.2405 533.1935 382.26993 533.1935 L 323.26993 533.1935 C 318.29937 533.1935 314.26993 529.16405 314.26993 524.1935 L 314.26993 489.1935 C 314.26993 484.22292 318.29937 480.1935 323.26993 480.1935 Z" fill="#93d9ff"/><path d="M 323.26993 480.1935 L 382.26993 480.1935 C 387.2405 480.1935 391.26993 484.22292 391.26993 489.1935 L 391.26993 524.1935 C 391.26993 529.16405 387.2405 533.1935 382.26993 533.1935 L 323.26993 533.1935 C 318.29937 533.1935 314.26993 529.16405 314.26993 524.1935 L 314.26993 489.1935 C 314.26993 484.22292 318.29937 480.1935 323.26993 480.1935 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(319.26993 485.1935)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub3</tspan></text></g><path d="M 272.52525 442.28566 C 276.13311 446.16607 278.5463 451.01454 283.34993 453.92806 C 288.15356 456.84157 294.6819 455.44752 301.34993 459.76849 C 303.9937 461.48168 306.84803 463.9417 309.78764 466.7043" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2235_Graphic"><path d="M 190.46685 247.91247 L 272.46693 247.91247 C 277.4375 247.91247 281.46693 251.94191 281.46693 256.91247 L 281.46693 276.91247 C 281.46693 281.88304 277.4375 285.91247 272.46693 285.91247 L 190.46685 285.91247 C 185.49629 285.91247 181.46685 281.88304 181.46685 276.91247 L 181.46685 256.91247 C 181.46685 251.94191 185.49629 247.91247 190.46685 247.91247 Z" fill="#acffa2"/><path d="M 190.46685 247.91247 L 272.46693 247.91247 C 277.4375 247.91247 281.46693 251.94191 281.46693 256.91247 L 281.46693 276.91247 C 281.46693 281.88304 277.4375 285.91247 272.46693 285.91247 L 190.46685 285.91247 C 185.49629 285.91247 181.46685 281.88304 181.46685 276.91247 L 181.46685 256.91247 C 181.46685 251.94191 185.49629 247.91247 190.46685 247.91247 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(186.46685 252.91247)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="64.68164">Producer B</tspan></text></g><g id="id2236_Graphic"><path d="M 296.99493 247.80649 L 378.99501 247.80649 C 383.96558 247.80649 387.99501 251.83592 387.99501 256.80649 L 387.99501 276.80649 C 387.99501 281.77705 383.96558 285.80649 378.99501 285.80649 L 296.99493 285.80649 C 292.02437 285.80649 287.99493 281.77705 287.99493 276.80649 L 287.99493 256.80649 C 287.99493 251.83592 292.02437 247.80649 296.99493 247.80649 Z" fill="#acffa2"/><path d="M 296.99493 247.80649 L 378.99501 247.80649 C 383.96558 247.80649 387.99501 251.83592 387.99501 256.80649 L 387.99501 276.80649 C 387.99501 281.77705 383.96558 285.80649 378.99501 285.80649 L 296.99493 285.80649 C 292.02437 285.80649 287.99493 281.77705 287.99493 276.80649 L 287.99493 256.80649 C 287.99493 251.83592 292.02437 247.80649 296.99493 247.80649 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(292.99493 252.80649)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="64.68164">Producer C</tspan></text></g><rect x="107.088896" y="232.4977" width="31.222" height="16.5076" fill="#ee0026"/><rect x="107.088896" y="232.4977" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="108.507896" y1="233.8737" x2="115.603896" y2="233.8737" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="108.507896" y1="235.2497" x2="115.603896" y2="235.2497" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="108.507896" y1="236.6247" x2="115.603896" y2="236.6247" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="117.022896" y1="240.7517" x2="128.3769" y2="240.7517" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="117.022896" y1="242.1277" x2="128.3769" y2="242.1277" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="117.022896" y1="243.5027" x2="128.3769" y2="243.5027" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="134.0529" y="233.8737" width="2.83837" height="2.75126" fill="none"/><rect x="134.0529" y="233.8737" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><g id="id2237_Graphic"><path d="M 404.967 247.91247 L 486.96707 247.91247 C 491.93764 247.91247 495.96707 251.94191 495.96707 256.91247 L 495.96707 276.91247 C 495.96707 281.88304 491.93764 285.91247 486.96707 285.91247 L 404.967 285.91247 C 399.99643 285.91247 395.967 281.88304 395.967 276.91247 L 395.967 256.91247 C 395.967 251.94191 399.99643 247.91247 404.967 247.91247 Z" fill="#acffa2"/><path d="M 404.967 247.91247 L 486.96707 247.91247 C 491.93764 247.91247 495.96707 251.94191 495.96707 256.91247 L 495.96707 276.91247 C 495.96707 281.88304 491.93764 285.91247 486.96707 285.91247 L 404.967 285.91247 C 399.99643 285.91247 395.967 281.88304 395.967 276.91247 L 395.967 256.91247 C 395.967 251.94191 399.99643 247.91247 404.967 247.91247 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(400.967 252.91247)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="64.68164">Producer D</tspan></text></g><text transform="translate(81.111363 218.61297)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".099365234" y="9" textLength="84.80127">routing_key=news.uk</tspan></text><text transform="translate(189.37836 218.61297)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".34667969" y="9" textLength="85.30664">routing_key=news.de</tspan></text><text transform="translate(292.90649 218.61297)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".3413086" y="9" textLength="83.80371">routing_key=weather</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="83.65283" y="9" textLength="12.0058594">.uk</tspan></text><text transform="translate(398.87849 218.61297)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".088623047" y="9" textLength="83.80371">routing_key=weather</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="83.400146" y="9" textLength="12.5112305">.de</tspan></text><rect x="215.85588" y="232.4977" width="31.222" height="16.5076" fill="#17ee07"/><rect x="215.85588" y="232.4977" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="217.27588" y1="233.8737" x2="224.37188" y2="233.8737" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="217.27588" y1="235.2497" x2="224.37188" y2="235.2497" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="217.27588" y1="236.6247" x2="224.37188" y2="236.6247" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="225.79088" y1="240.7517" x2="237.14388" y2="240.7517" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="225.79088" y1="242.1277" x2="237.14388" y2="242.1277" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="225.79088" y1="243.5027" x2="237.14388" y2="243.5027" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="242.82088" y="233.8737" width="2.83837" height="2.75126" fill="none"/><rect x="242.82088" y="233.8737" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="322.38399" y="234.99617" width="31.222" height="16.5076" fill="#151fee"/><rect x="322.38399" y="234.99617" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="323.80299" y1="236.37217" x2="330.89899" y2="236.37217" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="323.80299" y1="237.74817" x2="330.89899" y2="237.74817" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="323.80299" y1="239.12317" x2="330.89899" y2="239.12317" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="332.31799" y1="243.25017" x2="343.67199" y2="243.25017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="332.31799" y1="244.62617" x2="343.67199" y2="244.62617" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="332.31799" y1="246.00117" x2="343.67199" y2="246.00117" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="349.34799" y="236.37217" width="2.83837" height="2.75126" fill="none"/><rect x="349.34799" y="236.37217" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="430.35602" y="233.30401" width="31.222" height="16.5076" fill="#ff9"/><rect x="430.35602" y="233.30401" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="431.77502" y1="234.68001" x2="438.87102" y2="234.68001" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="431.77502" y1="236.056" x2="438.87102" y2="236.056" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="431.77502" y1="237.431" x2="438.87102" y2="237.431" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="440.29002" y1="241.558" x2="451.64302" y2="241.558" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="440.29002" y1="242.934" x2="451.64302" y2="242.934" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="440.29002" y1="244.309" x2="451.64302" y2="244.309" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="457.32002" y="234.68001" width="2.83837" height="2.75126" fill="none"/><rect x="457.32002" y="234.68001" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><path d="M 238.00501 286.38647 C 239.78647 291.69261 242.7925 295.82047 243.34993 302.30649 C 243.90736 308.7925 242.30674 316.45457 241.34993 325.30649 C 240.97244 328.79884 240.50454 332.66089 239.99976 336.67375" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><path d="M 321.99586 286.19211 C 317.01305 292.22963 315.81937 297.62143 307.04593 304.30649 C 298.27248 310.99155 278.11851 317.77936 269.34993 326.30649 C 265.69521 329.86056 263.35894 333.83017 261.51688 337.95542" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><path d="M 402.4166 285.86763 C 389.06238 291.68 380.30008 296.0674 362.34993 303.30649 C 344.39978 310.54557 309.90419 320.60053 294.70493 329.30649 C 288.48867 332.86708 284.7298 336.44155 281.92084 340.0213" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><rect x="349.73893" y="379.80949" width="31.222" height="16.5076" fill="#17ee07"/><rect x="349.73893" y="379.80949" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="351.15893" y1="381.18549" x2="358.25493" y2="381.18549" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="351.15893" y1="382.56149" x2="358.25493" y2="382.56149" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="351.15893" y1="383.93649" x2="358.25493" y2="383.93649" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="359.67393" y1="388.06349" x2="371.02693" y2="388.06349" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="359.67393" y1="389.43949" x2="371.02693" y2="389.43949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="359.67393" y1="390.81449" x2="371.02693" y2="390.81449" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="376.70393" y="381.18549" width="2.83837" height="2.75126" fill="none"/><rect x="376.70393" y="381.18549" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="355.41593" y="386.30949" width="31.222" height="16.5076" fill="#ee0026"/><rect x="355.41593" y="386.30949" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="356.83493" y1="387.68549" x2="363.93093" y2="387.68549" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="356.83493" y1="389.06149" x2="363.93093" y2="389.06149" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="356.83493" y1="390.43649" x2="363.93093" y2="390.43649" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="365.34993" y1="394.56349" x2="376.70393" y2="394.56349" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.34993" y1="395.93949" x2="376.70393" y2="395.93949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.34993" y1="397.31449" x2="376.70393" y2="397.31449" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="382.37993" y="387.68549" width="2.83837" height="2.75126" fill="none"/><rect x="382.37993" y="387.68549" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="355.41593" y="441.28849" width="31.222" height="16.5076" fill="#ee0026"/><rect x="355.41593" y="441.28849" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="356.83493" y1="442.66449" x2="363.93093" y2="442.66449" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="356.83493" y1="444.04049" x2="363.93093" y2="444.04049" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="356.83493" y1="445.41549" x2="363.93093" y2="445.41549" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="365.34993" y1="449.54249" x2="376.70393" y2="449.54249" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.34993" y1="450.91849" x2="376.70393" y2="450.91849" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.34993" y1="452.29349" x2="376.70393" y2="452.29349" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="382.37993" y="442.66449" width="2.83837" height="2.75126" fill="none"/><rect x="382.37993" y="442.66449" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="349.73893" y="498.4395" width="31.222" height="16.5076" fill="#ee0026"/><rect x="349.73893" y="498.4395" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="351.15793" y1="499.8155" x2="358.25393" y2="499.8155" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="351.15793" y1="501.1915" x2="358.25393" y2="501.1915" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="351.15793" y1="502.5665" x2="358.25393" y2="502.5665" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="359.67293" y1="506.6935" x2="371.02693" y2="506.6935" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="359.67293" y1="508.0695" x2="371.02693" y2="508.0695" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="359.67293" y1="509.4445" x2="371.02693" y2="509.4445" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="376.70293" y="499.8155" width="2.83837" height="2.75126" fill="none"/><rect x="376.70293" y="499.8155" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="355.41593" y="505.8065" width="31.222" height="16.5076" fill="#151fee"/><rect x="355.41593" y="505.8065" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="356.83493" y1="507.1825" x2="363.93093" y2="507.1825" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="356.83493" y1="508.5585" x2="363.93093" y2="508.5585" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="356.83493" y1="509.9335" x2="363.93093" y2="509.9335" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="365.34993" y1="514.0605" x2="376.70393" y2="514.0605" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.34993" y1="515.4365" x2="376.70393" y2="515.4365" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.34993" y1="516.8115" x2="376.70393" y2="516.8115" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="382.37993" y="507.1825" width="2.83837" height="2.75126" fill="none"/><rect x="382.37993" y="507.1825" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/></g></g></svg>
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.png b/qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.png
deleted file mode 100644
index 7272949204..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.svg b/qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.svg
deleted file mode 100644
index 568761a18d..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Topic-JMSSelector.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.
-
--->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="100 43 404 422" width="404pt" height="422pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2013-10-01 22:37Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="3.488"/><feOffset in="blur" result="offset" dx="0" dy="4"/><feFlood flood-color="black" flood-opacity=".75" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1333.3334" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black"><g><path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 4</title><g><title>Layer 1</title><g><use xl:href="#id2069_Graphic" filter="url(#Shadow)"/><use xl:href="#id2082_Graphic" filter="url(#Shadow)"/><use xl:href="#id2083_Graphic" filter="url(#Shadow)"/><use xl:href="#id2120_Graphic" filter="url(#Shadow)"/><use xl:href="#id2158_Graphic" filter="url(#Shadow)"/><use xl:href="#id2196_Graphic" filter="url(#Shadow)"/><use xl:href="#id2711_Graphic" filter="url(#Shadow)"/></g><g id="id2069_Graphic"><path d="M 139 132 L 451.288 132 C 456.25856 132 460.288 136.02944 460.288 141 L 460.288 161 C 460.288 165.97056 456.25856 170 451.288 170 L 139 170 C 134.02944 170 130 165.97056 130 161 L 130 141 C 130 136.02944 134.02944 132 139 132 Z" fill="#acffa2"/><path d="M 139 132 L 451.288 132 C 456.25856 132 460.288 136.02944 460.288 141 L 460.288 161 C 460.288 165.97056 456.25856 170 451.288 170 L 139 170 C 134.02944 170 130 165.97056 130 161 L 130 141 C 130 136.02944 134.02944 132 139 132 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(135 137)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="52.68164">Producer</tspan></text></g><g id="id2082_Graphic"><path d="M 143.000015 185.848 L 451.288 185.848 C 456.25857 185.848 460.288 189.87744 460.288 194.848 L 460.288 431.424 C 460.288 436.39456 456.25857 440.424 451.288 440.424 L 143.000015 440.424 C 138.02945 440.424 134.000015 436.39456 134.000015 431.424 L 134.000015 194.848 C 134.000015 189.87744 138.02945 185.848 143.000015 185.848 Z" fill="#78caff"/><path d="M 143.000015 185.848 L 451.288 185.848 C 456.25857 185.848 460.288 189.87744 460.288 194.848 L 460.288 431.424 C 460.288 436.39456 456.25857 440.424 451.288 440.424 L 143.000015 440.424 C 138.02945 440.424 134.000015 436.39456 134.000015 431.424 L 134.000015 194.848 C 134.000015 189.87744 138.02945 185.848 143.000015 185.848 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(139.000015 190.848)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="69.345703">Qpid Broker</tspan></text></g><g id="id2083_Graphic"><path d="M 152.39604 234.424 L 312 234.424 C 316.97056 234.424 321 238.45344 321 243.424 L 321 409 C 321 413.97057 316.97056 418 312 418 L 152.39604 418 C 147.42548 418 143.39604 413.97057 143.39604 409 L 143.39604 243.424 C 143.39604 238.45344 147.42548 234.424 152.39604 234.424 Z" fill="#a788ff"/><path d="M 152.39604 234.424 L 312 234.424 C 316.97056 234.424 321 238.45344 321 243.424 L 321 409 C 321 413.97057 316.97056 418 312 418 L 152.39604 418 C 147.42548 418 143.39604 413.97057 143.39604 409 L 143.39604 243.424 C 143.39604 238.45344 147.42548 234.424 152.39604 234.424 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(148.39604 239.424)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="56.671875">amq.topic</tspan></text></g><rect x="149.727025" y="391.12524" width="49.897038" height="21.874771" fill="white"/><rect x="149.727025" y="391.12524" width="49.897038" height="21.874771" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(154.72703 396.56262)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="3.1855793" y="9" textLength="33.525879">shipping</tspan></text><rect x="239.35857" y="391.12524" width="72.732437" height="21.874771" fill="white"/><rect x="239.35857" y="391.12524" width="72.732437" height="21.874771" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.35857 396.56262)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="6.3437576" y="9" textLength="50.044922">speed &gt;= 10</tspan></text><rect x="199.62406" y="391.12523" width="39.734509" height="21.874771" fill="white"/><rect x="199.62406" y="391.12523" width="39.734509" height="21.874771" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.62406 391.06261)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.1145687" y="9" textLength="27.505371">storm_</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="6.113348" y="20" textLength="17.507812">alert</tspan></text><rect x="239.35857" y="353.12523" width="72.732437" height="37.999992" fill="white"/><rect x="239.35857" y="353.12523" width="72.732437" height="37.999992" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.35857 361.12523)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="2.7160721" y="9" textLength="59.80078">speed &gt; 7 and </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="8.9716873" y="20" textLength="44.789062">speed &lt; 10</tspan></text><rect x="239.35857" y="280" width="72.732437" height="35.125237" fill="white"/><rect x="239.35857" y="280" width="72.732437" height="35.125237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.35857 281.06262)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.606941" y="9" textLength="30.019043">area in </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="13.146492" y="20" textLength="38.939941">('Forties', </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.648445" y="31" textLength="43.435547">'Cromarty')</tspan></text><rect x="239.35857" y="315.12524" width="72.732437" height="38" fill="white"/><rect x="239.35857" y="315.12524" width="72.732437" height="38" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.35857 317.62524)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.606941" y="9" textLength="30.019043">area in </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="12.144539" y="20" textLength="40.943848">('Rockall', </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.396004" y="31" textLength="27.94043">'Malin')</tspan></text><rect x="239.35857" y="256.772" width="72.732437" height="23.227997" fill="white"/><rect x="239.35857" y="256.772" width="72.732437" height="23.227997" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(244.35857 262.886)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x="8.3608475" y="9" textLength="46.010742">arguments</tspan></text><rect x="149.727025" y="353.12523" width="49.897038" height="37.999992" fill="white"/><rect x="149.727025" y="353.12523" width="49.897038" height="37.999992" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(154.72703 366.62523)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="3.1855793" y="9" textLength="33.525879">shipping</tspan></text><rect x="199.62406" y="353.12523" width="39.734509" height="37.999992" fill="white"/><rect x="199.62406" y="353.12523" width="39.734509" height="37.999992" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.62406 361.12523)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="3.8567562" y="9" textLength="22.020996">gale_</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="6.113348" y="20" textLength="17.507812">alert</tspan></text><rect x="199.62406" y="315.12524" width="39.734509" height="38" fill="white"/><rect x="199.62406" y="315.12524" width="39.734509" height="38" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.62406 328.62524)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="5.1091976" y="9" textLength="19.516113">sub2</tspan></text><rect x="149.727025" y="315.12524" width="49.897038" height="38" fill="white"/><rect x="149.727025" y="315.12524" width="49.897038" height="38" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(154.72703 328.62524)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="3.1855793" y="9" textLength="33.525879">shipping</tspan></text><rect x="199.62406" y="280" width="39.734509" height="35.125237" fill="white"/><rect x="199.62406" y="280" width="39.734509" height="35.125237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.62406 292.06262)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="5.1091976" y="9" textLength="19.516113">sub1</tspan></text><rect x="149.727025" y="280" width="49.897038" height="35.125237" fill="white"/><rect x="149.727025" y="280" width="49.897038" height="35.125237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(154.72703 292.06262)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="3.1855793" y="9" textLength="33.525879">shipping</tspan></text><rect x="199.62406" y="256.772" width="39.734509" height="23.227997" fill="white"/><rect x="199.62406" y="256.772" width="39.734509" height="23.227997" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.62406 262.886)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x="1.6155453" y="9" textLength="26.503418">queue</tspan></text><rect x="149.727025" y="256.772" width="49.897038" height="23.227997" fill="white"/><rect x="149.727025" y="256.772" width="49.897038" height="23.227997" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(154.72703 257.386)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x="1.20144844" y="9" textLength="37.49414">binding_</tspan><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x="12.440462" y="20" textLength="15.016113">key</tspan></text><path d="M 272.37818 170.32356 C 269.9827 172.35684 269.36995 170.70583 265.19101 176.424 C 261.01207 182.14217 250.88966 195.05299 247.30201 204.636 C 246.0141 208.07615 245.33821 211.56306 244.94479 215.07148" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2120_Graphic"><path d="M 361.40001 194.424 L 420.4 194.424 C 425.37057 194.424 429.4 198.45344 429.4 203.424 L 429.4 238.424 C 429.4 243.39456 425.37057 247.424 420.4 247.424 L 361.40001 247.424 C 356.42945 247.424 352.40001 243.39456 352.40001 238.424 L 352.40001 203.424 C 352.40001 198.45344 356.42945 194.424 361.40001 194.424 Z" fill="#93d9ff"/><path d="M 361.40001 194.424 L 420.4 194.424 C 425.37057 194.424 429.4 198.45344 429.4 203.424 L 429.4 238.424 C 429.4 243.39456 425.37057 247.424 420.4 247.424 L 361.40001 247.424 C 356.42945 247.424 352.40001 243.39456 352.40001 238.424 L 352.40001 203.424 C 352.40001 198.45344 356.42945 194.424 361.40001 194.424 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.40001 199.424)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub1</tspan></text></g><path d="M 319.89446 238.15621 C 324.70855 233.3224 330.2482 227.10227 334.897 222.58499" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2158_Graphic"><path d="M 361.40001 256.772 L 420.4 256.772 C 425.37057 256.772 429.4 260.80144 429.4 265.772 L 429.4 300.772 C 429.4 305.74256 425.37057 309.772 420.4 309.772 L 361.40001 309.772 C 356.42945 309.772 352.40001 305.74256 352.40001 300.772 L 352.40001 265.772 C 352.40001 260.80144 356.42945 256.772 361.40001 256.772 Z" fill="#93d9ff"/><path d="M 361.40001 256.772 L 420.4 256.772 C 425.37057 256.772 429.4 260.80144 429.4 265.772 L 429.4 300.772 C 429.4 305.74256 425.37057 309.772 420.4 309.772 L 361.40001 309.772 C 356.42945 309.772 352.40001 305.74256 352.40001 300.772 L 352.40001 265.772 C 352.40001 260.80144 356.42945 256.772 361.40001 256.772 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.40001 261.772)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub2</tspan></text></g><path d="M 321.4662 291.60405 C 324.97045 290.2455 328.1181 288.18294 331.98001 287.528 C 332.3119 287.47172 332.65571 287.42685 333.00907 287.39181" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2196_Graphic"><path d="M 361.40001 319.12 L 420.4 319.12 C 425.37057 319.12 429.4 323.14944 429.4 328.12 L 429.4 363.12 C 429.4 368.09056 425.37057 372.12 420.4 372.12 L 361.40001 372.12 C 356.42945 372.12 352.40001 368.09056 352.40001 363.12 L 352.40001 328.12 C 352.40001 323.14944 356.42945 319.12 361.40001 319.12 Z" fill="#93d9ff"/><path d="M 361.40001 319.12 L 420.4 319.12 C 425.37057 319.12 429.4 323.14944 429.4 328.12 L 429.4 363.12 C 429.4 368.09056 425.37057 372.12 420.4 372.12 L 361.40001 372.12 C 356.42945 372.12 352.40001 368.09056 352.40001 363.12 L 352.40001 328.12 C 352.40001 323.14944 356.42945 319.12 361.40001 319.12 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.40001 324.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="5.4833984" y="11" textLength="56.033203">gale_alert</tspan></text></g><path d="M 321.49778 334.65005 C 325.9914 335.07466 329.98347 333.76622 334.98001 335.924 C 335.44844 336.1263 335.94927 336.37619 336.47464 336.66459" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><rect x="143.39604" y="111.60699" width="31.222" height="16.5076" fill="#ee0026"/><rect x="143.39604" y="111.60699" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="144.81504" y1="112.98299" x2="151.91104" y2="112.98299" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="144.81504" y1="114.35899" x2="151.91104" y2="114.35899" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="144.81504" y1="115.73399" x2="151.91104" y2="115.73399" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="153.33004" y1="119.86099" x2="164.68404" y2="119.86099" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="153.33004" y1="121.23699" x2="164.68404" y2="121.23699" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="153.33004" y1="122.61199" x2="164.68404" y2="122.61199" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="170.36004" y="112.98299" width="2.83837" height="2.75126" fill="none"/><rect x="170.36004" y="112.98299" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="214.53399" y="111.60699" width="31.222" height="16.5076" fill="#17ee07"/><rect x="214.53399" y="111.60699" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="215.95399" y1="112.98299" x2="223.04999" y2="112.98299" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="215.95399" y1="114.35899" x2="223.04999" y2="114.35899" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="215.95399" y1="115.73399" x2="223.04999" y2="115.73399" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="224.46899" y1="119.86099" x2="235.82199" y2="119.86099" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="224.46899" y1="121.23699" x2="235.82199" y2="121.23699" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="224.46899" y1="122.61199" x2="235.82199" y2="122.61199" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="241.49899" y="112.98299" width="2.83837" height="2.75126" fill="none"/><rect x="241.49899" y="112.98299" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="280.869" y="111.607" width="31.222" height="16.5076" fill="#151fee"/><rect x="280.869" y="111.607" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="282.288" y1="112.983" x2="289.384" y2="112.983" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="282.288" y1="114.359" x2="289.384" y2="114.359" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="282.288" y1="115.734" x2="289.384" y2="115.734" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="290.803" y1="119.861" x2="302.157" y2="119.861" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="290.803" y1="121.237" x2="302.157" y2="121.237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="290.803" y1="122.612" x2="302.157" y2="122.612" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="307.833" y="112.983" width="2.83837" height="2.75126" fill="none"/><rect x="307.833" y="112.983" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="355.61097" y="111.60699" width="31.222" height="16.5076" fill="#ff9"/><rect x="355.61097" y="111.60699" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="357.02997" y1="112.98299" x2="364.12597" y2="112.98299" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="357.02997" y1="114.35899" x2="364.12597" y2="114.35899" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="357.02997" y1="115.73399" x2="364.12597" y2="115.73399" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="365.54497" y1="119.86099" x2="376.89797" y2="119.86099" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.54497" y1="121.23699" x2="376.89797" y2="121.23699" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="365.54497" y1="122.61199" x2="376.89797" y2="122.61199" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="382.57497" y="112.98299" width="2.83837" height="2.75126" fill="none"/><rect x="382.57497" y="112.98299" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="385.98" y="281.028" width="31.222" height="16.5076" fill="#17ee07"/><rect x="385.98" y="281.028" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="387.4" y1="282.404" x2="394.496" y2="282.404" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="387.4" y1="283.78" x2="394.496" y2="283.78" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="387.4" y1="285.155" x2="394.496" y2="285.155" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="395.915" y1="289.282" x2="407.268" y2="289.282" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="395.915" y1="290.658" x2="407.268" y2="290.658" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="395.915" y1="292.033" x2="407.268" y2="292.033" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="412.945" y="282.404" width="2.83837" height="2.75126" fill="none"/><rect x="412.945" y="282.404" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="391.657" y="287.528" width="31.222" height="16.5076" fill="#ee0026"/><rect x="391.657" y="287.528" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="393.076" y1="288.904" x2="400.172" y2="288.904" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.076" y1="290.28" x2="400.172" y2="290.28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.076" y1="291.655" x2="400.172" y2="291.655" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="401.591" y1="295.782" x2="412.945" y2="295.782" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="401.591" y1="297.158" x2="412.945" y2="297.158" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="401.591" y1="298.533" x2="412.945" y2="298.533" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="418.621" y="288.904" width="2.83837" height="2.75126" fill="none"/><rect x="418.621" y="288.904" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><text transform="translate(109.50705 74.72158)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="16.138916" y="9" textLength="66.722168">{area = 'Rockall',</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="28.35791" y="20" textLength="42.28418">speed = 5,</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.898926" y="31" textLength="63.20215">visibility = 'Fair'}</tspan></text><text transform="translate(180.64499 74.72158)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="20.140137" y="9" textLength="58.719727">{area = 'Malin',</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="28.35791" y="20" textLength="42.28418">speed = 6,</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.898926" y="31" textLength="63.20215">visibility = 'Fair'}</tspan></text><text transform="translate(250 74.7216)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.140869" y="9" textLength="64.71826">{area = 'Forties',</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="28.35791" y="20" textLength="42.28418">speed = 7,</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="16.143311" y="31" textLength="66.71338">visibility = 'Poor'}</tspan></text><text transform="translate(321.72198 74.7216)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="12.392578" y="9" textLength="74.214844">{area = 'Cromarty',</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="28.35791" y="20" textLength="42.28418">speed = 8,</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="16.143311" y="31" textLength="66.71338">visibility = 'Poor'}</tspan></text><rect x="385.98" y="215.22" width="31.222" height="16.5076" fill="#151fee"/><rect x="385.98" y="215.22" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="387.399" y1="216.596" x2="394.495" y2="216.596" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="387.399" y1="217.972" x2="394.495" y2="217.972" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="387.399" y1="219.347" x2="394.495" y2="219.347" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="395.914" y1="223.474" x2="407.268" y2="223.474" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="395.914" y1="224.85" x2="407.268" y2="224.85" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="395.914" y1="226.225" x2="407.268" y2="226.225" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="412.944" y="216.596" width="2.83837" height="2.75126" fill="none"/><rect x="412.944" y="216.596" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="392.501" y="222.674" width="31.222" height="16.5076" fill="#ff9"/><rect x="392.501" y="222.674" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="393.92" y1="224.05" x2="401.016" y2="224.05" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.92" y1="225.426" x2="401.016" y2="225.426" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="393.92" y1="226.801" x2="401.016" y2="226.801" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="402.435" y1="230.928" x2="413.788" y2="230.928" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.435" y1="232.304" x2="413.788" y2="232.304" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="402.435" y1="233.679" x2="413.788" y2="233.679" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="419.465" y="224.05" width="2.83837" height="2.75126" fill="none"/><rect x="419.465" y="224.05" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="430.485" y1="112.983" x2="437.581" y2="112.983" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><rect x="429.066" y="111.607" width="31.222" height="16.5076" fill="#ff07f9"/><rect x="429.066" y="111.607" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="430.485" y1="114.359" x2="437.581" y2="114.359" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="430.485" y1="115.734" x2="437.581" y2="115.734" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="439" y1="119.861" x2="450.353" y2="119.861" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="439" y1="121.237" x2="450.353" y2="121.237" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="439" y1="122.612" x2="450.353" y2="122.612" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="456.03" y="112.983" width="2.83837" height="2.75126" fill="none"/><rect x="456.03" y="112.983" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><text transform="translate(395.177 74.721577)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="20.390625" y="9" textLength="58.21875">{area = 'Forth',</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="28.35791" y="20" textLength="42.28418">speed = 6,</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="17.894531" y="31" textLength="63.210938">visibility = 'Fog'}</tspan></text><rect x="385.98" y="344.14" width="31.222" height="16.5076" fill="#ff9"/><rect x="385.98" y="344.14" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="387.399" y1="345.516" x2="394.495" y2="345.516" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="387.399" y1="346.892" x2="394.495" y2="346.892" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="387.399" y1="348.267" x2="394.495" y2="348.267" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="395.914" y1="352.394" x2="407.267" y2="352.394" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="395.914" y1="353.77" x2="407.267" y2="353.77" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="395.914" y1="355.145" x2="407.267" y2="355.145" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="412.944" y="345.516" width="2.83837" height="2.75126" fill="none"/><rect x="412.944" y="345.516" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><g id="id2711_Graphic"><path d="M 361.40001 378.924 L 420.4 378.924 C 425.37057 378.924 429.4 382.95344 429.4 387.924 L 429.4 422.924 C 429.4 427.89456 425.37057 431.924 420.4 431.924 L 361.40001 431.924 C 356.42945 431.924 352.40001 427.89456 352.40001 422.924 L 352.40001 387.924 C 352.40001 382.95344 356.42945 378.924 361.40001 378.924 Z" fill="#93d9ff"/><path d="M 361.40001 378.924 L 420.4 378.924 C 425.37057 378.924 429.4 382.95344 429.4 387.924 L 429.4 422.924 C 429.4 427.89456 425.37057 431.924 420.4 431.924 L 361.40001 431.924 C 356.42945 431.924 352.40001 427.89456 352.40001 422.924 L 352.40001 387.924 C 352.40001 382.95344 356.42945 378.924 361.40001 378.924 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.40001 383.924)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x=".81933594" y="11" textLength="65.36133">storm_alert</tspan></text></g><text transform="translate(208.64398 52)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="43.844482" y="9" textLength="85.311035">routing_key=shipping</tspan></text></g></g></svg>
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Topic.png b/qpid/doc/book/src/java-broker/images/Exchange-Topic.png
deleted file mode 100644
index f631d73a12..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Topic.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Exchange-Topic.svg b/qpid/doc/book/src/java-broker/images/Exchange-Topic.svg
deleted file mode 100644
index 4240be5594..0000000000
--- a/qpid/doc/book/src/java-broker/images/Exchange-Topic.svg
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.
-
--->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="123 62 277 368" width="277pt" height="368pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2013-10-01 22:37Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="3.488"/><feOffset in="blur" result="offset" dx="0" dy="4"/><feFlood flood-color="black" flood-opacity=".75" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1333.3334" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black"><g><path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 6</title><g><title>Layer 1</title><g><use xl:href="#id2467_Graphic" filter="url(#Shadow)"/><use xl:href="#id1779_Graphic" filter="url(#Shadow)"/><use xl:href="#id1780_Graphic" filter="url(#Shadow)"/><use xl:href="#id1917_Graphic" filter="url(#Shadow)"/><use xl:href="#id1991_Graphic" filter="url(#Shadow)"/><use xl:href="#id2031_Graphic" filter="url(#Shadow)"/></g><g id="id2467_Graphic"><path d="M 152 105 L 371 105 C 375.97056 105 380 109.02944 380 114 L 380 134 C 380 138.97056 375.97056 143 371 143 L 152 143 C 147.02944 143 143 138.97056 143 134 L 143 114 C 143 109.02944 147.02944 105 152 105 Z" fill="#acffa2"/><path d="M 152 105 L 371 105 C 375.97056 105 380 109.02944 380 114 L 380 134 C 380 138.97056 375.97056 143 371 143 L 152 143 C 147.02944 143 143 138.97056 143 134 L 143 114 C 143 109.02944 147.02944 105 152 105 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(148 110)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="52.68164">Producer</tspan></text></g><g id="id1779_Graphic"><path d="M 152 166 L 371 166 C 375.97056 166 380 170.02944 380 175 L 380 396.925 C 380 401.89556 375.97056 405.925 371 405.925 L 152 405.925 C 147.02944 405.925 143 401.89556 143 396.925 L 143 175 C 143 170.02944 147.02944 166 152 166 Z" fill="#78caff"/><path d="M 152 166 L 371 166 C 375.97056 166 380 170.02944 380 175 L 380 396.925 C 380 401.89556 375.97056 405.925 371 405.925 L 152 405.925 C 147.02944 405.925 143 401.89556 143 396.925 L 143 175 C 143 170.02944 147.02944 166 152 166 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(148 171)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="69.345703">Qpid Broker</tspan></text></g><g id="id1780_Graphic"><path d="M 166.855 214.5 L 273.855 214.5 C 278.82556 214.5 282.855 218.52944 282.855 223.5 L 282.855 296 C 282.855 300.97056 278.82556 305 273.855 305 L 166.855 305 C 161.88444 305 157.855 300.97056 157.855 296 L 157.855 223.5 C 157.855 218.52944 161.88444 214.5 166.855 214.5 Z" fill="#a788ff"/><path d="M 166.855 214.5 L 273.855 214.5 C 278.82556 214.5 282.855 218.52944 282.855 223.5 L 282.855 296 C 282.855 300.97056 278.82556 305 273.855 305 L 166.855 305 C 161.88444 305 157.855 300.97056 157.855 296 L 157.855 223.5 C 157.855 218.52944 161.88444 214.5 166.855 214.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(162.855 219.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="0" y="11" textLength="56.671875">amq.topic</tspan></text></g><rect x="164.355" y="281.19395" width="64" height="13.6119385" fill="white"/><rect x="164.355" y="281.19395" width="64" height="13.6119385" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(169.355 282.49992)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="10.9907227" y="9" textLength="32.018555">weather</tspan></text><rect x="228.355" y="281.19395" width="48.000015" height="13.6119385" fill="white"/><rect x="228.355" y="281.19395" width="48.000015" height="13.6119385" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(233.355 282.49992)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.241951" y="9" textLength="19.516113">sub3</tspan></text><rect x="228.355" y="267.58195" width="48.000015" height="13.6119995" fill="white"/><rect x="228.355" y="267.58195" width="48.000015" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(233.355 268.88795)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.241951" y="9" textLength="19.516113">sub2</tspan></text><rect x="164.355" y="267.58195" width="64" height="13.6119995" fill="white"/><rect x="164.355" y="267.58195" width="64" height="13.6119995" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(169.355 268.88795)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="10.9907227" y="9" textLength="32.018555">weather</tspan></text><rect x="228.355" y="253.97005" width="48.000015" height="13.611908" fill="white"/><rect x="228.355" y="253.97005" width="48.000015" height="13.611908" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(233.355 255.276)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="9.241951" y="9" textLength="19.516113">sub1</tspan></text><rect x="164.355" y="253.97005" width="64" height="13.611908" fill="white"/><rect x="164.355" y="253.97005" width="64" height="13.611908" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(169.355 255.276)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="10.9907227" y="9" textLength="32.018555">weather</tspan></text><rect x="228.355" y="243.194" width="48.000015" height="10.776047" fill="white"/><rect x="228.355" y="243.194" width="48.000015" height="10.776047" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(233.355 243.08202)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x="5.7482986" y="9" textLength="26.503418">queue</tspan></text><rect x="164.355" y="243.194" width="64" height="10.776047" fill="white"/><rect x="164.355" y="243.194" width="64" height="10.776047" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(169.355 243.08202)" fill="black"><tspan font-family="Helvetica" font-size="9" font-style="italic" font-weight="bold" x=".74487305" y="9" textLength="52.510254">binding_key</tspan></text><path d="M 248.15424 143.41202 C 245.26978 147.60759 241.94213 150.23591 239.5 156 C 237.05787 161.76409 235.46474 168.33324 233.5 178 C 232.50765 182.88247 231.53304 188.95676 230.56277 195.31969" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id1917_Graphic"><path d="M 304.92 211.538 L 363.92 211.538 C 368.89056 211.538 372.92 215.56744 372.92 220.538 L 372.92 255.538 C 372.92 260.50856 368.89056 264.538 363.92 264.538 L 304.92 264.538 C 299.94944 264.538 295.92 260.50856 295.92 255.538 L 295.92 220.538 C 295.92 215.56744 299.94944 211.538 304.92 211.538 Z" fill="#93d9ff"/><path d="M 304.92 211.538 L 363.92 211.538 C 368.89056 211.538 372.92 215.56744 372.92 220.538 L 372.92 255.538 C 372.92 260.50856 368.89056 264.538 363.92 264.538 L 304.92 264.538 C 299.94944 264.538 295.92 260.50856 295.92 255.538 L 295.92 220.538 C 295.92 215.56744 299.94944 211.538 304.92 211.538 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(300.92 216.538)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub1</tspan></text></g><path d="M 256.27227 214.10707 C 261.53599 207.41805 265.70768 197.38251 272.065 194.038 C 278.42232 190.69349 288.09934 191.18328 294.42 194.038 C 295.73351 194.63125 296.94947 195.47113 298.09827 196.48077" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id1991_Graphic"><path d="M 304.92 274.462 L 363.92 274.462 C 368.89056 274.462 372.92 278.49144 372.92 283.462 L 372.92 318.462 C 372.92 323.43256 368.89056 327.462 363.92 327.462 L 304.92 327.462 C 299.94944 327.462 295.92 323.43256 295.92 318.462 L 295.92 283.462 C 295.92 278.49144 299.94944 274.462 304.92 274.462 Z" fill="#93d9ff"/><path d="M 304.92 274.462 L 363.92 274.462 C 368.89056 274.462 372.92 278.49144 372.92 283.462 L 372.92 318.462 C 372.92 323.43256 368.89056 327.462 363.92 327.462 L 304.92 327.462 C 299.94944 327.462 295.92 323.43256 295.92 318.462 L 295.92 283.462 C 295.92 278.49144 299.94944 274.462 304.92 274.462 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(300.92 279.462)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub2</tspan></text></g><path d="M 283.32046 235.0457 C 286.85328 233.6596 288.61394 227.05533 293.92 230.887 C 298.95247 234.5211 309.28699 249.22118 314.37788 256.858" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><g id="id2031_Graphic"><path d="M 304.92 337.387 L 363.92 337.387 C 368.89056 337.387 372.92 341.41644 372.92 346.387 L 372.92 381.387 C 372.92 386.35756 368.89056 390.387 363.92 390.387 L 304.92 390.387 C 299.94944 390.387 295.92 386.35756 295.92 381.387 L 295.92 346.387 C 295.92 341.41644 299.94944 337.387 304.92 337.387 Z" fill="#93d9ff"/><path d="M 304.92 337.387 L 363.92 337.387 C 368.89056 337.387 372.92 341.41644 372.92 346.387 L 372.92 381.387 C 372.92 386.35756 368.89056 390.387 363.92 390.387 L 304.92 390.387 C 299.94944 390.387 295.92 386.35756 295.92 381.387 L 295.92 346.387 C 295.92 341.41644 299.94944 337.387 304.92 337.387 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(300.92 342.387)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.496094" y="11" textLength="28.007812">sub3</tspan></text></g><path d="M 283.343 273.8093 C 286.89497 274.60212 290.22421 272.49625 294 276.188 C 297.77579 279.87975 301.14393 285.84005 306 295.962 C 308.90226 302.01144 312.41698 310.58504 315.99492 319.41948" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/><rect x="237.296" y="89.2331" width="31.222" height="16.5076" fill="#ff9"/><rect x="237.296" y="89.2331" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="238.715" y1="90.6081" x2="245.811" y2="90.6081" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="238.715" y1="91.9841" x2="245.811" y2="91.9841" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="238.715" y1="93.3601" x2="245.811" y2="93.3601" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="247.23" y1="97.4866" x2="258.584" y2="97.4866" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="247.23" y1="98.8626" x2="258.584" y2="98.8626" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="247.23" y1="100.2386" x2="258.584" y2="100.2386" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="264.26" y="90.6081" width="2.83837" height="2.75126" fill="none"/><rect x="264.26" y="90.6081" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="242.083" y="95.3166" width="31.222" height="16.5076" fill="#ff9"/><rect x="242.083" y="95.3166" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="243.502" y1="96.6916" x2="250.598" y2="96.6916" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="243.502" y1="98.0676" x2="250.598" y2="98.0676" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="243.502" y1="99.4436" x2="250.598" y2="99.4436" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="252.017" y1="103.5696" x2="263.371" y2="103.5696" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="252.017" y1="104.9456" x2="263.371" y2="104.9456" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="252.017" y1="106.3216" x2="263.371" y2="106.3216" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="269.047" y="96.6916" width="2.83837" height="2.75126" fill="none"/><rect x="269.047" y="96.6916" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="247.001" y="102.8166" width="31.222" height="16.5076" fill="#ff9"/><rect x="247.001" y="102.8166" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="248.421" y1="104.1926" x2="255.517" y2="104.1926" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="248.421" y1="105.5676" x2="255.517" y2="105.5676" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="248.421" y1="106.9436" x2="255.517" y2="106.9436" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="256.936" y1="111.0706" x2="268.289" y2="111.0706" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="256.936" y1="112.4456" x2="268.289" y2="112.4456" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="256.936" y1="113.8216" x2="268.289" y2="113.8216" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="273.966" y="104.1926" width="2.83837" height="2.75126" fill="none"/><rect x="273.966" y="104.1926" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="327.296" y="231.594" width="31.222" height="16.5076" fill="#ff9"/><rect x="327.296" y="231.594" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="328.715" y1="232.969" x2="335.811" y2="232.969" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="328.715" y1="234.345" x2="335.811" y2="234.345" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="328.715" y1="235.721" x2="335.811" y2="235.721" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="337.23" y1="239.848" x2="348.584" y2="239.848" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="337.23" y1="241.224" x2="348.584" y2="241.224" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="337.23" y1="242.6" x2="348.584" y2="242.6" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="354.26" y="232.969" width="2.83837" height="2.75126" fill="none"/><rect x="354.26" y="232.969" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="332.083" y="237.678" width="31.222" height="16.5076" fill="#ff9"/><rect x="332.083" y="237.678" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="333.502" y1="239.053" x2="340.598" y2="239.053" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="333.502" y1="240.429" x2="340.598" y2="240.429" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="333.502" y1="241.805" x2="340.598" y2="241.805" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="342.017" y1="245.931" x2="353.371" y2="245.931" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="342.017" y1="247.307" x2="353.371" y2="247.307" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="342.017" y1="248.683" x2="353.371" y2="248.683" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="359.047" y="239.053" width="2.83837" height="2.75126" fill="none"/><rect x="359.047" y="239.053" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="337.001" y="245.178" width="31.222" height="16.5076" fill="#ff9"/><rect x="337.001" y="245.178" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="338.421" y1="246.554" x2="345.517" y2="246.554" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="338.421" y1="247.929" x2="345.517" y2="247.929" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="338.421" y1="249.305" x2="345.517" y2="249.305" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="346.936" y1="253.432" x2="358.289" y2="253.432" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="346.936" y1="254.807" x2="358.289" y2="254.807" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="346.936" y1="256.183" x2="358.289" y2="256.183" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="363.966" y="246.554" width="2.83837" height="2.75126" fill="none"/><rect x="363.966" y="246.554" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="327.361" y="293.409" width="31.222" height="16.5076" fill="#ff9"/><rect x="327.361" y="293.409" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="328.78" y1="294.784" x2="335.876" y2="294.784" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="328.78" y1="296.16" x2="335.876" y2="296.16" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="328.78" y1="297.536" x2="335.876" y2="297.536" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="337.295" y1="301.662" x2="348.649" y2="301.662" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="337.295" y1="303.038" x2="348.649" y2="303.038" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="337.295" y1="304.414" x2="348.649" y2="304.414" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="354.325" y="294.784" width="2.83837" height="2.75126" fill="none"/><rect x="354.325" y="294.784" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="332.148" y="299.492" width="31.222" height="16.5076" fill="#ff9"/><rect x="332.148" y="299.492" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="333.567" y1="300.867" x2="340.663" y2="300.867" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="333.567" y1="302.243" x2="340.663" y2="302.243" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="333.567" y1="303.619" x2="340.663" y2="303.619" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="342.082" y1="307.745" x2="353.436" y2="307.745" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="342.082" y1="309.121" x2="353.436" y2="309.121" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="342.082" y1="310.497" x2="353.436" y2="310.497" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="359.112" y="300.867" width="2.83837" height="2.75126" fill="none"/><rect x="359.112" y="300.867" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="337.066" y="306.992" width="31.222" height="16.5076" fill="#ff9"/><rect x="337.066" y="306.992" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="338.486" y1="308.368" x2="345.582" y2="308.368" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="338.486" y1="309.743" x2="345.582" y2="309.743" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="338.486" y1="311.119" x2="345.582" y2="311.119" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="347.001" y1="315.246" x2="358.354" y2="315.246" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="347.001" y1="316.621" x2="358.354" y2="316.621" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="347.001" y1="317.997" x2="358.354" y2="317.997" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="364.031" y="308.368" width="2.83837" height="2.75126" fill="none"/><rect x="364.031" y="308.368" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="327.361" y="355.223" width="31.222" height="16.5076" fill="#ff9"/><rect x="327.361" y="355.223" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="328.78" y1="356.598" x2="335.876" y2="356.598" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="328.78" y1="357.974" x2="335.876" y2="357.974" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="328.78" y1="359.35" x2="335.876" y2="359.35" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="337.295" y1="363.477" x2="348.649" y2="363.477" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="337.295" y1="364.853" x2="348.649" y2="364.853" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="337.295" y1="366.229" x2="348.649" y2="366.229" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="354.325" y="356.598" width="2.83837" height="2.75126" fill="none"/><rect x="354.325" y="356.598" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="332.148" y="361.307" width="31.222" height="16.5076" fill="#ff9"/><rect x="332.148" y="361.307" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="333.567" y1="362.682" x2="340.663" y2="362.682" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="333.567" y1="364.058" x2="340.663" y2="364.058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="333.567" y1="365.434" x2="340.663" y2="365.434" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="342.082" y1="369.56" x2="353.436" y2="369.56" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="342.082" y1="370.936" x2="353.436" y2="370.936" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="342.082" y1="372.312" x2="353.436" y2="372.312" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="359.112" y="362.682" width="2.83837" height="2.75126" fill="none"/><rect x="359.112" y="362.682" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="337.066" y="368.807" width="31.222" height="16.5076" fill="#ff9"/><rect x="337.066" y="368.807" width="31.222" height="16.5076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="338.486" y1="370.183" x2="345.582" y2="370.183" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="338.486" y1="371.558" x2="345.582" y2="371.558" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="338.486" y1="372.934" x2="345.582" y2="372.934" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".72000003"/><line x1="347.001" y1="377.061" x2="358.354" y2="377.061" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="347.001" y1="378.436" x2="358.354" y2="378.436" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><line x1="347.001" y1="379.812" x2="358.354" y2="379.812" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><rect x="364.031" y="370.183" width="2.83837" height="2.75126" fill="none"/><rect x="364.031" y="370.183" width="2.83837" height="2.75126" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width=".24"/><text transform="translate(198.89749 71)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="16.894638" y="9" textLength="83.80371">routing_key=weather</tspan></text></g></g></svg>
diff --git a/qpid/doc/book/src/java-broker/images/HA-BDBHAMessageStore-MBean-jconsole.png b/qpid/doc/book/src/java-broker/images/HA-BDBHAMessageStore-MBean-jconsole.png
deleted file mode 100644
index 29d5494746..0000000000
--- a/qpid/doc/book/src/java-broker/images/HA-BDBHAMessageStore-MBean-jconsole.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/HA-Create-1.png b/qpid/doc/book/src/java-broker/images/HA-Create-1.png
deleted file mode 100644
index 4976609d16..0000000000
--- a/qpid/doc/book/src/java-broker/images/HA-Create-1.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/HA-Create-2.png b/qpid/doc/book/src/java-broker/images/HA-Create-2.png
deleted file mode 100644
index bd442263fe..0000000000
--- a/qpid/doc/book/src/java-broker/images/HA-Create-2.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/HA-Create-3.png b/qpid/doc/book/src/java-broker/images/HA-Create-3.png
deleted file mode 100644
index 5457f214e1..0000000000
--- a/qpid/doc/book/src/java-broker/images/HA-Create-3.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/HA-Overview.png b/qpid/doc/book/src/java-broker/images/HA-Overview.png
deleted file mode 100644
index 3419a19505..0000000000
--- a/qpid/doc/book/src/java-broker/images/HA-Overview.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/JMX-Connect-MBeans.png b/qpid/doc/book/src/java-broker/images/JMX-Connect-MBeans.png
deleted file mode 100644
index f766197166..0000000000
--- a/qpid/doc/book/src/java-broker/images/JMX-Connect-MBeans.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/JMX-Connect-Remote.png b/qpid/doc/book/src/java-broker/images/JMX-Connect-Remote.png
deleted file mode 100644
index 5fcf9dd497..0000000000
--- a/qpid/doc/book/src/java-broker/images/JMX-Connect-Remote.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Management-Web-Add-Dialogue.png b/qpid/doc/book/src/java-broker/images/Management-Web-Add-Dialogue.png
deleted file mode 100644
index b476060daa..0000000000
--- a/qpid/doc/book/src/java-broker/images/Management-Web-Add-Dialogue.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Management-Web-Auth.png b/qpid/doc/book/src/java-broker/images/Management-Web-Auth.png
deleted file mode 100644
index df28ef3d2c..0000000000
--- a/qpid/doc/book/src/java-broker/images/Management-Web-Auth.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Management-Web-Console.png b/qpid/doc/book/src/java-broker/images/Management-Web-Console.png
deleted file mode 100644
index 953a572bfc..0000000000
--- a/qpid/doc/book/src/java-broker/images/Management-Web-Console.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Management-Web-ContextVar.png b/qpid/doc/book/src/java-broker/images/Management-Web-ContextVar.png
deleted file mode 100644
index 3c62bc9f6e..0000000000
--- a/qpid/doc/book/src/java-broker/images/Management-Web-ContextVar.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Management-Web-Edit-Dialogue.png b/qpid/doc/book/src/java-broker/images/Management-Web-Edit-Dialogue.png
deleted file mode 100644
index 92626e092e..0000000000
--- a/qpid/doc/book/src/java-broker/images/Management-Web-Edit-Dialogue.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/Management-Web-Tab.png b/qpid/doc/book/src/java-broker/images/Management-Web-Tab.png
deleted file mode 100644
index f0958477e6..0000000000
--- a/qpid/doc/book/src/java-broker/images/Management-Web-Tab.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/images/VirtualHost-Model.png b/qpid/doc/book/src/java-broker/images/VirtualHost-Model.png
deleted file mode 100644
index bea811f27f..0000000000
--- a/qpid/doc/book/src/java-broker/images/VirtualHost-Model.png
+++ /dev/null
Binary files differ
diff --git a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-AMQP-Intrinsic.xml b/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-AMQP-Intrinsic.xml
deleted file mode 100644
index 475e7da84f..0000000000
--- a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-AMQP-Intrinsic.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Channel-AMQP-Intrinstic">
- <title>AMQP Intrinstic Management</title>
- <para>The AMQP protocols 0-8..0-10 allow for creation, deletion and query of Exchanges, Queue
- and Bindings.</para>
- <para>The exact details of how to utilise this commands depends of the client. See the
- documentation accompanying the client for details.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-HTTP.xml b/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-HTTP.xml
deleted file mode 100644
index e39c378075..0000000000
--- a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-HTTP.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Channel-HTTP">
- <title>HTTP Management</title>
-
- <section id="Java-Broker-Management-Channel-HTTP-Introduction">
- <title>Introduction</title>
- <para>The HTTP Management plugin provides a HTTP based API for monitoring and control of the
- Broker. The plugin actually provides two interfaces:</para>
-
- <para><itemizedlist>
- <listitem>
- <para><link linkend="Java-Broker-Management-Channel-Web-Console">Web Management
- Console</link> - rich web based interface for the management of the
- Broker.</para>
- </listitem>
- <listitem>
- <para><link linkend="Java-Broker-Management-Channel-REST-API">REST API</link> -
- REST API providing complete programmatic management of the Broker.</para>
- </listitem>
- </itemizedlist></para>
-
- <para>The Web Management Console itself uses the REST API, so every function you can perform
- through the Web Management Console can be also be scripted and integrated into other
- systems. This provides a simple integration point allowing the Broker to monitored and
- controlled from systems such as Naoios or BMC Control-M.</para>
- </section>
-
- <section id="Java-Broker-Management-Channel-HTTP-DefaultConfiguration">
- <title>Default Configuration</title>
- <para>By default, the Broker is shipped with HTTP enabled running port 8080. The HTTP plugin
- is configured to require SASL authentication. The port is not SSL protected.</para>
- <!-- TODO describe what to do if the port conflicts -->
- <para>The settings can be changed by configuring the HTTP plugin and/or the port configured
- to serve HTTP.</para>
- </section>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-JMX.xml b/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-JMX.xml
deleted file mode 100644
index 719fb13393..0000000000
--- a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-JMX.xml
+++ /dev/null
@@ -1,321 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "../../commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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 id="Java-Broker-Management-Channel-JMX">
- <title>JMX Management</title>
-
- <section id="Java-Broker-Management-Channel-JMX-Introduction">
- <title>Introduction</title>
- <para>The JMX management plugin provides a series of managed beans (MBeans) allowing you to
- control and monitor the Broker via an industry compliant interface. This provides a
- convenient integration point for a variety of Infrastructure Monitoring Solutions,
- tools such as Jconsole and VisualVM, as well as custom Java programs and scripts.</para>
- <para>The following sections describe how to connect to JMX, the configuration of the JMX
- plugin covering topis including securing with SSL, programmatically interacting with
- Qpid MBeans and finally a summary of all the MBeans made available from by the
- plugin.</para>
- <important>
- <para>For new development work, the reader is directed towards the strategic <link
- linkend="Java-Broker-Management-Channel-Web-Console">Web Management
- Console</link> and the <link
- linkend="Java-Broker-Management-Channel-REST-API">REST API</link>. Use the
- Web/REST interfaces in preference to JMX whenever possible. The JMX interface may be
- withdrawn in a future release.</para>
- </important>
- </section>
-
- <section id="Java-Broker-Management-Channel-JMX-Plugin-DefaultConfiguration">
- <title>Default Configuration</title>
- <para>By default, the Broker is shipped with JMX enabled.</para>
- <para>The RMI registry port runs on port <literal>8999</literal> and the JMX connector on
- port <literal>9099</literal>. The connector is not SSL protected. Qpid will use the
- <ulink
- url="&oracleJdkDocUrl;java/lang/management/ManagementFactory.html#getPlatformMBeanServer()"
- >Platform MBeanServer</ulink>.</para>
- <para>To change these settings, use the <link
- linkend="Java-Broker-Management-Channel-Web-Console">Web Management
- interface</link>.</para>
- </section>
-
- <section id="Java-Broker-Management-Channel-JMX-Plugin-ConnectingToJMX">
- <title>Connecting to JMX</title>
- <para>The following example uses Jconsole to illustrates how to connect to JMX and assume
- the defaults described above. Jconsole is a management tool that comes with the JDK. It
- provides a very simple view of the MBeans, but requires no special configuration to be
- used with Qpid.</para>
- <para>For full details of Jconsole itself refer to Oracle's <ulink url="&oracleJconsole;"
- >JConsole Guide</ulink>.</para>
- <para>Jconsole can be used to connect to local or remote Java processes. On startup, it
- presents a list of all the Java processes running on the local host and also allows you
- to specify a service url to connect to a Java process running on a remote host.</para>
- <para>To start Jconsole on the command line, type:</para>
- <programlisting><![CDATA[jconsole]]></programlisting>
- <section
- id="Java-Broker-Management-Channel-JMX-Plugin-ConnectingToJMX-Local">
- <title>Local</title>
- <para>To connect to a Broker running locally, simply select the process from the list.
- You can identify the Broker by looking for its classname
- <literal>org.apache.qpid.server.Main</literal>.</para>
- </section>
- <section
- id="Java-Broker-Management-Channel-JMX-Plugin-ConnectingToJMX-Remote">
- <title>Remote</title>
- <para>To connect to a broker running remotely, provide the hostname and port number of
- the <emphasis>RMI registry port</emphasis> (e.g. <literal>hostname:8999</literal>)
- and a valid username and password.</para>
- <para>You can also provide a service url in the form
- <literal>service:jmx:rmi:///jndi/rmi://hostname:8999/jmxrmi</literal></para>
- <figure>
- <title>Making a remote JMX connection to a Broker using jconsole</title>
- <graphic fileref="images/JMX-Connect-Remote.png"/>
- </figure>
- </section>
- <para>Once you are connected expand the tree of nodes marked
- <literal>org.apache.qpid</literal> to begin to interact with the Qpid MBeans.</para>
- <figure>
- <title>Qpid MBean hierarchy</title>
- <graphic fileref="images/JMX-Connect-MBeans.png"/>
- </figure>
- <section id="Java-Broker-Management-Channel-JMX-Plugin-ConnectingToJMX-SSL">
- <title>Connecting to a remote Broker protected by SSL</title>
- <para>If you are connecting to a remote Broker whose JMX connector port has been secured
- with SSL certificate signed by a private CA (or a self-signed certificate), you will
- need to pass a trust store and trust store password to Jconsole. If this is
- required, start jconsole with the following options:</para>
- <programlisting><![CDATA[jconsole -J-Djavax.net.ssl.trustStore=jmxtruststore.jks -J-Djavax.net.ssl.trustStorePassword=password]]></programlisting>
- </section>
- </section>
-
- <section id="Java-Broker-Management-JMX-Example-Client">
- <title>Example JMX Client</title>
- <para>The following java snippet illustrates a JMX client that connects to Qpid over JMX
- passing a userid and password, looks up the <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/ManagedBroker&qpidSrcSuffix;"
- >ManagedBroker</ulink> object corresponding to the <literal>myvhost</literal>
- virtualhost, then invokes a method on the virtualhost to create a new queue.</para>
- <para>A full introduction to custom JMX clients is beyond the scope of this book. For this
- the reader is directed toward Oracle's <ulink url="&oracleJmxTutorial;">JMX
- tutorial.</ulink></para>
- <example id="Java-Broker-Management-JMX-Example-Client-Code">
- <title>JMX Client illustrating the creation of a new queue</title>
- <programlisting language="java">
-Map&lt;String, Object&lt; environment = new HashMap&lt;String, Object&gt;();
-environment.put(JMXConnector.CREDENTIALS, new String[] {"admin","password"});
-// Connect to service
-JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8999/jmxrmi");
-JMXConnector jmxConnector = JMXConnectorFactory.connect(url, environment);
-MBeanServerConnection mbsc = jmxConnector.getMBeanServerConnection();
-// Object name for ManagedBroker mbean for virtualhost myvhost
-ObjectName objectName = new ObjectName("org.apache.qpid:type=VirtualHost.VirtualHostManager,VirtualHost=\"myvhost\"");
-// Get the ManagedBroker object
-ManagedBroker managedBroker = JMX.newMBeanProxy(mbsc, objectName, ManagedBroker.class);;
-
-// Create the queue named "myqueue"
-managedBroker.createNewQueue("myqueue", null, true);</programlisting>
- </example>
- <para>The Qpid classes required for a custom JMX client are included in the
- <literal>qpid-management-common</literal> artefact.</para>
- </section>
-
- <section id="Java-Broker-Management-Channel-JMX-MBeans">
- <title>The MBeans</title>
- <para>The following table summarises the available MBeans. The MBeans are self-describing:
- each attribute and operation carry a description describing their purpose. This
- description is visible when using tools such Jconsole. They are also available on
- Management interfaces themselves (linked below).</para>
- <table>
- <title>Qpid Broker MBeans</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Management Interface</entry>
- <entry>Object Name</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry morerows="1">
- <para>
- <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/ManagedBroker&qpidSrcSuffix;"
- >ManagedBroker</ulink>
- </para>
- </entry>
- <entry>
- <para>
- <literal>org.apache.qpid:type=VirtualHost.VirtualHostManager,VirtualHost="<replaceable>virtualhostname</replaceable>"</literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>MBean corresponding to the named virtualhost. Allows operations
- such as the creation/deletion of queues and exchanges on that
- virtualhost and virtualhost level statistics.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">
- <para>
- <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/ManagedQueue&qpidSrcSuffix;"
- >ManagedQueue</ulink>
- </para>
- </entry>
- <entry>
- <para>
- <literal>org.apache.qpid:type=VirtualHost.Queue,VirtualHost="<replaceable>virtualhostname</replaceable>",name="<replaceable>queuename</replaceable>"</literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>MBean corresponding to the named queue on the given virtualhost.
- Allows queue management operations such as view message, move
- message and clear queue. Exposes attributes such as queue depth and
- durability.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">
- <para>
- <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/ManagedExchange&qpidSrcSuffix;"
- >ManagedExchange</ulink>
- </para>
- </entry>
- <entry>
- <para>
- <literal>org.apache.qpid:type=VirtualHost.Exchange,VirtualHost="<replaceable>virtualhostname</replaceable>",name="<replaceable>amq.direct</replaceable>",ExchangeType=<replaceable>type</replaceable></literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>MBean corresponding to the named exchange on the given
- virtualhost. Allows exchange management operations such as the
- creation and removal of bindings. The supported exchange types are
- exposed by the <literal>exchangeTypes</literal> attribute of the
- virtualhost.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">
- <para>
- <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/ManagedConnection&qpidSrcSuffix;"
- >ManagedConnection</ulink>
- </para>
- </entry>
- <entry>
- <para>
- <literal>org.apache.qpid:type=VirtualHost.Connection,VirtualHost="<replaceable>virtualhostname</replaceable>",name="<replaceable>/peerid:ephemeralport</replaceable>"</literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>MBean representing a active AMQP connection to the named virtual
- host. Name is formed from the IP and ephemeral port of the peer.
- Attributes include the client version and connection level
- statistics.</para>
- </entry>
- </row>
- <row>
- <entry morerows="1">
- <para>
- <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/UserManagement&qpidSrcSuffix;"
- >UserManagement</ulink>
- </para>
- </entry>
- <entry>
- <para>
- <literal>org.apache.qpid:type=UserManagement,name="UserManagement-<replaceable>authentication
- manager name</replaceable>"</literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>When using <link
- linkend="Java-Broker-Security-PlainPasswordFile-Provider">Plain
- password provider</link> or <link
- linkend="Java-Broker-Security-Base64MD5PasswordFile-Provider"
- >Base 64 MD5 password provider</link>, permits user operations
- such creation and deletion of users. and password changes.</para>
- </entry>
-
- </row>
- <row>
- <entry morerows="1">
- <para>
- <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/ServerInformation&qpidSrcSuffix;"
- >ServerInformation</ulink>
- </para>
- </entry>
- <entry>
- <para>
- <literal>org.apache.qpid:type=ServerInformation,name=ServerInformation</literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>Exposes broker wide statistics, product version number and JMX
- management API version number.</para>
- </entry>
-
- </row>
- <row>
- <entry morerows="1">
- <para>
- <ulink
- url="&qpidManagementCommonSrc;org/apache/qpid/management/common/mbeans/LoggingManagement&qpidSrcSuffix;"
- >LoggingManagement</ulink>
- </para>
- </entry>
- <entry>
- <para>
- <literal>org.apache.qpid:type=LoggingManagement,name=LoggingManagement</literal>
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>MBean permitting control of the Broker's logging. Exposes
- operations allow the logging level to be controlled at runtime
- (without restarting the Broker) and others that allow changes to be
- written back to the log4j.xml logging configuration file, or the
- contents of the log4.xml file to be re-read at runtime.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-QMF.xml b/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-QMF.xml
deleted file mode 100644
index 6e91bbb6c1..0000000000
--- a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-QMF.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Channel-QMF">
- <title>QMF</title>
- <para>QMF is provided by an optional plugin.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml b/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml
deleted file mode 100644
index 9bddafa6fc..0000000000
--- a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-REST-API.xml
+++ /dev/null
@@ -1,611 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Channel-REST-API">
- <title>REST API</title>
- <para> This section provides a brief overview of the REST interfaces, which can be used directly to
- monitor and manage the Broker instance.</para>
-
- <section id="Java-Broker-Management-Channel-REST-API-Introduction">
- <title>Introduction</title>
- <para>The REST interface support traditional REST model which uses the GET method requests to
- retrieve the information about broker configured objects, DELETE method requests to delete the
- configured object, PUT to create or update the configured object and POST to perform the
- configured objects updates and creation.</para>
- <para>The REST API is versioned with the version number built into the URL. The general form of
- the URL is <literal>/api/&lt;version&gt;</literal> where &lt;version&gt; is a major model version prefixed with "v", for example, v3.
- For convenience the alias <literal>latest</literal> (<literal>/api/latest</literal>) signifies the latest supported version.
- There are also some ancillary services under URI <literal>/service</literal>.</para>
- </section>
-
- <section id="Java-Broker-Management-Channel-REST-API-URI">
- <title>REST interfaces</title>
- <para>The following REST interfaces are implemented on Qpid Broker</para>
- <table>
- <title>Rest services</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>REST Service URI</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/broker</para></listitem>
- <listitem><para>/api/&lt;version&gt;/broker</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages broker instance attributes and provides current values of Broker attributes and children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/virtualhostnode</para></listitem>
- <listitem><para>/api/&lt;version&gt;/virtualhostnode</para></listitem>
- <listitem><para>/api/latest/virtualhostnode/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/virtualhostnode/&lt;virtual host node name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) Virtual Host Node(s) on Broker and provides current values of Virtual Host Node attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/virtualhost</para></listitem>
- <listitem><para>/api/&lt;version&gt;/virtualhost</para></listitem>
- <listitem><para>/api/latest/virtualhost/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/virtualhost/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/virtualhost/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/virtualhost/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) Virtual Host on Virtual Host Node and provides current values of Virtual Host attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/queue</para></listitem>
- <listitem><para>/api/&lt;version&gt;/queue</para></listitem>
- <listitem><para>/api/latest/queue/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/queue/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/queue/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/queue/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/latest/queue/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;queue name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/queue/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;queue name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) Queue(s) on Virtual Host and provides current values of Queue attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/exchange</para></listitem>
- <listitem><para>/api/&lt;version&gt;/exchange</para></listitem>
- <listitem><para>/api/latest/exchange/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/exchange/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/exchange/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/exchange/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/latest/exchange/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;exchange name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/exchange/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;exchange name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) Exchanges(s) on Virtual Host and provides current values of Exchange attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/binding</para></listitem>
- <listitem><para>/api/&lt;version&gt;/binding</para></listitem>
- <listitem><para>/api/latest/binding/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/binding/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/binding/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/binding/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/latest/binding/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;exchange name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/binding/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;exchange name&gt;</para></listitem>
- <listitem><para>/api/latest/binding/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;exchange name&gt;/&lt;queue name&gt;/&lt;binding name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/binding/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;exchange name&gt;/&lt;queue name&gt;/&lt;binding name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes) Binding(s) of Queue to Exchange and provides current values of Binding attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/connection</para></listitem>
- <listitem><para>/api/&lt;version&gt;/connection</para></listitem>
- <listitem><para>/api/latest/connection/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/connection/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/connection/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/connection/&lt;virtual host node name&gt;/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/connection/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;connection name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/connection/&lt;virtual host node name&gt;/&lt;virtual host node name&gt;/&lt;connection name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages (deletes) Connection(s) on VirtualHost and provides current values of Connection attributes and its Sessions</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/session</para></listitem>
- <listitem><para>/api/&lt;version&gt;/session</para></listitem>
- <listitem><para>/api/latest/session/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/session/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/session/&lt;virtual host node name&gt;/&lt;virtual host name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/session/&lt;virtual host node name&gt;/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/session/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;connection name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/session/&lt;virtual host node name&gt;/&lt;virtual host node name&gt;/&lt;connection name</para></listitem>
- <listitem><para>/api/latest/session/&lt;virtual host node name&gt;/&lt;virtual host name&gt;/&lt;connection name&gt;/&lt;session name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/session/&lt;virtual host node name&gt;/&lt;virtual host node name&gt;/&lt;connection name&gt;/&lt;session name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages (deletes) Session(s) on Connection and provides values of Session attributes and its Consumers</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/port</para></listitem>
- <listitem><para>/api/&lt;version&gt;/port</para></listitem>
- <listitem><para>/api/latest/port/&lt;port name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/port/&lt;port name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) Port(s) on Broker and provides the information about current values of Port attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/authenticationprovider</para></listitem>
- <listitem><para>/api/&lt;version&gt;/authenticationprovider</para></listitem>
- <listitem><para>/api/latest/authenticationprovider/&lt;authentication provider name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/authenticationprovider/&lt;authentication provider name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) AuthenticationProvider(s) on Broker and provides the information about current values of AuthenticationProvider attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/user</para></listitem>
- <listitem><para>/api/&lt;version&gt;/user</para></listitem>
- <listitem><para>/api/latest/user/&lt;authentication provider name&gt;/&lt;user name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/user/&lt;authentication provider name&gt;/&lt;user name&gt;</para></listitem>
- <listitem><para>/api/latest/user/&lt;authentication provider name&gt;/&lt;user name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/user/&lt;authentication provider name&gt;/&lt;user name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) User(s) on AuthenticationProvider and provides the information about current values of User attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/accesscontrolprovider</para></listitem>
- <listitem><para>/api/&lt;version&gt;/accesscontrolprovider</para></listitem>
- <listitem><para>/api/latest/accesscontrolprovider/&lt;access control provider name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/accesscontrolprovider/&lt;access control provider name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) AccessControlProvider on Broker and provides the information about current values of AccessControlProvider attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/groupprovider</para></listitem>
- <listitem><para>/api/&lt;version&gt;/groupprovider</para></listitem>
- <listitem><para>/api/latest/groupprovider/&lt;group provider name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/groupprovider/&lt;group provider name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) GroupProvider on Broker and provides the information about current values of GroupProvider attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/group</para></listitem>
- <listitem><para>/api/&lt;version&gt;/group</para></listitem>
- <listitem><para>/api/latest/group/&lt;group provider name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/group/&lt;group provider name&gt;</para></listitem>
- <listitem><para>/api/latest/group/&lt;group provider name&gt;/&lt;group name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/group/&lt;group provider name&gt;/&lt;group name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) Group on GroupProvider and provides the information about current values of Group attributes and its children</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/groupmember</para></listitem>
- <listitem><para>/api/&lt;version&gt;/groupmember</para></listitem>
- <listitem><para>/api/latest/groupmember/&lt;group provider name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/groupmember/&lt;group provider name&gt;</para></listitem>
- <listitem><para>/api/latest/groupmember/&lt;group provider name&gt;/&lt;group name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/groupmember/&lt;group provider name&gt;/&lt;group name&gt;</para></listitem>
- <listitem><para>/api/latest/groupmember/&lt;group provider name&gt;/&lt;group name&gt;/&lt;user name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/groupmember/&lt;group provider name&gt;/&lt;group name&gt;/&lt;user name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes) GroupMember(s) on Group and provides the information about current values of GroupMember attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/keystore</para></listitem>
- <listitem><para>/api/&lt;version&gt;/keystore</para></listitem>
- <listitem><para>/api/latest/keystore/&lt;key store name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/keystore/&lt;key store name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) KeyStore(s) on Broker and provides the information about current values of KeyStore attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/truststore</para></listitem>
- <listitem><para>/api/&lt;version&gt;/truststore</para></listitem>
- <listitem><para>/api/latest/truststore/&lt;trust store name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/truststore/&lt;trust store name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) TrustStore(s) on Broker and provides the information about current values of TrustStore attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/preferencesprovider</para></listitem>
- <listitem><para>/api/&lt;version&gt;/preferencesprovider</para></listitem>
- <listitem><para>/api/latest/preferencesprovider/&lt;authentication provider name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/preferencesprovider/&lt;authentication provider name&gt;</para></listitem>
- <listitem><para>/api/latest/preferencesprovider/&lt;authentication provider name&gt;/&lt;preferences provider name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/preferencesprovider/&lt;authentication provider name&gt;/&lt;preferences provider name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) PreferencesProvider on AuthenticationProvider and provides the information about current values of PreferencesProvider attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/plugin</para></listitem>
- <listitem><para>/api/&lt;version&gt;/plugin</para></listitem>
- <listitem><para>/api/latest/plugin/&lt;plugin name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/plugin/&lt;plugin name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) Plugin(s) on Broker and provides the information about current values of Plugin attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <itemizedlist>
- <listitem><para>/api/latest/replicationnode</para></listitem>
- <listitem><para>/api/&lt;version&gt;/replicationnode</para></listitem>
- <listitem><para>/api/latest/replicationnode/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/replicationnode/&lt;virtual host node name&gt;</para></listitem>
- <listitem><para>/api/latest/replicationnode/&lt;virtual host node name&gt;/&lt;replication node name&gt;</para></listitem>
- <listitem><para>/api/&lt;version&gt;/replicationnode/&lt;virtual host node name&gt;/&lt;replication node name&gt;</para></listitem>
- </itemizedlist>
- </entry>
- <entry>
- <para>Manages(creates/deletes/updates) ReplicationNode(s) on VirtualHostNode and provides the information about current values of ReplicationNode attributes</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>/service/message/&lt;virtualhost name&gt;/&lt;queue name&gt;</para>
- </entry>
- <entry>Rest service to manage messages(s). Retrieves the details about the messages(s) with GET. Copies, moves messages with POST requests. Deletes messages with DELETE requests </entry>
- </row>
- <row>
- <entry>
- <para>/service/message-content/&lt;virtualhost name&gt;/&lt;queue name&gt;</para>
- </entry>
- <entry>Rest service to retrieve message content</entry>
- </row>
- <row>
- <entry>
- <para>/service/logrecords</para>
- </entry>
- <entry>Rest service to retrieve broker logs</entry>
- </row>
- <row>
- <entry>
- <para>/service/sasl</para>
- </entry>
- <entry>Sasl authentication. Retrieves user current authentication status and broker supported SASL mechanisms (GET). Authenticates user using supported SASL mechanisms (PUT requests)</entry>
- </row>
- <row>
- <entry>
- <para>/service/logout</para>
- </entry>
- <entry>Log outs user (GET only)</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- <section id="Java-Broker-Management-Channel-REST-API-Create">
- <title>Configured Object creation</title>
- <para>Methods PUT or POST can be used to create ConfiguredObject.</para>
- <para>
- ConfiguredObject can be created by submitting PUT request against ConfiguredObject full URI (the one ending with configured object name)
- or by submitting PUT/POST request against parent URI.
- The request encoding should be json (application/json) and request body should contain attributes values in json format.
- On successful completion of operation a response should be returned having response status code set to 201 and response header "Location" set to ConfiguredObject full URI.
- If object with a such name/id already exist and POST/PUT requests is made against parent URI,
- an error response should be returned having response code 409 (conflict) and body containing the json with the reason of operation failure.
- If object with a such name/id already exist and and PUT request is made against ConfiguredObject full URI,
- then ConfiguredObject update should be performed and http status code 200 should be returned.
- If ConfiguredObject cannot be created because of validation failure(s) the response should have http status code set 422 (Unprocessible Entity)
- and body should contain json with the reason of operation failure. On any other failure to create ConfiguredObject the response should have status code set to 400 (Bad Request)
- and payload should contain a json with error explaining the exact reason of failure.
- </para>
- <example>
- <title>Examples of REST calls for Queue creation</title>
- <para>
- To create Queue with name "my-queue" on a virtual host with name "vh" (which is contained within virtual host node with name "vhn") either of the following requests should be made:
- </para>
- <screen><![CDATA[PUT /api/latest/queue/vhn/vh HTTP/1.1]]></screen>
- <screen><![CDATA[POST /api/latest/queue/vhn/vh HTTP/1.1]]></screen>
- <screen><![CDATA[PUT /api/latest/queue/vhn/vh/my-queue HTTP/1.1]]></screen>
- <para>
- Response code 201 should be returned on successful queue creation. Response header "Location" should be set to "/api/latest/queue/test/my-queue".
- If queue with name "my-queue" already exists and either of 2 first requests above were used, an error response with response code 409 (conflict) and body containing json with message
- that queue exists should be returned. If queue with name "my-queue" exists and last request is used, then Queue update should occur.
- </para>
- </example>
- </section>
- <section id="Java-Broker-Management-Channel-REST-API-Update">
- <title>Configured Object update</title>
- <para>Methods PUT or POST can be used to update ConfiguredObject.</para>
- <para>
- ConfiguredObject can be updated by submitting PUT or POST request against ConfiguredObject full URI (the one ending with configured object name).
- The request encoding should be json (application/json) and request body should contain a ConfiguredObject json (with all or only modified attributes).
- On successful completion of operation a response code 200 should be returned.
- If ConfiguredObject does not exists and PUT method is used, such object should be created (201 response will be returned in this case).
- If ConfiguredObject does not exists and POST method is used, an error response should be returned having response status code 404 and payload with json explaining the problem.
- If any error occur on update, a response with response code 400 or 422 or 404 should be sent back to the client containing json body with error details.
- </para>
- <example>
- <title>Examples of REST calls for Queue update</title>
- <para>To update Queue with name "my-queue" on a virtual host with name "vh" (contained in virtual host node with name "vhn") either of the following requests can be made:</para>
- <screen><![CDATA[POST /api/latest/queue/vhn/vh/my-queue HTTP/1.1]]></screen>
- <screen><![CDATA[POST /api/latest/queue/vhn/vh/my-queue HTTP/1.1]]></screen>
- </example>
- </section>
- <section id="Java-Broker-Management-Channel-REST-API-Delete">
- <title>Configured Object deletion</title>
- <para>Method DELETE can be used to delete ConfiguredObject. Alternatively, ConfiguredObject can be deleted with update request having desiredState attribute set to value "DELETED".
- POST or PUT methods can be used in this case.</para>
- <para>On successful completion of operation a response code 200 should be returned.</para>
- <para>With DELETE method object ConfiguredObject in following ways:</para>
- <itemizedlist>
- <listitem>
- <para>by submitting DELETE request using ConfiguredObject full URI (the one ending with configured object name)</para>
- </listitem>
- <listitem>
- <para>by submitting DELETE request using parent URI and providing parameters having the same names as children attributes, for example, id, name, etc.
- Multiple children can be deleted in a such way. Many "id" parameters can be specified in such requests. Only children with matching attribute values will be deleted.</para>
- </listitem>
- </itemizedlist>
- <example>
- <title>Examples of REST calls for Queue deletion</title>
- <para>To delete Queue with name "my-queue" on a virtual host with name "vh" (contained in virtual host node with name "vhn") either of the following requests can be made:</para>
- <screen><![CDATA[DELETE /api/latest/queue/vhn/vh/my-queue HTTP/1.1]]></screen>
- <screen><![CDATA[DELETE /api/latest/queue/vhn/vh?name=my-queue HTTP/1.1]]></screen>
- <screen><![CDATA[DELETE /api/latest/queue/vhn/vh?id=real-queue-id HTTP/1.1]]></screen>
- </example>
- </section>
- <section id="Java-Broker-Management-Channel-REST-API-Get">
- <title>Retrieving Configured Object details</title>
- <para>Method GET is used to retrieve ConfiguredObject attributes values and children hierarchy.</para>
- <para>A particular ConfiguredObject details can be retrieved using full ConfiguredObject URI (the one ending with configured object name)</para>
- <para>A collection of ConfiguredObjects can be retrieved using parent URI. Request parameters
- (having the same name as attributes) can be used to filter the returned configured objects.</para>
- <para>The REST URI (/api/latest/&gt;category&lt;/*) are hierarchical. It is permitted to replace REST URI elements with an
- "asterisks" in GET requests to denote all object of a particular type. Additionally, trailing
- object type in the URL hierarchy can be omitted. In this case GET request will return all of the
- object underneath of the current object.</para>
- <para>For example, for binding URL <literal>http://localhost:8080/api/latest/binding/&lt;vhost
- node&gt;/&lt;vhost&gt;/&lt;exchange&gt;/&lt;queue&gt;/&lt;binding&gt;</literal> replacing of
- <literal>&lt;exchange&gt;</literal> with "asterisks"
- (<literal>http://localhost:8080/api/&lt;ver&gt;/binding/&lt;vhost
- node&gt;/&lt;vhost&gt;/*/&lt;queue&gt;/&lt;binding&gt;</literal>) will result in the GET
- response containing the list of bindings for all of the exchanges in the virtualhost having the
- given name and given queue.</para>
- <para>If <literal>&lt;binding&gt;</literal> and <literal>&lt;queue&gt;</literal> are omitted in
- binding REST URL (<literal>http://localhost:8080/api/&lt;ver&gt;/binding/&lt;vhost
- node&gt;/&lt;vhost&gt;/&lt;exchangename&gt;</literal>) the GET request will result in
- returning all bindings for all queues for the given exchange in the virtual host. </para>
- <para>Additional parameters supported in GET requests:</para>
- <variablelist>
- <varlistentry>
- <term>depth</term><listitem><para>To restrict the depth of hierarchy of configured objects to return in response</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>actuals</term><listitem><para>If set to "true" attribute actual values are returned instead of effective</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>includeSysContext</term><listitem><para>If set to "true" all system context variables are returned</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>inheritedActuals</term><listitem><para>If set to "true" actual values for all inherited context is returned.</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>oversize</term><listitem><para>Sets the maximum length for values of over-sized attributes to trim</para></listitem>
- </varlistentry>
- <varlistentry>
- <term>extractInitialConfig</term><listitem><para>If set to "true", the returned json can be used as initial configuration.</para></listitem>
- </varlistentry>
- </variablelist>
- </section>
- <section id="Java-Broker-Management-Channel-REST-API-Status-Codes">
- <title>HTTP status codes returned by REST interfaces</title>
- <table>
- <title>HTTP status codes returned by REST interfaces</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Status code</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <para>200</para>
- </entry>
- <entry>
- <para>REST request is successfully completed. This status code can be returned by update, delete and get requests.</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>201</para>
- </entry>
- <entry>
- <para>New configured object is created. It is returned by REST PUT and POST requests for creation of configured objects.</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>400</para>
- </entry>
- <entry>
- <para>REST request cannot be performed due to errors in request.
- It can be returned from create, update and delete requests.
- The details of a problem are provided in the response payload in json format.</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>401</para>
- </entry>
- <entry>
- <para>The request requires user authentication</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>403</para>
- </entry>
- <entry>
- <para>Execution of request is not allowed due to failure to authorize user operation.</para>
- </entry>
- </row>
- <row>
- <entry>
- <para>404</para>
- </entry>
- <entry>
- <para>
- The requested configured object cannot be found. This status code can be returned from POST update requests if configured object does not exist.
- The reason for the status code is provided in the response payload in json format.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>409</para>
- </entry>
- <entry>
- <para>The request can not be performed because its execution can create conflicts in the broker.
- This status code can be returned from POST/PUT create requests against parent URI if configured object with requested name or id already exists.
- The status code 409 can also be returned if removal or update of configured object can violate system integrity.
- The reason for the status code is provided in the response payload in json format.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <para>422</para>
- </entry>
- <entry>
- <para>The request can not be performed because provided information either incomplete or invalid.
- This status code can be returned from create or update requests.
- The reason for the status code is provided in the response payload in json format.</para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </section>
- <section id="Java-Broker-Management-Channel-REST-API-Examples">
- <title>Examples of REST requests with curl</title>
- <example>
- <title>Examples of queue creation using curl (authenticating as user admin):</title>
- <programlisting><![CDATA[
-#create a durable queue
-curl --user admin -X PUT -d '{"durable":true}' http://localhost:8080/api/latest/queue/<vhostnode name>/<vhostname>/<queuename>
-#create a durable priority queue
-curl --user admin -X PUT -d '{"durable":true,"type":"priority"}' http://localhost:8080/api/latest/queue/<vhostnode name>/<vhostname>/<queuename>
- ]]></programlisting>
- </example>
- <example>
- <title>Example of binding a queue to an exchange using curl</title>
- <programlisting><![CDATA[
-curl --user admin -X PUT -d '{}' http://localhost:8080/api/latest/binding/<vhostnode name>/<vhostname>/<exchangename>/<queue-name>/<binding-name>
- ]]></programlisting>
- </example>
- <para> NOTE: These curl examples utilise unsecure HTTP transport. To use the examples it is first
- necessary enable Basic authentication for HTTP within the HTTP Management Configuration (it is
- off by default). For details see <xref linkend="Java-Broker-Management-Managing-Plugin-HTTP"/>
- </para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-Web-Console.xml b/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-Web-Console.xml
deleted file mode 100644
index d9f141f01a..0000000000
--- a/qpid/doc/book/src/java-broker/management/channels/Java-Broker-Management-Channel-Web-Console.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Channel-Web-Console">
- <title>Web Management Console</title>
- <para> The Web Management Console provides a simple and intuitive interface for the Management
- and Control of the Broker. From here, all aspects of the Broker can be controlled,
- including: <itemizedlist>
- <listitem>
- <para>add, remove and monitor queues</para>
- </listitem>
- <listitem>
- <para>inspect, move, copy or delete messages</para>
- </listitem>
- <listitem>
- <para>add, remove and monitor virtualhosts</para>
- </listitem>
- <listitem>
- <para>configure and control high availability</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>The remainder of the section provides an introduction to the web management console and
- its use.</para>
- <section id="Java-Broker-Management-Channel-Web-Console-Accessing">
- <title>Accessing the Console</title>
- <para>The Web Management Console is provided by the HTTP Management Plugin. Providing the
- HTTP Management Plugin is in its default configuration, the Web Management Console can
- be accessed by pointing a browser at the following URL:</para>
- <para>
- <literal>http://myhost.mydomain.com:8080</literal>
- </para>
- <para>The Console will prompt you to login using a username and password.</para>
- <figure>
- <title>Web Management Console - Authentication</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Management-Web-Auth.png" format="PNG" scalefit="1"
- width="900px"/>
- </imageobject>
- <textobject>
- <phrase>Web Console Authentication</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </section>
- <section id="Java-Broker-Management-Channel-Web-Console-Orientation">
- <title>Orientation</title>
- <para>After you have logged on you will see a screen similar to the following. The elements
- of the screen are now explained.</para>
- <figure>
- <title>Web Management Orientation - Console</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Management-Web-Console.png" format="PNG" scalefit="1"
- width="900px"/>
- </imageobject>
- <textobject>
- <phrase>The Web Console</phrase>
- </textobject>
- </mediaobject>
- </figure>
- <para>
- <itemizedlist>
- <listitem>
- <para><emphasis>A</emphasis> - Hierarchy view. Expandable/collapsible view
- showing all entities within the Broker. Double click on an entity name to
- cause its tab to be opened. </para>
- </listitem>
- <listitem>
- <para><emphasis>B</emphasis> - Tab. Shows the details of an entity including its
- attributes and its child entities. </para>
- </listitem>
- <listitem>
- <para><emphasis>C</emphasis> - Occluded tab. Click tab name to bring the tab to
- the front.</para>
- </listitem>
- <listitem>
- <para><emphasis>D</emphasis> - Auto restore check box. Checked tabs will be
- automatically restored on subsequent login.</para>
- </listitem>
- <listitem>
- <para><emphasis>E</emphasis> - Close. Click to close the tab.</para>
- </listitem>
- <listitem>
- <para><emphasis>F</emphasis> - User Menu. Access to Preferences, Logout and
- Help.</para>
- </listitem>
- </itemizedlist>
- </para>
- <figure id="Java-Broker-Management-Channel-Web-Console-Orientation-Tab">
- <title>Web Management Orientation - Tab</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Management-Web-Tab.png" format="PNG" scalefit="1"
- width="900px"/>
- </imageobject>
- <textobject>
- <phrase>A tab within the Web Consle</phrase>
- </textobject>
- </mediaobject>
- </figure>
- <para>The elements of a tab are now explained: <itemizedlist>
- <listitem>
- <para><emphasis>1</emphasis> - Attribute Panel. Shows the attributes of the
- entity. Click the panel title bar opens/closes the panel.</para>
- </listitem>
- <listitem>
- <para><emphasis>2</emphasis> - Child Panels. Panels containing a table listing
- the children of the entity. Click the panel title bar opens/closes the
- panel.</para>
- </listitem>
- <listitem>
- <para><emphasis>3</emphasis> - Child Row. Row summarizing a child entity. Double
- click to open the child tab.</para>
- </listitem>
- <listitem>
- <para><emphasis>4</emphasis> - Child Operations. Buttons to add a new child or
- perform operations on existing children.</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Channel-Web-Console-Managing-Entities">
- <title>Managing Entities</title>
- <para>All the Entities of the Broker of can be managed through the Web Console.</para>
- <section id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add">
- <title>Adding Entities</title>
- <para>To <emphasis>add</emphasis> a new entity, click the <literal>Add</literal> button
- on the Child Panel on the Parent's tab. Clicking the Add button causes an add
- dialogue to be displayed.</para>
- <para>Add dialogues allow you to set the attributes of the new child, and set context
- variables. Most fields on the add dialogue have field level help that give more
- details about the attribute and any default value (which may be expressed in terms
- of a context variable) that will take effect if you leave the attribute unset. An
- example add dialogue is shown in the figure that follows.</para>
- <figure id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add-Dialogue">
- <title>Web Management Orientation - Add Dialogue</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Management-Web-Add-Dialogue.png" format="PNG"
- scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Example add dialogue showing field level help</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </section>
- <section id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit">
- <title>Editing Entities</title>
- <para>To <emphasis>edit</emphasis> an existing entity, click the <literal>Edit</literal>
- button on the tab corresponding to the Entity itself. Editing an entity lets you
- change some of its attributes and modify its context variables. Most fields on the
- edit dialogue have field level help that give more details about the attribute and
- any default value. An example edit dialogue is shown in the figure that
- follows.</para>
- <figure id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit-Dialogue">
- <title>Web Management Orientation - Edit Dialogue</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Management-Web-Edit-Dialogue.png" format="PNG"
- scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Example edit dialogue</phrase>
- </textobject>
- </mediaobject>
- </figure>
- </section>
- <section id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Delete">
- <title>Deleting Entities</title>
- <para>To <emphasis>remove</emphasis> an existing entity, click the
- <literal>Delete</literal> button on the tab corresponding to the Entity itself.
- For some child types, you can select many children from the parent's type and delete
- many children at once.</para>
- </section>
- <section id="Java-Broker-Management-Channel-Web-Console-Managing-Context-Variables">
- <title>Context Variables</title>
- <para>All Entities within the Broker have the ability to have <link
- linkend="Java-Broker-Management-Managing-Entities-General">context
- variables</link> associated with them.</para>
- <para>Most add and edit dialogues have the ability to make context variable assignments.
- To add/change/remove a context variable, click the Context Variable panel to expand
- it.</para>
- <figure
- id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Context-Variables-Dialogue">
- <title>Web Management Orientation - Context Variables</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/Management-Web-ContextVar.png" format="PNG"
- scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Editting Context Variables</phrase>
- </textobject>
- </mediaobject>
- </figure>
- <para>You will see any context variables already associated with the object, called
- local context variables in bold, and any inherited from above in normal face.</para>
- <para>Since context variables can be defined in terms of other context variables, the
- display has two value columns: actual and effective. Actual shows the value truely
- associated with the variable, where as effective shows the resulting value, after
- variable expansion has taken place.</para>
- <para>The <literal>+</literal> button allows new variables to be added. The
- <literal>-</literal> button removes existing ones.</para>
- <para>You change an existing local variables defintion by clicking on the actual value.
- You can also <emphasis>provide a local definition</emphasis> for an inherited value
- by clicking on the actual value and typing its new value.</para>
- </section>
- </section>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Access-Control-Providers.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Access-Control-Providers.xml
deleted file mode 100644
index 5e05545daf..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Access-Control-Providers.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Access-Control-Providers">
- <title>Access Control Providers</title>
- <para>An <link linkend="Java-Broker-Concepts-Access-Control-Providers">Access Control
- Provider</link> governs who may do what within the Broker. It governs both messaging and
- management.</para>
- <para>See <xref linkend="Java-Broker-Security-ACLs"/></para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Authentication-Providers.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Authentication-Providers.xml
deleted file mode 100644
index f6af69cacf..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Authentication-Providers.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Management-Managing-Authentication-Providers">
- <title>Authentication Providers</title>
- <para>
- <link linkend="Java-Broker-Concepts-Authentication-Providers">Authentication
- Providers</link> are used by <link linkend="Java-Broker-Concepts-Ports">Ports</link> to
- authenticate connections.</para>
- <para>See <xref linkend="Java-Broker-Security-Authentication-Providers"/></para>
-
- <section id="Java-Broker-Management-Managing-Authentication-Providers-Types">
- <title>Types</title>
- <para> The following authentication providers are supported: <itemizedlist>
- <listitem><para><link linkend="Java-Broker-Security-Anonymous-Provider"
- >Anonymous</link>: allows anonymous connections to the
- Broker</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-External-Provider"
- >External</link>: delegates to external mechanisms such as SSL Client
- Certificate Authentication</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-Kerberos-Provider"
- >Kerberos</link>: uses Kerberos to authenticate connections via
- GSS-API.</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-LDAP-Provider"
- >SimpleLDAP</link>: authenticate users against an LDAP
- server.</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-ScramSha-Providers"
- >ScramSha</link>: authenticate users against credentials stored in a
- local database</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-Plain-Provider"
- >Plain</link>: authenticate users against credentials stored in a local
- database.</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-PlainPasswordFile-Provider"
- >PlainPasswordFile</link>: authenticate users against credentials stored
- in plain text in a local file.</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-MD5-Provider"
- >MD5</link>: authenticate users against credentials
- stored in a local database.</para></listitem>
- <listitem><para><link linkend="Java-Broker-Security-Base64MD5PasswordFile-Provider"
- >Base64MD5PasswordFile</link>: authenticate users against credentials
- stored encoded in a local file.</para></listitem>
- </itemizedlist>
- </para>
- <para>The last five providers offer user management facilities too, that is, users can
- be created, deleted and passwords reset.</para>
- </section>
-
- <section id="Java-Broker-Management-Managing-Authentication-Providers-Attributes">
- <title>Attributes</title>
- <para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Name the authentication provider</emphasis>.</para>
- </listitem>
- </itemizedlist>
- </para>
- <para>Other attributes are provider specific.</para>
- </section>
- <section id="Java-Broker-Management-Managing-Authentication-Providers-Children">
- <title>Children</title>
- <para>None</para>
- </section>
- <section id="Java-Broker-Management-Managing-Authentication-Providers-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported</para>
- <important>
- <para>When updating an existing authentication provider, changes become effective until
- the Broker is restarted.</para>
- </important>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Broker.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Broker.xml
deleted file mode 100644
index 54e9d81ff1..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Broker.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Broker">
- <title>Broker</title>
- <para>The <link linkend="Java-Broker-Concepts-Broker">Broker</link> is the principal entity. It is
- composed of a number of other entities that collaborate to provide message broker
- facilities.</para>
- <para>The Broker can only be managed via the HTTP management channel.</para>
- <section id="Java-Broker-Management-Managing-Broker-Attributes">
- <title>Attributes</title>
- <para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Name the Broker</emphasis>. This helps distinguish between Brokers in
- environments that have many.</para>
- </listitem>
- <listitem>
- <para><emphasis>Default Virtualhost</emphasis>. The default virtualhost is the one that
- messaging clients will connect to if they do not specify a virtualhost name when they
- form the connect to the Broker.</para>
- </listitem>
- <listitem>
- <para><emphasis>Heartbeating</emphasis>. Enables heartbeats between Broker and Clients.
- Heartbeats help discover severed TCP/IP connections in a timely manner.</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-Broker-Context">
- <title>Context</title>
- <para>
- <itemizedlist>
- <listitem>
- <para><emphasis>broker.flowToDiskThreshold</emphasis> Controls the <link
- linkend="Java-Broker-Runtime-Flow-To-Disk">flow to disk</link> feature.</para>
- </listitem>
- <listitem>
- <para><emphasis>broker.messageCompressionEnabled</emphasis> Controls the <link
- linkend="Java-Broker-Runtime-Message-Compression">message compression</link> .</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-Broker-Children">
- <title>Children</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <link linkend="Java-Broker-Management-Managing-Virtualhost-Nodes">Virtualhost
- nodes</link>
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="Java-Broker-Management-Managing-Ports">Ports</link>
- </para>
- </listitem>
- <listitem>
- <para>Authentication Providers</para>
- </listitem>
- <listitem>
- <para>Key Stores / Trust Stores</para>
- </listitem>
- <listitem>
- <para>Group Providers</para>
- </listitem>
- <listitem>
- <para>Access Control Providers</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-Broker-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported</para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Entities-Matrix.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Entities-Matrix.xml
deleted file mode 100644
index 3ac1214da2..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Entities-Matrix.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Entities-Matrix">
- <title>Entity/Management Channel Support Matrix</title>
- <para>This tables indicates which management channels support the creation (C), update (U), or
- deletion (D) of different entities within the Broker.</para>
- <table frame="all">
- <title>Entity/Management Matrix</title>
- <tgroup cols="4" align="left" colsep="1" rowsep="1">
- <colspec colname="entity"/>
- <colspec colname="http"/>
- <colspec colname="jmx"/>
- <colspec colname="amqp"/>
- <thead>
- <row>
- <entry>Entity</entry>
- <entry>HTTP</entry>
- <entry>JMX</entry>
- <entry>AMQP</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Broker</entry>
- <entry>U</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Virtualhost Node</entry>
- <entry>C/U/D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Virtualhost</entry>
- <entry>C/U/D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Remote Replication Node</entry>
- <entry>U/D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Exchange</entry>
- <entry>C/D</entry>
- <entry>C/D</entry>
- <entry>C/D</entry>
- </row>
- <row>
- <entry>Queue</entry>
- <entry>C/D</entry>
- <entry>C/U/D</entry>
- <entry>C/D</entry>
- </row>
- <row>
- <entry>Binding</entry>
- <entry>C/D</entry>
- <entry>C/D</entry>
- <entry>C/D</entry>
- </row>
- <row>
- <entry>Port</entry>
- <entry>C/U/D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Authentication Providers</entry>
- <entry>C/U/D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Group Providers</entry>
- <entry>C//D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Access Control Provider</entry>
- <entry>C//D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Keystores</entry>
- <entry>C//D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Truststores</entry>
- <entry>C//D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Users</entry>
- <entry>C//D</entry>
- <entry>C/D</entry>
- <entry>No</entry>
- </row>
- <row>
- <entry>Groups</entry>
- <entry>C//D</entry>
- <entry>No</entry>
- <entry>No</entry>
- </row>
-
- </tbody>
- </tgroup>
- </table>
- <important>
- <title>Note</title>
- <para>It is currently only possible to modify a entity's context using the HTTP channel.
- Furthermore, when using the JMX channel, it is not possible to assign non-String type
- attributes in terms of context variables.</para>
- </important>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Exchanges.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Exchanges.xml
deleted file mode 100644
index e24733c5b3..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Exchanges.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Exchanges">
- <title>Exchanges</title>
- <para><link linkend="Java-Broker-Concepts-Exchanges">Exchanges</link> can be managed using the
- HTTP, JMX or AMQP channels.</para>
- <section id="Java-Broker-Management-Managing-Exchanges-Types">
- <title>Types</title>
- <para><itemizedlist>
- <listitem>
- <para>Direct</para>
- </listitem>
- <listitem>
- <para>Topic</para>
- </listitem>
- <listitem>
- <para>Fanout</para>
- </listitem>
- <listitem>
- <para>Headers</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-Exchanges-Attributes">
- <title>Attributes</title>
- <para><itemizedlist>
- <listitem>
- <para><emphasis>Name of the exchange</emphasis>. Message producers refer to this name when
- producing messages.</para>
- </listitem>
- <listitem>
- <para><emphasis>Type of the exchange</emphasis>. Can be either <link
- linkend="Java-Broker-Concepts-Exchanges-Types-Direct">direct</link>, <link
- linkend="Java-Broker-Concepts-Exchanges-Types-Topic">topic</link>, <link
- linkend="Java-Broker-Concepts-Exchanges-Types-Fanout">fanout</link>, or <link
- linkend="Java-Broker-Concepts-Exchanges-Types-Headers">headers</link>.</para>
- </listitem>
- <listitem>
- <para><emphasis>Durable</emphasis>. Whether the exchange survives a restart.</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section id="Java-Broker-Management-Managing-Exchanges-Children">
- <title>Children</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>Binding</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-Exchanges-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported</para>
- </section>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Group-Providers.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Group-Providers.xml
deleted file mode 100644
index 330b451550..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Group-Providers.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Group-Providers">
- <title>Group Providers</title>
- <para>See <xref linkend="Java-Broker-Security-Group-Providers"/></para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Keystores.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Keystores.xml
deleted file mode 100644
index 5e582027ae..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Keystores.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "../../commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Keystores">
- <title>Keystores</title>
- <para>A <link linkend="Java-Broker-Concepts-Keystores">Keystore</link> is required by a Port
- in order to use SSL.</para>
- <section id="Java-Broker-Management-Managing-Keystores-Attributes">
- <title>Attributes</title>
- <para><itemizedlist>
- <listitem>
- <para><emphasis>Name the keystore</emphasis>. Used to identify the
- keystore.</para>
- </listitem>
- <listitem>
- <para><emphasis>Path</emphasis>. Path to keystore file</para>
- </listitem>
- <listitem>
- <para><emphasis>Keystore password</emphasis>. Password used to secure the keystore<important>
- <para> The password of the certificate used by the Broker <emphasis
- role="bold">must</emphasis> match the password of the keystore
- itself. This is a restriction of the Qpid Broker implementation. If
- using the <ulink url="&oracleKeytool;">keytool</ulink> utility, note
- that this means the argument to the <option>-keypass</option> option
- must match the <option>-storepass</option> option. </para>
- </important></para>
- </listitem>
- <listitem>
- <para><emphasis>Certificate Alias</emphasis>. An optional way of specifying
- which certificate the broker should use if the keystore contains multiple
- entries.</para>
- </listitem>
- <listitem>
- <para><emphasis>Manager Factory Algorithm</emphasis>. In keystores the have more
- than one certificate, the alias identifies the certificate to be
- used.</para>
- </listitem>
- <listitem>
- <para><emphasis>Key Store Type</emphasis>. Type of Keystore.</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section id="Java-Broker-Management-Managing-Keystores-Children">
- <title>Children</title>
- <para>None</para>
- </section>
- <section id="Java-Broker-Management-Managing-Keystores-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported</para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-HTTP.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-HTTP.xml
deleted file mode 100644
index 07b7b83ab8..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-HTTP.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Plugin-HTTP">
- <title>HTTP Plugin</title>
- <para>The HTTP Plugin provides the <link linkend="Java-Broker-Management-Channel-HTTP">HTTP management channel</link> comprising of the <link linkend="Java-Broker-Management-Channel-Web-Console">Web
- Management Console</link> and the <link linkend="Java-Broker-Management-Channel-REST-API">REST API</link>.</para>
- <section id="Java-Broker-Management-Managing-Plugin-HTTP-Attributes">
- <title>Attributes</title>
- <para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Basic Authentication for HTTP</emphasis>. It is set to false
- (disabled) by default.</para>
- </listitem>
- <listitem>
- <para><emphasis>Basic Authentication for HTTPS</emphasis>. It is set to true
- (enabled) by default.</para>
- </listitem>
- <listitem>
- <para><emphasis>SASL Authentication for HTTP</emphasis>. It is set to true
- (enabled) by default.</para>
- </listitem>
- <listitem>
- <para><emphasis>SASL Authentication for HTTPS</emphasis>. It is set to true
- (enabled) by default.</para>
- </listitem>
- <listitem>
- <para><emphasis>Session timeout</emphasis> is the timeout in seconds to close
- the HTTP session. It is set to 10 minutes by default.</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-Plugin-HTTP-Children">
- <title>Children</title>
- <para>None</para>
- </section>
- <section id="Java-Broker-Management-Managing-Plugin-HTTP-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported<important><para>NOTE: Changes to the Session Timeout attribute only take
- effect at broker restart. </para></important></para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-JMX.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-JMX.xml
deleted file mode 100644
index 2b933e5d8f..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Plugins-JMX.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Plugins-JMX">
- <title>JMX Plugin</title>
- <para>
- The JMX Plugin provides the <link linkend="Java-Broker-Management-Channel-JMX">JMX management channel</link>.
- </para>
- <para>TODO</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Ports.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Ports.xml
deleted file mode 100644
index 86fa3dfb82..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Ports.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Ports">
- <title>Ports</title>
- <para>Ports provide TCP/IP connectivity for messaging and management. A port is defined to use a
- protocol. This can be an AMQP protocol for messaging or HTTP/JMX for management.</para>
- <para>A port is defined to have one or more transports. A transport can either be plain (TCP) or
- SSL. When SSL is in use, the port can be configured to accept or require client
- authentication.</para>
- <para>Any number of ports defined to use AMQP or HTTP protocols can be defined. JMX is limited
- to a single port instance per JMX protocol type.</para>
- <para>Ports can only be managed by the HTTP management channel.</para>
- <section id="Java-Broker-Management-Managing-Ports-Attributes">
- <title>Attributes</title>
- <para><itemizedlist>
- <listitem>
- <para><emphasis>Name the port</emphasis>.</para>
- </listitem>
- <listitem>
- <para><emphasis>Port number</emphasis>.</para>
- </listitem>
- <listitem>
- <para><emphasis>Binding address</emphasis>. Used to limit port binding to a
- single network interface.</para>
- </listitem>
- <listitem>
- <para><emphasis>Authentication Provider</emphasis>. The <link
- linkend="Java-Broker-Concepts-Authentication-Providers">authentication
- provider</link> used to authenticate incoming connections.</para>
- </listitem>
- <listitem>
- <para><emphasis>Protocol(s)</emphasis>. A list of protocols to be supported by
- the port. For messaging choose one or more AMQP protocols. For management
- choose HTTP or on one the two JMX protocols.</para>
- </listitem>
- <listitem>
- <para><emphasis>Transports</emphasis>. A list of transports supported by the
- port. For messaging or HTTP management chose TCP, SSL or both. For JMX, the
- TCP/SSL combination is not supported.</para>
- </listitem>
- <listitem>
- <para><emphasis>Keystore</emphasis>. <link
- linkend="Java-Broker-Management-Managing-Keystores">Keystore</link>
- containing the Broker's private key. Required if the SSL is in use.</para>
- </listitem>
- <listitem>
- <para><emphasis>Want/Need Client Auth</emphasis>. Client authentication can be
- either accepted if offered (want), or demanded (need). When Client
- Certificate Authentication is in use a Truststore must be configured. When
- using Client Certificate Authentication it may be desirable to use the <link
- linkend="Java-Broker-Security-External-Provider">External Authentication
- Provider</link>.</para>
- <para>JMX does not support client authentication.</para>
- </listitem>
- <listitem>
- <para><emphasis>Truststore</emphasis>. <link
- linkend="Java-Broker-Management-Managing-Truststores">Trust store</link>
- contain an issuer certificate or the public keys of the clients themselves
- if peers only is desired.</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section id="Java-Broker-Management-Managing-Ports-Children">
- <title>Children</title>
- <para>None</para>
- </section>
- <section id="Java-Broker-Management-Managing-Ports-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported</para>
- <important>
- <para>When updating an existing port, changes to SSL settings, binding address and port
- numbers do not become effective until the Broker is restarted.</para>
- </important>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Queues.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Queues.xml
deleted file mode 100644
index 8fd11e6803..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Queues.xml
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE entities [
-<!ENTITY % entities SYSTEM "../../commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Queues">
- <title>Queues</title>
- <para><link linkend="Java-Broker-Concepts-Queues">Queues</link> are named entities that
- hold/buffer messages for later delivery to consumer applications.</para>
- <para>Queues can be managed using the HTTP, JMX or AMQP channels.</para>
- <section id="Java-Broker-Management-Managing-Queues-Types">
- <title>Types</title>
- <para>The Broker supports four different queue types, each with different delivery semantics.<itemizedlist>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-Standard"
- >Standard</link> - a simple First-In-First-Out (FIFO) queue</para>
- </listitem>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-Priority"
- >Priority</link> - delivery order depends on the priority of each message</para>
- </listitem>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-Sorted">Sorted</link> -
- delivery order depends on the value of the sorting key property in each message</para>
- </listitem>
- <listitem>
- <para><link linkend="Java-Broker-Concepts-Queues-Types-LVQ">Last Value
- Queue</link> - also known as an LVQ, retains only the last (newest) message received
- with a given LVQ key value</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section id="Java-Broker-Management-Managing-Queues-Attributes">
- <title>Attributes</title>
- <para><itemizedlist>
- <listitem>
- <para><emphasis>Name of the queue</emphasis>. Message consumers and browsers refer to this
- name when they wish to subscribe to queue to receive messages from it.</para>
- </listitem>
- <listitem>
- <para><emphasis>Type of the queue</emphasis>. Can be either <link
- linkend="Java-Broker-Concepts-Queues-Types-Standard">standard</link>, <link
- linkend="Java-Broker-Concepts-Queues-Types-Priority">priority</link>, <link
- linkend="Java-Broker-Concepts-Queues-Types-Sorted">sorted</link>, or <link
- linkend="Java-Broker-Concepts-Queues-Types-LVQ">lvq</link>.</para>
- </listitem>
- <listitem>
- <para><emphasis>Durable</emphasis>. Whether the queue survives a restart. Messages on a
- non durable queue do not survive a restart even if they are marked persistent.</para>
- </listitem>
- <listitem>
- <para><emphasis>Maximum/Minimum TTL</emphasis>. Defines a maximum and minimum
- time-to-live. Messages arriving with ttl larger than the maximum will be overridden by
- the maximum. Similarly, messages arriving with tll less than the minimum (or no ttl at
- all), will be overridden by the minimum.</para>
- <para>Changing these values affects only new arrivals, existing messages already on the
- queue are not affected.</para>
- </listitem>
- <listitem>
- <para><emphasis>Message persistent override</emphasis>. Allow message persistent settings
- of incoming messages to be overridden. Changing this value affects only new arrivals,
- existing messages on the queue are not affected. </para>
- </listitem>
- <listitem>
- <para><emphasis>Queue capacity</emphasis>. Queues 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>Alerting Thresholds</emphasis>. Queues have the ability to alert on a
- variety of conditions: total queue depth exceeded a number or size, message age exceeded
- a threshold, message size exceeded a threshold. These thresholds are soft. See <xref
- linkend="Java-Broker-Appendix-Queue-Alerts"/></para>
- </listitem>
- <listitem>
- <para><emphasis>Maximum Delivery Count/Alternate Exchange</emphasis>. See <xref
- linkend="Java-Broker-Runtime-Handling-Undeliverable-Messages"/></para>
- </listitem>
- <listitem>
- <para><emphasis>Message Groups</emphasis>. See <xref
- linkend="Java-Broker-Concepts-Queues-Message-Grouping"/></para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section id="Java-Broker-Management-Managing-Queue-Children">
- <title>Children</title>
- <para>
- <itemizedlist>
- <listitem>
- <para>Binding</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-Queue-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported</para>
- </section>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-RemoteReplicationNodes.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-RemoteReplicationNodes.xml
deleted file mode 100644
index f0b83d8163..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-RemoteReplicationNodes.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-RemoteReplicationNodes">
- <title>Remote Replication Nodes</title>
- <para>Used for HA only. A <link linkend="Java-Broker-Concepts-RemoteReplicationNodes">remote replication node</link> is a representation of another virtualhost node
- in the group. Remote replication nodes are not created directly. Instead the system
- automatically creates a remote replication node for every node in the group. It serves to
- provide a view of the whole group from every node in the system.</para>
- <section id="Java-Broker-Management-Managing-RemoteReplicationNodes-Attributes">
- <title>Attributes</title>
- <para><itemizedlist>
- <listitem>
- <para><emphasis>Name the remote replication node</emphasis>. This is the name of the
- remote virtualhost node</para>
- </listitem>
- <listitem>
- <para><emphasis>Role</emphasis>. Indicates the role that the remote node is playing in the
- group at this moment. <itemizedlist>
- <listitem>
- <para><emphasis>MASTER</emphasis> - Remote node is a master.</para>
- </listitem>
- <listitem>
- <para><emphasis>REPLICA</emphasis> - Remote node is a replica.</para>
- </listitem>
- <listitem>
- <para><emphasis>UNREACHABLE</emphasis> - Remote node unreachable from this node.
- This remote note may be down, or an network problem may prevent it from being
- contacted.</para>
- </listitem>
- </itemizedlist>
- </para>
- </listitem>
- <listitem>
- <para><emphasis>Join time</emphasis>. Time when first contact was established with this
- node.</para>
- </listitem>
- <listitem>
- <para><emphasis>Last known transaction id</emphasis>. Last transaction id reported
- processed by node. This is an internal transaction counter and does not relate to any
- value available to the messaging clients. This value can only be used to determine the
- node is up to date relative to others in the group.</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section id="Java-Broker-Management-Managing-RemoteReplicationNodes-Children">
- <title>Children</title>
- <para>None</para>
- </section>
- <section id="Java-Broker-Management-Managing-RemoteReplicationNodes-Lifecycle">
- <title>Lifecycle</title>
- <para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Delete</emphasis>. Causes the remote node to be permanently removed from
- the group. This operation should be used when the virtualhost node cannot be deleted
- from its own Broker, for instance, if a Broker has been destroyed by machine
- failure.</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section id="Java-Broker-Management-Managing-RemoteReplication-Nodes-Operations">
- <title>Operations</title>
- <para>
- <itemizedlist>
- <listitem>
- <para><emphasis>Transfer Master</emphasis>. Initiates a process where a master is moved to
- anther node in the group. The transfer sequence is as follows. <orderedlist>
- <listitem>
- <para>Group waits until the proposed master is reasonable up to date.</para>
- </listitem>
- <listitem>
- <para>Any in-flight transactions on the current master are blocked.</para>
- </listitem>
- <listitem>
- <para>The current master awaits the proposed master to become up to date.</para>
- </listitem>
- <listitem>
- <para>The mastership is transferred. This will automatically disconnect messaging
- clients from the old master, and in-flight transactions are rolled back. Messaging
- clients reconnect to the new master.</para>
- </listitem>
- <listitem>
- <para>The old master will rejoin as a replica.</para>
- </listitem>
- </orderedlist>
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Truststores.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Truststores.xml
deleted file mode 100644
index e934304a29..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Truststores.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 id="Java-Broker-Management-Managing-Truststores">
- <title>Truststores</title>
- <para> A <link linkend="Java-Broker-Concepts-Truststores">Truststore</link> is required by a
- Port in order to SSL client authentication. Some authentication provides also use a
- truststore when connecting to authentication systems that are protected by a private issuer
- SSL certificate.</para>
- <section id="Java-Broker-Management-Managing-Truststores-Attributes">
- <title>Attributes</title>
- <para><itemizedlist>
- <listitem>
- <para><emphasis>Name the truststore</emphasis>. Used to identify the
- truststore.</para>
- </listitem>
- <listitem>
- <para><emphasis>Path</emphasis>. Path to truststore file</para>
- </listitem>
- <listitem>
- <para><emphasis>Truststore password</emphasis>. Password used to secure the truststore<important>
- <para> The password of the certificate used by the Broker <emphasis
- role="bold">must</emphasis> match the password of the keystore
- itself. </para>
- </important></para>
- </listitem>
- <listitem>
- <para><emphasis>Certificate Alias</emphasis>. An optional way of specifying
- which certificate the broker should use if the keystore contains multiple
- entries.</para>
- </listitem>
- <listitem>
- <para><emphasis>Manager Factory Algorithm</emphasis>. In keystores the have more
- than one certificate, the alias identifies the certificate to be
- used.</para>
- </listitem>
- <listitem>
- <para><emphasis>Key Store Type</emphasis>. Type of Keystore.</para>
- </listitem>
- <listitem>
- <para><emphasis>Peers only</emphasis>. When "Peers Only" option is selected for
- the Truststore it will allow authenticate only those clients that present a certificate
- exactly matching a certificate contained within the Truststore database.</para>
- </listitem>
- </itemizedlist></para>
- </section>
- <section id="Java-Broker-Management-Managing-Truststores-Children">
- <title>Children</title>
- <para>None</para>
- </section>
- <section id="Java-Broker-Management-Managing-Truststores-Lifecycle">
- <title>Lifecycle</title>
- <para>Not supported</para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-VirtualhostNodes.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-VirtualhostNodes.xml
deleted file mode 100644
index 77621764cd..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-VirtualhostNodes.xml
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 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 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 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 - Node backed with Oracle BDB 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 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>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>Designated Primary</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 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 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>
diff --git a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Virtualhosts.xml b/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Virtualhosts.xml
deleted file mode 100644
index 06e8606a72..0000000000
--- a/qpid/doc/book/src/java-broker/management/managing/Java-Broker-Management-Managing-Virtualhosts.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-
- 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 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 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 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 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>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 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>
- <listitem>
- <para>Connection</para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section 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>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-ACLs.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-ACLs.xml
deleted file mode 100644
index 95d718df29..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-ACLs.xml
+++ /dev/null
@@ -1,646 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-
- 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 id="Java-Broker-Security-ACLs">
- <title>Access Control Lists</title>
- <para>
- In Qpid, Access Control Lists (ACLs) specify which actions can be performed by each authenticated user.
- To enable, an <emphasis>Access Control Provider</emphasis> needs to be configured on the <emphasis>Broker</emphasis>.
- The <emphasis>Access Control Provider</emphasis> of type "AclFile" uses local file to specify the ACL rules.
- By convention, this file should have a .acl extension.
- </para>
-
- <para>
- A Group Provider can be configured with ACL to define the user groups which can be used in ACL
- to determine the ACL rules applicable to the entire group. The configuration details for the Group Providers are described in
- <xref linkend="Java-Broker-Security-Group-Providers"/>. On creation of ACL Provider with group rules,
- the Group Provider should be added first. Otherwise, if the individual ACL rules are not defined for the logged principal
- the following invocation of management operations could be denied due to absence of the required groups.</para>
-
- <para>Only one <emphasis>Access Control Provider</emphasis> can be used by the Broker.
- If several <emphasis>Access Control Providers</emphasis> are configured on Broker level
- only one of them will be used (the latest one).
- </para>
-
- <para>
- The ACL Providers can be configured using <link linkend="Java-Broker-Management-Channel-REST-API">REST Management interfaces</link>
- and <link linkend="Java-Broker-Management-Channel-Web-Console">Web Management Console</link>.
- </para>
-
- <para>The following ACL Provider managing operations are available from Web Management Console:
- <itemizedlist>
- <listitem><para>A new ACL Provider can be added by clicking onto "Add Access Control Provider" on the Broker tab.</para></listitem>
- <listitem><para>An ACL Provider details can be viewed on the Access Control Provider tab.
- The tab is shown after clicking onto ACL Provider name in the Broker object tree or after clicking
- onto ACL Provider row in ACL Providers grid on the Broker tab.</para></listitem>
- <listitem><para>An existing ACL Provider can be deleted by clicking onto buttons "Delete Access Control Provider"
- on the Broker tab or Access Control Provider tab.</para></listitem>
- </itemizedlist>
- </para>
-
- <section role="h3" id="Java-Broker-Security-ACLs-WriteACL">
- <title>
- Writing .acl files
- </title>
-
- <para>
- The ACL file consists of a series of rules associating behaviour for a user or group. Use of groups can serve to make the ACL file more concise. See <link linkend="Java-Broker-Security-Group-Providers">Configuring Group Providers</link> for more information on defining groups.
- </para>
- <para>
- Each ACL rule grants or denies a particular action on an object to a user/group. The rule may be augmented with one or more properties, restricting
- the rule's applicability.
- </para>
- <programlisting>
- ACL ALLOW alice CREATE QUEUE # Grants alice permission to create all queues.
- ACL DENY bob CREATE QUEUE name="myqueue" # Denies bob permission to create a queue called "myqueue"
- </programlisting>
- <para>
- The ACL is considered in strict line order with the first matching rule taking precedence over all those that follow. In the following
- example, if the user bob tries to create an exchange "myexch", the operation will be allowed by the first rule. The second rule will
- never be considered.
- </para>
- <programlisting>
- ACL ALLOW bob ALL EXCHANGE
- ACL DENY bob CREATE EXCHANGE name="myexch" # Dead rule
- </programlisting>
- <para>
- If the desire is to allow bob to create all exchanges except "myexch", order of the rules must be reversed:
- </para>
- <programlisting>
- ACL DENY bob CREATE EXCHANGE name="myexch"
- ACL ALLOW bob ALL EXCHANGE
- </programlisting>
- <para>
- All ACL files end with an implicit rule denying all operations to all users. It is as if each file ends with
- <programlisting>ACL DENY ALL ALL </programlisting>
- If instead you wish to <emphasis>allow</emphasis> all operations other than those controlled by earlier rules,
- add <programlisting>ACL ALLOW ALL ALL</programlisting> to the bottom of the ACL file.
- </para>
- <para>
- When writing a new ACL, a good approach is to begin with an .acl file containing only <programlisting>ACL DENY-LOG ALL ALL</programlisting>
- which will cause the Broker to deny all operations with details of the denial logged to the Qpid log file. Build up the ACL rule by rule,
- gradually working through the use-cases of your system. Once the ACL is complete, consider switching the DENY-LOG actions to DENY
- to improve performamce and reduce log noise.
- </para>
- <para>
- ACL rules are very powerful: it is possible to write very granular rules specifying many broker objects and their
- properties. Most projects probably won't need this degree of flexibility. A reasonable approach is to choose to apply permissions
- at a certain level of abstraction (e.g. QUEUE) and apply them consistently across the whole system.
- </para>
- <note>
- <para>
- Some rules can be restricted to the virtual host if property virtualhost_name is specified.
- <example>
- <title>Restrict rules to specific virtual hosts</title>
- <programlisting>
- ACL ALLOW bob CREATE QUEUE virtualhost_name="test"
- ACL ALLOW bob ALL EXCHANGE virtualhost_name="prod"
- </programlisting>
- </example>
- In the example above the first rule allows user "bob" to create queues on virtual host "test" only.
- The second rule allows user "bob" any action with exchanges on virtual host "prod".
- </para>
- </note>
- </section>
-
- <section role="h4" id="Java-Broker-Security-ACLs-Syntax">
- <title>
- Syntax
- </title>
-
- <para>
- ACL rules follow this syntax:
- </para>
- <programlisting>
- ACL {permission} {&lt;group-name&gt;|&lt;user-name&gt;|ALL} {action|ALL} [object|ALL] [property="&lt;property-value&gt;"]
- </programlisting>
-
- <para>
- Comments may be introduced with the hash (#) character and are ignored. Long lines can be broken with the slash (\) character.
- </para>
- <programlisting>
- # A comment
- ACL ALLOW admin CREATE ALL # Also a comment
- ACL DENY guest \
- ALL ALL # A broken line
- </programlisting>
- </section>
- <table id="table-Java-Broker-Security-ACLs-Syntax_permissions">
- <title>List of ACL permission</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><command>ALLOW</command></entry>
- <entry><para>Allow the action</para></entry>
- </row>
- <row>
- <entry><command>ALLOW-LOG</command></entry>
- <entry><para> Allow the action and log the action in the log </para></entry>
- </row>
- <row>
- <entry><command>DENY</command></entry>
- <entry><para> Deny the action</para></entry>
- </row>
- <row>
- <entry><command>DENY-LOG</command></entry>
- <entry><para> Deny the action and log the action in the log</para></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table id="table-Java-Broker-Security-ACLs-Syntax_actions">
- <title>List of ACL actions</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry><para>Action</para></entry>
- <entry><para>Description</para></entry>
- <entry><para>Supported object types</para></entry>
- <entry><para>Supported properties</para></entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry> <command>CONSUME</command> </entry>
- <entry> <para> Applied when subscriptions are created </para> </entry>
- <entry><para>QUEUE</para></entry>
- <entry><para>name, autodelete, temporary, durable, exclusive, alternate, owner, virtualhost_name</para></entry>
- </row>
- <row>
- <entry> <command>PUBLISH</command> </entry>
- <entry> <para> Applied on a per message basis on publish message transfers</para> </entry>
- <entry><para>EXCHANGE</para></entry>
- <entry><para>name, routingkey, immediate, virtualhost_name</para></entry>
- </row>
- <row>
- <entry> <command>CREATE</command> </entry>
- <entry> <para> Applied when an object is created, such as bindings, queues, exchanges</para> </entry>
- <entry><para>VIRTUALHOSTNODE, VIRTUALHOST, EXCHANGE, QUEUE, USER, GROUP</para></entry>
- <entry><para>see properties on the corresponding object type</para></entry>
- </row>
- <row>
- <entry> <command>ACCESS</command> </entry>
- <entry> <para> Applied when an object is read or accessed</para> </entry>
- <entry><para>VIRTUALHOST, MANAGEMENT</para></entry>
- <entry><para>name (for VIRTUALHOST only)</para></entry>
- </row>
- <row>
- <entry> <command>BIND</command> </entry>
- <entry> <para> Applied when queues are bound to exchanges</para> </entry>
- <entry><para>EXCHANGE</para></entry>
- <entry><para>name, routingKey, queuename, virtualhost_name, temporary, durable</para></entry>
- </row>
- <row>
- <entry> <command>UNBIND</command> </entry>
- <entry> <para> Applied when queues are unbound from exchanges</para> </entry>
- <entry><para>EXCHANGE</para></entry>
- <entry><para>name, routingKey, queuename, virtualhost_name, temporary, durable</para></entry>
- </row>
- <row>
- <entry> <command>DELETE</command> </entry>
- <entry> <para> Applied when objects are deleted </para> </entry>
- <entry><para>VIRTUALHOSTNODE, VIRTUALHOST, EXCHANGE, QUEUE, USER, GROUP</para></entry>
- <entry><para>see properties on the corresponding object type</para></entry>
- </row>
- <row>
- <entry> <command>PURGE</command> </entry> <entry>
- <para>Applied when purge the contents of a queue</para> </entry>
- <entry><para>QUEUE</para></entry>
- <entry><para> </para></entry>
- </row>
- <row>
- <entry> <command>UPDATE</command> </entry>
- <entry> <para> Applied when an object is updated </para> </entry>
- <entry><para>VIRTUALHOSTNODE, VIRTUALHOST, EXCHANGE, QUEUE, USER, GROUP</para></entry>
- <entry><para>see EXCHANGE and QUEUE properties</para></entry>
- </row>
- <row>
- <entry> <command>CONFIGURE</command> </entry>
- <entry> <para> Applied when an object is configured via REST management interfaces.</para> </entry>
- <entry><para>BROKER</para></entry>
- <entry><para> </para></entry>
- </row>
- <row>
- <entry><command>ACCESS_LOGS</command> </entry>
- <entry><para>Allows/denies to the specific user an operation to download broker log file(s) over REST interfaces</para> </entry>
- <entry><para>BROKER</para></entry>
- <entry><para> </para></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table id="table-Java-Broker-Security-ACLs-Syntax_objects">
- <title>List of ACL objects</title>
- <tgroup cols="4">
- <thead>
- <row>
- <entry><para>Object type</para></entry>
- <entry><para>Description</para></entry>
- <entry><para>Supported actions</para></entry>
- <entry><para>Supported properties</para></entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry> <command>VIRTUALHOSTNODE</command> </entry>
- <entry> <para>A virtualhostnode or remote replication node</para> </entry>
- <entry><para>ALL, CREATE, UPDATE, DELETE</para> </entry>
- <entry><para>name</para> </entry>
- </row>
- <row>
- <entry> <command>VIRTUALHOST</command> </entry>
- <entry> <para>A virtualhost</para> </entry>
- <entry><para>ALL, CREATE, UPDATE, DELETE, ACCESS</para> </entry>
- <entry><para>name</para> </entry>
- </row>
- <row>
- <entry> <command>MANAGEMENT </command> </entry>
- <entry> <para>Management - for web and JMX</para> </entry>
- <entry><para>ALL, ACCESS</para> </entry>
- <entry><para> </para></entry>
- </row>
- <row>
- <entry> <command>QUEUE</command> </entry>
- <entry> <para>A queue </para> </entry>
- <entry><para>ALL, CREATE, DELETE, PURGE, CONSUME, UPDATE</para></entry>
- <entry><para>name, autodelete, temporary, durable, exclusive, alternate, owner, virtualhost_name</para></entry>
- </row>
- <row>
- <entry> <command>EXCHANGE</command> </entry>
- <entry><para>An exchange</para></entry>
- <entry><para>ALL, ACCESS, CREATE, DELETE, BIND, UNBIND, PUBLISH, UPDATE</para></entry>
- <entry><para>name, autodelete, temporary, durable, type, virtualhost_name, queuename(only for BIND and UNBIND), routingkey(only for BIND and UNBIND, PUBLISH)</para></entry>
- </row>
- <row>
- <entry> <command>USER</command> </entry>
- <entry> <para>A user</para> </entry>
- <entry><para>ALL, CREATE, DELETE, UPDATE</para></entry>
- <entry><para>name</para></entry>
- </row>
- <row>
- <entry> <command>GROUP</command> </entry>
- <entry> <para>A group</para> </entry>
- <entry><para>ALL, CREATE, DELETE, UPDATE</para></entry>
- <entry><para>name</para></entry>
- </row>
- <row>
- <entry> <command>METHOD</command> </entry>
- <entry> <para>Management or agent or broker method</para> </entry>
- <entry><para>ALL, ACCESS, UPDATE</para></entry>
- <entry><para>name, component, virtualhost_name</para></entry>
- </row>
- <row>
- <entry> <command>BROKER</command> </entry>
- <entry> <para>The broker</para> </entry>
- <entry><para>ALL, CONFIGURE, ACCESS_LOGS</para></entry>
- <entry><para> </para></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table id="table-Java-Broker-Security-ACLs-Syntax_properties">
- <title>List of ACL properties</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><command>name</command> </entry>
- <entry> <para> String. Object name, such as a queue name, exchange name or JMX method name. </para> </entry>
- </row>
- <row>
- <entry> <command>durable</command> </entry>
- <entry> <para> Boolean. Indicates the object is durable </para> </entry>
- </row>
- <row>
- <entry> <command>routingkey</command> </entry>
- <entry> <para> String. Specifies routing key </para> </entry>
- </row>
- <row>
- <entry> <command>autodelete</command> </entry>
- <entry> <para> Boolean. Indicates whether or not the object gets deleted when the connection is closed </para> </entry>
- </row>
- <row>
- <entry> <command>exclusive</command> </entry>
- <entry> <para> Boolean. Indicates the presence of an <parameter>exclusive</parameter> flag </para> </entry>
- </row>
- <row>
- <entry> <command>temporary</command> </entry>
- <entry> <para> Boolean. Indicates the presence of an <parameter>temporary</parameter> flag </para> </entry>
- </row>
- <row>
- <entry> <command>type</command> </entry>
- <entry> <para> String. Type of object, such as topic, fanout, or xml </para> </entry>
- </row>
- <row>
- <entry> <command>alternate</command> </entry>
- <entry> <para> String. Name of the alternate exchange </para> </entry>
- </row>
- <row>
- <entry> <command>queuename</command> </entry>
- <entry> <para> String. Name of the queue (used only when the object is something other than <parameter>queue</parameter> </para> </entry>
- </row>
- <row>
- <entry> <command>component</command> </entry>
- <entry> <para> String. JMX component name</para> </entry>
- </row>
- <row>
- <entry> <command>from_network</command> </entry>
- <entry>
- <para>
- Comma-separated strings representing IPv4 address ranges.
- </para>
- <para>
- Intended for use in ACCESS VIRTUALHOST rules to apply firewall-like restrictions.
- </para>
- <para>
- The rule matches if any of the address ranges match the IPv4 address of the messaging client.
- The address ranges are specified using either Classless Inter-Domain Routing notation
- (e.g. 192.168.1.0/24; see <ulink url="http://tools.ietf.org/html/rfc4632">RFC 4632</ulink>)
- or wildcards (e.g. 192.169.1.*).
- </para>
- </entry>
- </row>
- <row>
- <entry> <command>from_hostname</command> </entry>
- <entry>
- <para>
- Comma-separated strings representing hostnames, specified using Perl-style regular
- expressions, e.g. .*\.example\.company\.com
- </para>
- <para>
- Intended for use in ACCESS VIRTUALHOST rules to apply firewall-like restrictions.
- </para>
- <para>
- The rule matches if any of the patterns match the hostname of the messaging client.
- </para>
- <para>
- To look up the client's hostname, Qpid uses Java's DNS support, which internally caches its results.
- </para>
- <para>
- You can modify the time-to-live of cached results using the *.ttl properties described on the
- Java <ulink url="http://docs.oracle.com/javase/6/docs/technotes/guides/net/properties.html">Networking
- Properties</ulink> page.
- </para>
- <para>
- For example, you can either set system property sun.net.inetaddr.ttl from the command line
- (e.g. export QPID_OPTS="-Dsun.net.inetaddr.ttl=0") or networkaddress.cache.ttl in
- $JAVA_HOME/lib/security/java.security. The latter is preferred because it is JVM
- vendor-independent.
- </para>
- </entry>
- </row>
- <row>
- <entry><command>virtualhost_name</command></entry>
- <entry>
- <para>
- String. A name of virtual host to which the rule is applied.
- </para>
- </entry>
- </row>
- <row>
- <entry><command>immediate</command></entry>
- <entry>
- <para>
- Boolean. A property can be used to restrict PUBLISH action to publishing only messages with given immediate flag.
- </para>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table id="table-Java-Broker-Security-ACLs-Syntax_javacomponents">
- <title>List of ACL JMX Components</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry> <command>UserManagement</command> </entry>
- <entry> <para>User maintenance; create/delete/view users, change passwords etc</para> </entry>
- </row>
- <row>
- <entry> <command>ConfigurationManagement</command> </entry>
- <entry> <para>Dynamically reload configuration from disk.</para> </entry>
- </row>
- <row>
- <entry> <command>LoggingManagement</command> </entry>
- <entry> <para>Dynamically control Qpid logging level</para> </entry>
- </row>
- <row>
- <entry> <command>ServerInformation</command> </entry>
- <entry> <para>Read-only information regarding the Qpid: version number etc</para> </entry>
- </row>
- <row>
- <entry> <command>VirtualHost.Queue</command> </entry>
- <entry> <para>Queue maintenance; copy/move/purge/view etc</para> </entry>
- </row>
- <row>
- <entry> <command>VirtualHost.Exchange</command> </entry>
- <entry> <para>Exchange maintenance; bind/unbind queues to exchanges</para> </entry>
- </row>
- <row>
- <entry> <command>VirtualHost.VirtualHost</command> </entry>
- <entry> <para>Virtual host maintenace; create/delete exchanges, queues etc</para> </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <section role="h4" id="Java-Broker-Security-ACLs-WorkedExamples">
- <title>
- Worked Examples
- </title>
- <para>
- Here are some example ACLs illustrating common use cases.
- In addition, note that the Java broker provides a complete example ACL file, located at etc/broker_example.acl.
- </para>
- <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample1">
- <title>
- Worked example 1 - Management rights
- </title>
- <para>
- Suppose you wish to permission two users: a user 'operator' must be able to perform all Management operations, and
- a user 'readonly' must be enable to perform only read-only functions. Neither 'operator' nor 'readonly'
- should be allowed to connect clients for messaging.
- </para>
- <programlisting>
-# Deny (loggged) operator/readonly permission to connect messaging clients.
-ACL DENY-LOG operator ACCESS VIRTUALHOST
-ACL DENY-LOG readonly ACCESS VIRTUALHOST
-# Give operator permission to perfom all other actions
-ACL ALLOW operator ALL ALL
-# Give readonly permission to execute only read-only actions
-ACL ALLOW readonly ACCESS ALL
-...
-... rules for other users
-...
-# Explicitly deny all (log) to eveyone
-ACL DENY-LOG ALL ALL
- </programlisting>
- </section>
- <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample2">
- <title>
- Worked example 2 - User maintainer group
- </title>
- <para>
- Suppose you wish to restrict User Management operations to users belonging to a
- <link linkend="Java-Broker-Security-Group-Providers">group</link> 'usermaint'. No other user
- is allowed to perform user maintenance This example illustrates the permissioning of an individual component.
- </para>
- <programlisting>
-# Give usermaint access to management and permission to execute all JMX Methods on the
-# UserManagement MBean and perform all actions for USER objects
-ACL ALLOW usermaint ACCESS MANAGEMENT
-ACL ALLOW usermaint ALL METHOD component="UserManagement"
-ACL ALLOW usermaint ALL USER
-ACL DENY ALL ALL METHOD component="UserManagement"
-ACL DENY ALL ALL USER
-...
-... rules for other users
-...
-ACL DENY-LOG ALL ALL
- </programlisting>
- </section>
- <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample3">
- <title>
- Worked example 3 - Request/Response messaging
- </title>
- <para>
- Suppose you wish to permission a system using a request/response paradigm. Two users: 'client' publishes requests;
- 'server' consumes the requests and generates a response. This example illustrates the permissioning of AMQP exchanges
- and queues.
- </para>
- <programlisting>
-# Allow client and server to connect to the virtual host.
-ACL ALLOW client ACCESS VIRTUALHOST
-ACL ALLOW server ACCESS VIRTUALHOST
-
-# Client side
-# Allow the 'client' user to publish requests to the request queue. As is the norm for the request/response paradigm, the client
-# is required to create a temporary queue on which the server will respond. Consequently, there are rules to allow the creation
-# of the temporary queues and consumption of messages from it.
-ACL ALLOW client CREATE QUEUE temporary="true"
-ACL ALLOW client CONSUME QUEUE temporary="true"
-ACL ALLOW client DELETE QUEUE temporary="true"
-ACL ALLOW client BIND EXCHANGE name="amq.direct" temporary="true"
-ACL ALLOW client UNBIND EXCHANGE name="amq.direct" temporary="true"
-ACL ALLOW client PUBLISH EXCHANGE name="amq.direct" routingKey="example.RequestQueue"
-
-# Server side
-# Allow the 'server' user to consume from the request queue and publish a response to the temporary response queue created by
-# client. We also allow the server to create the request queue.
-ACL ALLOW server CREATE QUEUE name="example.RequestQueue"
-ACL ALLOW server CONSUME QUEUE name="example.RequestQueue"
-ACL ALLOW server BIND EXCHANGE
-ACL ALLOW server PUBLISH EXCHANGE name="amq.direct" routingKey="TempQueue*"
-
-ACL DENY-LOG all all
- </programlisting>
- </section>
- <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample4">
- <title>
- Worked example 4 - firewall-like access control
- </title>
- <para>
- This example illustrates how to set up an ACL that restricts the IP addresses and hostnames
- of messaging clients that can access a virtual host.
- </para>
- <programlisting>
-################
-# Hostname rules
-################
-
-# Allow messaging clients from company1.com and company1.co.uk to connect
-ACL ALLOW all ACCESS VIRTUALHOST from_hostname=".*\.company1\.com,.*\.company1\.co\.uk"
-
-# Deny messaging clients from hosts within the dev subdomain
-ACL DENY-LOG all ACCESS VIRTUALHOST from_hostname=".*\.dev\.company1\.com"
-
-##################
-# IP address rules
-##################
-
-# Deny access to all users in the IP ranges 192.168.1.0-192.168.1.255 and 192.168.2.0-192.168.2.255,
-# using the notation specified in RFC 4632, "Classless Inter-domain Routing (CIDR)"
-ACL DENY-LOG messaging-users ACCESS VIRTUALHOST \
- from_network="192.168.1.0/24,192.168.2.0/24"
-
-# Deny access to all users in the IP ranges 192.169.1.0-192.169.1.255 and 192.169.2.0-192.169.2.255,
-# using wildcard notation.
-ACL DENY-LOG messaging-users ACCESS VIRTUALHOST \
- from_network="192.169.1.*,192.169.2.*"
-
-ACL DENY-LOG all all
- </programlisting>
- </section>
- <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample5">
- <title>
- Worked example 5 - REST management ACL example
- </title>
- <para>
- This example illustrates how to set up an ACL that restricts usage of REST management interfaces.
- </para>
- <programlisting>
-# allow to the users from webadmins group to change broker model
-# this rule allows adding/removing/editing of Broker level objects:
-# Broker, Group Provider, Authentication Provider, Port, Access Control Provider etc
-ACL ALLOW-LOG webadmins CONFIGURE BROKER
-
-# allow to the users from webadmins group to perform
-# create/update/delete on virtualhost node and children
-ACL ALLOW-LOG webadmins CREATE VIRTUALHOSTNODE
-ACL ALLOW-LOG webadmins UPDATE VIRTUALHOSTNODE
-ACL ALLOW-LOG webadmins DELETE VIRTUALHOSTNODE
-ACL ALLOW-LOG webadmins CREATE VIRTUALHOST
-ACL ALLOW-LOG webadmins UPDATE VIRTUALHOST
-ACL ALLOW-LOG webadmins DELETE VIRTUALHOST
-ACL ALLOW-LOG webadmins CREATE QUEUE
-ACL ALLOW-LOG webadmins UPDATE QUEUE
-ACL ALLOW-LOG webadmins DELETE QUEUE
-ACL ALLOW-LOG webadmins PURGE QUEUE
-ACL ALLOW-LOG webadmins CREATE EXCHANGE
-ACL ALLOW-LOG webadmins DELETE EXCHANGE
-ACL ALLOW-LOG webadmins BIND EXCHANGE
-ACL ALLOW-LOG webadmins UNBIND EXCHANGE
-
-# allow to the users from webadmins group to create/update/delete groups on Group Providers
-ACL ALLOW-LOG webadmins CREATE GROUP
-ACL ALLOW-LOG webadmins DELETE GROUP
-ACL ALLOW-LOG webadmins UPDATE GROUP
-
-# allow to the users from webadmins group to create/update/delete users for Authentication Providers
-ACL ALLOW-LOG webadmins CREATE USER
-ACL ALLOW-LOG webadmins DELETE USER
-ACL ALLOW-LOG webadmins UPDATE USER
-
-# allow to the users from webadmins group to move, copy, delete messagaes, and clear the queue
-# using REST management interfaces
-ACL ALLOW-LOG webadmins UPDATE METHOD
-
-# at the moment only the following UPDATE METHOD rules are supported by web management console
-#ACL ALLOW-LOG webadmins UPDATE METHOD component="VirtualHost.Queue" name="moveMessages"
-#ACL ALLOW-LOG webadmins UPDATE METHOD component="VirtualHost.Queue" name="copyMessages"
-#ACL ALLOW-LOG webadmins UPDATE METHOD component="VirtualHost.Queue" name="deleteMessages"
-#ACL ALLOW-LOG webadmins UPDATE METHOD component="VirtualHost.Queue" name="clearQueue"
-
-ACL DENY-LOG all all
- </programlisting>
- </section>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Anonymous.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Anonymous.xml
deleted file mode 100644
index 9c727ebc78..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Anonymous.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-Anonymous-Provider">
- <title>Anonymous</title>
-
- <para> The Anonymous Authentication Provider will allow users to connect with or without
- credentials and result in their identification on the broker as the user ANONYMOUS. This
- Provider does not require specification of any additional attributes on creation. </para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Base64MD5PasswordFile.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Base64MD5PasswordFile.xml
deleted file mode 100644
index 14319c68eb..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Base64MD5PasswordFile.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-Base64MD5PasswordFile-Provider">
- <title>Base64MD5 Password File <emphasis>(Deprecated)</emphasis></title>
- <para><emphasis>This provider is deprecated and will be removed in a future release. The
- <link linkend="Java-Broker-Security-MD5-Provider">MD5</link> provider should be used
- instead.</emphasis></para>
- <para> Base64MD5PasswordFile Provider uses local file to store and manage user credentials
- similar to PlainPasswordFile but instead of storing a password the MD5 password digest encoded
- with Base64 encoding is stored in the file. When creating an authentication provider the path
- to the file needs to be specified. If specified file does not exist an empty file is created
- automatically on Authentication Provider creation. On Base64MD5PasswordFile Provider deletion
- the password file is deleted as well.</para>
- <para>For this provider user credentials can be added, removed or changed using
- Management.</para>
- <section>
- <title>Base64MD5 File Format</title>
- <para> The user credentials are stored on the single file line as user name and user password
- pairs separated by colon character. The password is stored MD5 digest/Base64 encoded. This
- file must not be modified externally whilst the Broker is running.</para>
- </section>
-</section> \ No newline at end of file
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-External.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-External.xml
deleted file mode 100644
index 70f0d199ba..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-External.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-External-Provider">
- <title>External (SSL Client Certificates)</title>
-
- <para> When <link linkend="Java-Broker-Management-Managing-Truststores"> requiring SSL Client
- Certificates</link> be presented the External Authentication Provider can be used, such that
- the user is authenticated based on trust of their certificate alone, and the X500Principal
- from the SSL session is then used as the username for the connection, instead of also
- requiring the user to present a valid username and password. </para>
-
- <para>
- <emphasis role="bold">Note:</emphasis> The External Authentication Provider should typically
- only be used on the AMQP/HTTP ports, in conjunction with <link
- linkend="Java-Broker-Management-Managing-Ports">SSL client certificate
- authentication</link>. It is not intended for other uses such as the JMX management port and
- will treat any non-sasl authentication processes on these ports as successful with the given
- username. As such you should configure another Authentication Provider for use on JMX
- ports.</para>
-
- <para>On creation of External Provider the use of full DN or username CN as a principal name can
- be configured. If attribute "Use the full DN as the Username" is set to "true" the full DN is
- used as an authenticated principal name. If attribute "Use the full DN as the Username" is set
- to "false" the user name CN part is used as the authenticated principal name. Setting the
- field to "false" is particular useful when <link linkend="Java-Broker-Security-ACLs"
- >ACL</link> is required, as at the moment, ACL does not support commas in the user name.
- </para>
-</section>
-
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Kerberos.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Kerberos.xml
deleted file mode 100644
index fbac55f2e2..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Kerberos.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-Kerberos-Provider">
- <title>Kerberos</title>
-
- <para> Kereberos Authentication Provider uses java GSS-API SASL mechanism to authenticate the
- connections. </para>
-
- <para> Configuration of kerberos is done through system properties (there doesn't seem to be a
- way around this unfortunately). </para>
-
- <programlisting>
- export JAVA_OPTS=-Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.auth.login.config=qpid.conf
- ${QPID_HOME}/bin/qpid-server
- </programlisting>
-
- <para>Where qpid.conf would look something like this:</para>
-
- <programlisting><![CDATA[
-com.sun.security.jgss.accept {
- com.sun.security.auth.module.Krb5LoginModule required
- useKeyTab=true
- storeKey=true
- doNotPrompt=true
- realm="EXAMPLE.COM"
- useSubjectCredsOnly=false
- kdc="kerberos.example.com"
- keyTab="/path/to/keytab-file"
- principal="<name>/<host>";
-};]]></programlisting>
-
- <para> Where realm, kdc, keyTab and principal should obviously be set correctly for the
- environment where you are running (see the existing documentation for the C++ broker about
- creating a keytab file). </para>
-
- <para> Note: You may need to install the "Java Cryptography Extension (JCE) Unlimited Strength
- Jurisdiction Policy Files" appropriate for your JDK in order to get Kerberos support working. </para>
-
- <para> Since Kerberos support only works where SASL authentication is available (e.g. not for
- JMX authentication) you may wish to also include an alternative Authentication Provider
- configuration, and use this for JMX and HTTP ports. </para>
-
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-LDAP.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-LDAP.xml
deleted file mode 100644
index 81b36f4692..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-LDAP.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
-[
-<!ENTITY % entities SYSTEM "../commonEntities.xml">
-%entities;
-]>
-<!--
-
- 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 id="Java-Broker-Security-LDAP-Provider">
- <title>Simple LDAP</title>
-
- <para> The Simple LDAP authenticates connections against a Directory (LDAP). </para>
- <para> To create a SimpleLDAPAuthenticationProvider the following mandatory fields are required: <itemizedlist>
- <listitem>
- <para><emphasis>LDAP server URL</emphasis> is the URL of the server, for example,
- <literal>ldaps://example.com:636</literal></para>
- </listitem>
- <listitem>
- <para><emphasis>Search context</emphasis> is the distinguished name of the search base
- object. It defines the location from which the search for users begins, for example,
- <literal>dc=users,dc=example,dc=com</literal></para>
- </listitem>
- <listitem>
- <para><emphasis>Search filter</emphasis> is a DN template to find an LDAP user entry by
- provided user name, for example, <literal>(uid={0})</literal></para>
- </listitem>
- </itemizedlist> Additionally, the following optional fields can be specified: <itemizedlist>
- <listitem>
- <para><emphasis>LDAP context factory</emphasis> is a fully qualified class name for the
- JNDI LDAP context factory. This class must implement the <ulink
- url="&oracleJdkDocUrl;javax/naming/spi/InitialContextFactory.html"
- >InitialContextFactory</ulink> interface and produce instances of <ulink
- url="&oracleJdkDocUrl;javax/naming/directory/DirContext.html">DirContext</ulink>. If
- not specified a default value of <literal>com.sun.jndi.ldap.LdapCtxFactory</literal> is
- used.</para>
- </listitem>
- <listitem>
- <para><emphasis>LDAP authentication URL</emphasis> is the URL of LDAP server for
- performing "ldap bind". If not specified, the <emphasis>LDAP server URL</emphasis> will
- be used for both searches and authentications.</para>
- </listitem>
- <listitem>
- <para><emphasis>Truststore name</emphasis> is a name of <link
- linkend="Java-Broker-Management-Managing-Truststores-Attributes">configured
- truststore</link>. Use this if connecting to a Directory over SSL (i.e. ldaps://)
- which is protected by a certificate signed by a private CA (or utilising a self-signed
- certificate).</para>
- </listitem>
- </itemizedlist>
- </para>
-
- <important>
- <para>In order to protect the security of the user's password, when using LDAP authentication,
- you must: </para>
- <itemizedlist>
- <listitem>
- <para>Use SSL on the broker's AMQP, HTTP and JMX ports to protect the password during
- transmission to the Broker. The Broker enforces this restriction automatically on AMQP
- and HTTP ports.</para>
- </listitem>
- <listitem>
- <para>Authenticate to the Directory using SSL (i.e. ldaps://) to protect the password
- during transmission from the Broker to the Directory.</para>
- </listitem>
- </itemizedlist>
- </important>
-
- <para> The LDAP Authentication Provider works in the following manner. If not in <literal>bind
- without search</literal> mode, it first connects to the Directory and searches for the ldap
- entity which is identified by the username. The search begins at the distinguished name
- identified by <literal>Search Context</literal> and uses the username as a filter. The search
- scope is sub-tree meaning the search will include the base object and the subtree extending
- beneath it. </para>
-
- <para> If the search returns a match, or is configured in <literal>bind without search</literal>
- mode, the Authentication Provider then attempts to bind to the LDAP server with the given name
- and the password. Note that <ulink
- url="&oracleJdkDocUrl;javax/naming/Context.html#SECURITY_AUTHENTICATION">simple security
- authentication</ulink> is used so the Directory receives the password in the clear. </para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5.xml
deleted file mode 100644
index 04d8e2e84d..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-MD5-Provider">
- <title>MD5 Provider</title>
-
- <para> MD5 Provider uses the Broker configuration itself to store the database of
- users (unlike the <link linkend="Java-Broker-Security-Base64MD5PasswordFile-Provider"
- >Base64MD5 Password File</link>, there is no separate password file). Rather than store the
- unencrypted user password (as the Plain provider does) it instead stores the MD5 password
- digest. This can be further encrypted using the
- facilities described in <xref linkend="Java-Broker-Security-Configuration-Encryption"
- />.</para>
- <para>For this provider user credentials can be added, removed or changed using
- Management.</para>
-</section> \ No newline at end of file
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5PasswordFile.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5PasswordFile.xml
deleted file mode 100644
index 28b9507f06..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-MD5PasswordFile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-Base64MD5PasswordFile-Provider">
- <title>Base64MD5 Password File <emphasis>(Deprecated)</emphasis></title>
- <para><emphasis>This provider is deprecated and will be removed in a future release. The <link
- linkend="Java-Broker-Security-MD5-Provider">MD5</link> provider should be used
- instead.</emphasis></para>
- <para> Base64MD5PasswordFile Provider uses local file to store and manage user credentials
- similar to PlainPasswordFile but instead of storing a password the MD5 password digest
- encoded with Base64 encoding is stored in the file. When creating an authentication provider
- the path to the file needs to be specified. If specified file does not exist an empty file
- is created automatically on Authentication Provider creation. On Base64MD5PasswordFile
- Provider deletion the password file is deleted as well.</para>
- <para>For this provider user credentials can be added, removed or changed using
- Management.</para>
- <section>
- <title>Base64MD5 File Format</title>
- <para> The user credentials are stored on the single file line as user name and user
- password pairs separated by colon character. The password is stored MD5 digest/Base64
- encoded. This file must not be modified externally whilst the Broker is running.</para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Plain.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Plain.xml
deleted file mode 100644
index 92b8685e93..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-Plain.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-Plain-Provider">
- <title>Plain</title>
- <para>The Plain Provider uses the Broker configuration itself to store the database of users
- (unlike the <link linkend="Java-Broker-Security-PlainPasswordFile-Provider"
- >PlainPasswordFile</link>, there is no separate password file). As the name suggests,
- the user data (including password) is not hashed in any way. In order to provide encryption,
- the facilities described in <xref linkend="Java-Broker-Security-Configuration-Encryption"/>
- must be used.</para>
- <para>For this provider user credentials can be added, removed or changed using
- Management.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-PlainPasswordFile.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-PlainPasswordFile.xml
deleted file mode 100644
index 8d4fa54a1c..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-PlainPasswordFile.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-PlainPasswordFile-Provider">
- <title>Plain Password File <emphasis>(Deprecated)</emphasis></title>
- <para><emphasis>This provider is deprecated and will be removed in a future release. The <link
- linkend="Java-Broker-Security-Plain-Provider">Plain</link> provider should be used
- instead.</emphasis></para>
- <para> The PlainPasswordFile Provider uses local file to store and manage user credentials. When
- creating an authentication provider the path to the file needs to be specified. If specified
- file does not exist an empty file is created automatically on Authentication Provider
- creation. On Provider deletion the password file is deleted as well.</para>
- <para>For this provider user credentials can be added, removed or changed using
- Management.</para>
-
- <section>
- <title>Plain Password File Format</title>
- <para> The user credentials are stored on the single file line as user name and user
- password pairs separated by colon character. This file must not be modified externally
- whilst the Broker is running.</para>
- <programlisting>
-# password file format
-# &lt;user name&gt;: &lt;user password&gt;
-guest:guest
- </programlisting>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-ScramSha.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-ScramSha.xml
deleted file mode 100644
index 46d0269564..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers-ScramSha.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-ScramSha-Providers">
- <title>SCRAM SHA</title>
- <para>The SCRAM SHA Providers uses the Broker configuration itself to store the database of
- users. The users'
- passwords are stored as salted SHA digested password. This can be further encrypted using the
- facilities described in <xref linkend="Java-Broker-Security-Configuration-Encryption"
- />.</para>
- <para>There are two variants of this provider, SHA1 and SHA256. SHA256 is recommended whenever
- possible. SHA1 is provided with compatibility with clients utilising JDK 1.6 (which does not
- support SHA256).</para>
- <para>For these providers user credentials can be added, removed or changed using
- Management.</para>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers.xml
deleted file mode 100644
index b5546ffebf..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Authentication-Providers.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
- "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<!--
-
- 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 id="Java-Broker-Security-Authentication-Providers">
- <title>Authentication Providers</title>
-
- <para> In order to successfully establish a connection to the Java Broker, the connection must be
- authenticated. The Java Broker supports a number of different authentication schemes, each with
- its own "authentication provider". Any number of Authentication Providers can be configured on
- the Broker at the same time. </para>
-
- <important>
- <para> Only unused Authentication Provider can be deleted. For delete requests attempting to
- delete Authentication Provider associated with the Ports, the errors will be returned and
- delete operations will be aborted. It is possible to change the Authentication Provider on
- Port at runtime. However, the Broker restart is required for changes on Port to take effect.
- </para>
- </important>
-
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-LDAP.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-Kerberos.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-External.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-Anonymous.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-ScramSha.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-Plain.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-PlainPasswordFile.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-MD5.xml"/>
- <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers-Base64MD5PasswordFile.xml"/>
- </section>
-
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Configuration-Encryption.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Configuration-Encryption.xml
deleted file mode 100644
index 2924f2859c..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Configuration-Encryption.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-
- 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 id="Java-Broker-Security-Configuration-Encryption">
- <title>Configuration Encryption</title>
- <para> The Broker is capable of encrypting passwords and other security items stored in the
- Broker's configuration. This is means that items such as keystore/truststore passwords, JDBC
- passwords, and LDAP passwords can be stored in the configure in a form that is difficult to
- read.</para>
- <para>The Broker ships with an encryptor implementation called <literal>AESKeyFile</literal>. This
- uses a securely generated random key of 256bit<footnote><para>Java Cryptography Extension (JCE)
- Unlimited Strength required</para></footnote> to encrypt the secrets stored within a key
- file. Of course, the key itself must be guarded carefully, otherwise the passwords encrypted
- with it may be compromised. For this reason, the Broker that the file's permissions allow the
- file to be read exclusively by the user account used for running the Broker.</para>
- <important>
- <para>If the keyfile is lost or corrupted, the secrets will be irrecoverable.</para>
- </important>
- <section id="Java-Broker-Security-Configuration-Encryption-Configuration">
- <title>Configuration</title>
- <para>To use <literal>AESKeyFile</literal>, first stop the Broker, then edit the Broker's
- configuration file ${QPID_WORK}/config.json. Insert a Broker attribute called
- <literal>confidentialConfigurationEncryptionProvider</literal> with value
- <literal>AESKeyFile</literal>. On restarting the Broker, it will generate a keyfile in
- location <literal>${QPID_WORK}/.keys/</literal>. Any existing passwords contained with the
- configuration will be automatically encrypted, as will any new or changed ones in
- future.</para>
- <example>
- <title>Enanbling password encryption</title>
- <screen>
- {
- "id" : "3f183a59-abc3-40ad-8e14-0cac9de2cac4",
- "name" : "${broker.name}",
- "confidentialConfigurationEncryptionProvider" : "AESKeyFile",
- ....
- }
- </screen>
- </example>
- <para>Note that passwords stored by the Authentication Providers <link
- linkEnd="Java-Broker-Security-PlainPasswordFile-Provider">PlainPasswordFile</link> and.
- <link linkEnd="Java-Broker-Security-Base64MD5PasswordFile-Provider">PlainPasswordFile</link>
- with the external password files are <emphasis>not</emphasis> encrypted by the key. Use the
- Scram Authentication Managers instead; these make use of the Configuration Encryption when
- storing the users' passwords. </para>
- </section>
- <section id="Java-Broker-Security-Configuration-Encryption-Alternate-Implementations">
- <title>Alternate Implementations</title>
- <para>If the <literal>AESKeyFile</literal> encryptor implementation does not meet the needs of
- the user, perhaps owing to the security standards of their institution, the
- <literal>ConfigurationSecretEncrypter</literal> interface is designed as an extension point.
- Users may implement their own implementation of ConfigurationSecretEncrypter perhaps to employ
- stronger encryption or delegating the storage of the key to an Enterprise Password Safe.</para>
- </section>
-</section>
diff --git a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Group-Providers.xml b/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Group-Providers.xml
deleted file mode 100644
index ac106b195f..0000000000
--- a/qpid/doc/book/src/java-broker/security/Java-Broker-Security-Group-Providers.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-
- 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 id="Java-Broker-Security-Group-Providers">
- <title>Group Providers</title>
- <para>
- The Java broker utilises GroupProviders to allow assigning users to groups for use in <link linkend="Java-Broker-Security-ACLs">ACLs</link>.
- Following authentication by a given <link linkend="Java-Broker-Security-Authentication-Providers">Authentication Provider</link>,
- the configured Group Providers are consulted allowing the assignment of GroupPrincipals for a given authenticated user. Any number of
- Group Providers can be added into the Broker. All of them will be checked for the presence of the groups for a given authenticated user.
- </para>
-
- <section role="h3" id="File-Group-Manager">
- <title>GroupFile Provider</title>
- <para>
- The <emphasis>GroupFile</emphasis> Provider allows specifying group membership in a flat file on disk.
- On adding a new GroupFile Provider the path to the groups file is required to be specified.
- If file does not exist an empty file is created automatically. On deletion of GroupFile Provider
- the groups file is deleted as well. Only one instance of "GroupFile" Provider per groups file location can be created.
- On attempt to create another GroupFile Provider pointing to the same location the error will be displayed and
- the creation will be aborted.
- </para>
-
- <section role="h4" id="File-Group-Manager-FileFormat">
- <title>File Format</title>
- <para>
- The groups file has the following format:
- </para>
- <programlisting>
- # &lt;GroupName&gt;.users = &lt;comma delimited user list&gt;
- # For example:
-
- administrators.users = admin,manager
-</programlisting>
- <para>
- Only users can be added to a group currently, not other groups. Usernames can't contain commas.
- </para><para>
- Lines starting with a '#' are treated as comments when opening the file, but these are not preserved when the broker updates the file due to changes made through the management interface.
- </para>
- </section>
- </section>
-</section>