qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rgodf...@apache.org
Subject svn commit: r1227030 [2/8] - in /qpid/site/docs/books/trunk/AMQP-Messaging-Broker-Java-Book: html-single/ html/ html/css/ pdf/
Date Wed, 04 Jan 2012 02:22:59 GMT

Modified: qpid/site/docs/books/trunk/AMQP-Messaging-Broker-Java-Book/html-single/AMQP-Messaging-Broker-Java-Book.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/AMQP-Messaging-Broker-Java-Book/html-single/AMQP-Messaging-Broker-Java-Book.html?rev=1227030&r1=1227029&r2=1227030&view=diff
==============================================================================
--- qpid/site/docs/books/trunk/AMQP-Messaging-Broker-Java-Book/html-single/AMQP-Messaging-Broker-Java-Book.html (original)
+++ qpid/site/docs/books/trunk/AMQP-Messaging-Broker-Java-Book/html-single/AMQP-Messaging-Broker-Java-Book.html Wed Jan  4 02:22:58 2012
@@ -1,16 +1,16 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book"><div class="titlepage"><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="#id2759571">I. AMQP Messaging Broker (Implemented in Java)</a></span></dt><dd><dl><dt><span class="chapter"><a href="#id2790763">1. General User Guides</a></span></dt><dd><dl><dt><span class="section"><a href="#id2783198">1.1. 
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AMQP Messaging Broker (Implemented in Java)</title><meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" title="AMQP Messaging Broker (Implemented in Java)"><div class="titlepage"><div><div><h1 class="title"><a name="id1397902"></a>AMQP Messaging Broker (Implemented in Java)</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="#id1397921">Introduction</a></span></dt><dt><span class="chapter"><a href="#Java-General-User-Guides">1. General User Guides</a></span></dt><dd><dl><dt><span class="section"><a href="#id1398083">1.1. 
       Java Broker Feature Guide
     </a></span></dt><dd><dl><dt><span class="section"><a href="#JavaBrokerFeatureGuide-TheQpidpureJavabrokercurrentlysupportsthefollowingfeatures-3A">1.1.1. 
             The Qpid pure Java broker currently supports the following
             features:
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784593">1.2. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-FAQ">1.2. 
       Qpid Java FAQ
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaFAQ-Purpose">1.2.1. Purpose</a></span></dt></dl></dd><dt><span class="section"><a href="#id2766600">1.3. 
+    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaFAQ-Purpose">1.2.1. Purpose</a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Environment-Variables">1.3. 
       Java Environment Variables
     </a></span></dt><dd><dl><dt><span class="section"><a href="#JavaEnvironmentVariables-SettingQpidEnvironmentVariables">1.3.1. 
             Setting
             Qpid Environment Variables
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2758751">1.4. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Troubleshooting-Guide">1.4. 
       Qpid Troubleshooting Guide
     </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidTroubleshootingGuide-I-27mgettingajava.lang.UnsupportedClassVersionErrorwhenItrytostartthebroker.Whatdoesthismean-3F">1.4.1. 
             I'm getting a java.lang.UnsupportedClassVersionError when I
@@ -27,7 +27,7 @@
           </a></span></dt><dt><span class="section"><a href="#QpidTroubleshootingGuide-WhenItrytosendmessagestoaqueueI-27mgettingaerrorasthequeuedoesnotexist.WhatcanIdo-3F">1.4.5. 
             When I try to send messages to a queue I'm getting a error as
             the queue does not exist. What can I do ?
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2750224">1.5. Broker Configuration Guide </a></span></dt><dd><dl><dt><span class="section"><a href="#id2791235">1.5.1. Topic Configuration on Java Broker</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Qpid-Java-Broker-HowTos">2. How Tos</a></span></dt><dd><dl><dt><span class="section"><a href="#id2760964">2.1. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Broker-Configuration-Guide">1.5. Broker Configuration Guide </a></span></dt><dd><dl><dt><span class="section"><a href="#id1399783">1.5.1. Topic Configuration on Java Broker</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Qpid-Java-Broker-HowTos">2. How Tos</a></span></dt><dd><dl><dt><span class="section"><a href="#id1399911">2.1. 
       Add New Users
     </a></span></dt><dd><dl><dt><span class="section"><a href="#AddNewUsers-AvailablePasswordfileformats">2.1.1. 
             Available
@@ -38,11 +38,17 @@
           </a></span></dt><dt><span class="section"><a href="#AddNewUsers-HowpasswordfilesandPrincipalDatabasesrelatetoauthenticationmechanisms">2.1.3. 
             How password files and PrincipalDatabases relate to
             authentication mechanisms
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2787719">2.2. 
-      Configure ACLs
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureACLs-ConfigureACLs">2.2.1. 
-            Configure ACLs
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2768562">2.3. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Configuring-ACLS">2.2. 
+      Configuring ACLs
+  </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureACLs-EnablingACL">2.2.1. 
+       Enabling ACLs
+    </a></span></dt><dt><span class="section"><a href="#ConfigureACLs-WriteACL">2.2.2. 
+       Writing .acl files
+    </a></span></dt><dt><span class="section"><a href="#ConfigureACLs-Syntax">2.2.3. 
+       Syntax
+    </a></span></dt><dt><span class="section"><a href="#ConfigureACLs-WorkedExamples">2.2.4. 
+      Worked Examples
+    </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-SSL">2.3. 
       Configure Java Qpid to use a SSL connection.
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureJavaQpidtouseaSSLconnection.-UsingSSLconnectionwithQpidJava.">2.3.1. 
             Using SSL connection with Qpid Java.
@@ -51,22 +57,22 @@
           </a></span></dt><dt><span class="section"><a href="#ConfigureJavaQpidtouseaSSLconnection.-Performingtheconnection.">2.3.3. 
             Performing
             the connection.
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784387">2.4. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Log4j">2.4. 
       Configure Log4j CompositeRolling Appender
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureLog4jCompositeRollingAppender-HowtoconfiguretheCompositeRollinglog4jAppender">2.4.1. 
             How to configure the CompositeRolling log4j Appender
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2758708">2.5. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Broker-Config-File">2.5. 
       Configure the Broker via config.xml
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfiguretheBrokerviaconfig.xml-Brokerconfig.xmlOverview">2.5.1. 
             Broker config.xml Overview
           </a></span></dt><dt><span class="section"><a href="#ConfiguretheBrokerviaconfig.xml-QpidVersion">2.5.2. 
             Qpid
             Version
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2777839">2.6. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Broker-Virtualhosts-Config">2.6. 
       Configure the Virtual Hosts via virtualhosts.xml
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfiguretheVirtualHostsviavirtualhosts.xml-virtualhosts.xmlOverview">2.6.1. 
             virtualhosts.xml Overview
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2796862">2.7. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Broker-Debug-Logging">2.7. 
       Debug using log4j
     </a></span></dt><dd><dl><dt><span class="section"><a href="#Debugusinglog4j-Debuggingwithlog4jconfigurations">2.7.1. 
             Debugging
@@ -82,7 +88,7 @@
           </a></span></dt><dt><span class="section"><a href="#HowtoTuneM3JavaBrokerPerformance-NextSteps">2.8.3. 
             Next
             Steps
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2783933">2.9. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Build-HowTo">2.9. 
       Qpid Java Build How To
     </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaBuildHowTo-BuildInstructionsGeneral">2.9.1. 
             Build
@@ -90,7 +96,7 @@
           </a></span></dt><dt><span class="section"><a href="#QpidJavaBuildHowTo-BuildInstructionsTrunk">2.9.2. 
             Build
             Instructions - Trunk
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2760251">2.10. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Priority-Queues">2.10. 
       Use Priority Queues
     </a></span></dt><dd><dl><dt><span class="section"><a href="#UsePriorityQueues-GeneralInformation">2.10.1. 
             General
@@ -100,34 +106,34 @@
             Priority Queues
           </a></span></dt><dt><span class="section"><a href="#UsePriorityQueues-Clientconfiguration-2Fmessagingmodelforpriorityqueues">2.10.3. 
             Client configuration/messaging model for priority queues
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2782946">2.11. Slow Consumer Disconnect - User Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#id2782952">2.11.1. Introduction</a></span></dt><dt><span class="section"><a href="#id2760010">2.11.2. What can it do?</a></span></dt><dt><span class="section"><a href="#id2786790">2.11.3. Frequency of SCD Checking</a></span></dt><dt><span class="section"><a href="#id2776610">2.11.4. Client Exception<span class="bold"><strong>s</strong></span></a></span></dt><dt><span class="section"><a href="#id2800391">2.11.5. Disconnection Thresholds</a></span></dt><dt><span class="section"><a href="#id2792368">2.11.6. Important Points To Note</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Qpid-JMX-Management-Console">3. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Broker-Slow-Consumer-Disconnect">2.11. Slow Consumer Disconnect - User Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#id1403174">2.11.1. Introduction</a></span></dt><dt><span class="section"><a href="#id1403203">2.11.2. What can it do?</a></span></dt><dt><span class="section"><a href="#id1403228">2.11.3. Frequency of SCD Checking</a></span></dt><dt><span class="section"><a href="#id1403304">2.11.4. Client Exception<span class="bold"><strong>s</strong></span></a></span></dt><dt><span class="section"><a href="#id1403343">2.11.5. Disconnection Thresholds</a></span></dt><dt><span class="section"><a href="#id1403429">2.11.6. Important Points To Note</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Qpid-JMX-Management-Console">3. 
     Qpid JMX Management Console
   </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJMXManagementConsole-QpidJMXManagementConsole">3.1.  Qpid JMX Management Console </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJMXManagementConsole-Overview">3.1.1. 
 	Overview
-      </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#QpidJavaBroker-ManagementTools">4. Management Tools</a></span></dt><dd><dl><dt><span class="section"><a href="#id2801263">4.1. 
+      </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#QpidJavaBroker-ManagementTools">4. Management Tools</a></span></dt><dd><dl><dt><span class="section"><a href="#id1406284">4.1. 
       MessageStore Tool
     </a></span></dt><dd><dl><dt><span class="section"><a href="#MessageStoreTool-MessageStoreTool">4.1.1. 
             MessageStore Tool
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784083">4.2. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Broker-Management-CLI">4.2. 
       Qpid Java Broker Management CLI
     </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaBrokerManagementCLI-HowtobuildApacheQpidCLI">4.2.1. 
             How to
             build Apache Qpid CLI
-          </a></span></dt></dl></dd></dl></dd></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="#id2803123">
+          </a></span></dt></dl></dd></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="#id1398790">
             Command Line Options
-          </a></dt><dt>2.1. <a href="#id2791224">File Format and Principal Database</a></dt><dt>2.2. <a href="#id2803047"></a></dt><dt>2.3. <a href="#id2758814"></a></dt><dt>2.4. <a href="#id2768435"></a></dt><dt>2.5. <a href="#id2779176"></a></dt></dl></div><div class="part" title="Part I. AMQP Messaging Broker (Implemented in Java)"><div class="titlepage"><div><div><h1 class="title"><a name="id2759571"></a>Part I. AMQP Messaging Broker (Implemented in Java)</h1></div></div></div><div class="partintro" title="AMQP Messaging Broker (Implemented in Java)"><div></div><p>Qpid provides two AMQP messaging brokers:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Implemented in C++ - high performance, low latency, and RDMA support.</p></li><li class="listitem"><p>Implemented in Java - Fully JMS compliant, runs on any Java platform.</p></li></ul></div><p>Both AMQP messaging brokers support clients in multiple languages, as long as the me
 ssaging client and the messaging broker use the same version of AMQP. See <a class="link" href="#">???</a> to see which messaging clients work with each broker.</p><p>This section contains information specific to the broker that is implemented in Java.</p><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#id2790763">1. General User Guides</a></span></dt><dd><dl><dt><span class="section"><a href="#id2783198">1.1. 
+          </a></dt><dt>2.1. <a href="#id1400195">File Format and Principal Database</a></dt><dt>2.2. <a href="#tabl-ConfigureACLs-Syntax_permissions">ACL Rules: permission</a></dt><dt>2.3. <a href="#tabl-ConfigureACLs-Syntax_actions">ACL Rules:action</a></dt><dt>2.4. <a href="#tabl-ConfigureACLs-Syntax_objects">ACL Rules:object</a></dt><dt>2.5. <a href="#tabl-ConfigureACLs-Syntax_properties">ACL Rules:property</a></dt><dt>2.6. <a href="#tabl-ConfigureACLs-Syntax_javacomponents">ACL rules:components (Java Broker only)</a></dt><dt>2.7. <a href="#id1402188"></a></dt><dt>2.8. <a href="#id1402445"></a></dt><dt>2.9. <a href="#id1402512"></a></dt><dt>2.10. <a href="#id1402563"></a></dt></dl></div><div class="preface" title="Introduction"><div class="titlepage"><div><div><h2 class="title"><a name="id1397921"></a>Introduction</h2></div></div></div><p>Qpid provides two AMQP messaging brokers:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Imp
 lemented in C++ - high performance, low latency, and RDMA support.</p></li><li class="listitem"><p>Implemented in Java - Fully JMS compliant, runs on any Java platform.</p></li></ul></div><p>Both AMQP messaging brokers support clients in multiple languages, as long as the messaging client and the messaging broker use the same version of AMQP. See <a class="link" href="#">???</a> to see which messaging clients work with each broker.</p><p>This manual contains information specific to the broker that is implemented in Java.</p></div><div class="chapter" title="Chapter 1. General User Guides"><div class="titlepage"><div><div><h2 class="title"><a name="Java-General-User-Guides"></a>Chapter 1. General User Guides</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#id1398083">1.1. 
       Java Broker Feature Guide
     </a></span></dt><dd><dl><dt><span class="section"><a href="#JavaBrokerFeatureGuide-TheQpidpureJavabrokercurrentlysupportsthefollowingfeatures-3A">1.1.1. 
             The Qpid pure Java broker currently supports the following
             features:
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784593">1.2. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-FAQ">1.2. 
       Qpid Java FAQ
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaFAQ-Purpose">1.2.1. Purpose</a></span></dt></dl></dd><dt><span class="section"><a href="#id2766600">1.3. 
+    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaFAQ-Purpose">1.2.1. Purpose</a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Environment-Variables">1.3. 
       Java Environment Variables
     </a></span></dt><dd><dl><dt><span class="section"><a href="#JavaEnvironmentVariables-SettingQpidEnvironmentVariables">1.3.1. 
             Setting
             Qpid Environment Variables
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2758751">1.4. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Troubleshooting-Guide">1.4. 
       Qpid Troubleshooting Guide
     </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidTroubleshootingGuide-I-27mgettingajava.lang.UnsupportedClassVersionErrorwhenItrytostartthebroker.Whatdoesthismean-3F">1.4.1. 
             I'm getting a java.lang.UnsupportedClassVersionError when I
@@ -144,122 +150,7 @@
           </a></span></dt><dt><span class="section"><a href="#QpidTroubleshootingGuide-WhenItrytosendmessagestoaqueueI-27mgettingaerrorasthequeuedoesnotexist.WhatcanIdo-3F">1.4.5. 
             When I try to send messages to a queue I'm getting a error as
             the queue does not exist. What can I do ?
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2750224">1.5. Broker Configuration Guide </a></span></dt><dd><dl><dt><span class="section"><a href="#id2791235">1.5.1. Topic Configuration on Java Broker</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Qpid-Java-Broker-HowTos">2. How Tos</a></span></dt><dd><dl><dt><span class="section"><a href="#id2760964">2.1. 
-      Add New Users
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#AddNewUsers-AvailablePasswordfileformats">2.1.1. 
-            Available
-            Password file formats
-          </a></span></dt><dt><span class="section"><a href="#AddNewUsers-Dynamicchangestopasswordfiles.">2.1.2. 
-            Dynamic
-            changes to password files.
-          </a></span></dt><dt><span class="section"><a href="#AddNewUsers-HowpasswordfilesandPrincipalDatabasesrelatetoauthenticationmechanisms">2.1.3. 
-            How password files and PrincipalDatabases relate to
-            authentication mechanisms
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2787719">2.2. 
-      Configure ACLs
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureACLs-ConfigureACLs">2.2.1. 
-            Configure ACLs
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2768562">2.3. 
-      Configure Java Qpid to use a SSL connection.
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureJavaQpidtouseaSSLconnection.-UsingSSLconnectionwithQpidJava.">2.3.1. 
-            Using SSL connection with Qpid Java.
-          </a></span></dt><dt><span class="section"><a href="#ConfigureJavaQpidtouseaSSLconnection.-Setup">2.3.2. 
-            Setup
-          </a></span></dt><dt><span class="section"><a href="#ConfigureJavaQpidtouseaSSLconnection.-Performingtheconnection.">2.3.3. 
-            Performing
-            the connection.
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784387">2.4. 
-      Configure Log4j CompositeRolling Appender
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureLog4jCompositeRollingAppender-HowtoconfiguretheCompositeRollinglog4jAppender">2.4.1. 
-            How to configure the CompositeRolling log4j Appender
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2758708">2.5. 
-      Configure the Broker via config.xml
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfiguretheBrokerviaconfig.xml-Brokerconfig.xmlOverview">2.5.1. 
-            Broker config.xml Overview
-          </a></span></dt><dt><span class="section"><a href="#ConfiguretheBrokerviaconfig.xml-QpidVersion">2.5.2. 
-            Qpid
-            Version
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2777839">2.6. 
-      Configure the Virtual Hosts via virtualhosts.xml
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfiguretheVirtualHostsviavirtualhosts.xml-virtualhosts.xmlOverview">2.6.1. 
-            virtualhosts.xml Overview
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2796862">2.7. 
-      Debug using log4j
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#Debugusinglog4j-Debuggingwithlog4jconfigurations">2.7.1. 
-            Debugging
-            with log4j configurations
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#How-to-Tune-M3-Java-Broker-Performance">2.8. 
-      How to Tune M3 Java Broker Performance
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#HowtoTuneM3JavaBrokerPerformance-ProblemStatement">2.8.1. 
-            Problem
-            Statement
-          </a></span></dt><dt><span class="section"><a href="#HowtoTuneM3JavaBrokerPerformance-SuccessfulTuningOptions">2.8.2. 
-            Successful
-            Tuning Options
-          </a></span></dt><dt><span class="section"><a href="#HowtoTuneM3JavaBrokerPerformance-NextSteps">2.8.3. 
-            Next
-            Steps
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2783933">2.9. 
-      Qpid Java Build How To
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaBuildHowTo-BuildInstructionsGeneral">2.9.1. 
-            Build
-            Instructions - General
-          </a></span></dt><dt><span class="section"><a href="#QpidJavaBuildHowTo-BuildInstructionsTrunk">2.9.2. 
-            Build
-            Instructions - Trunk
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2760251">2.10. 
-      Use Priority Queues
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#UsePriorityQueues-GeneralInformation">2.10.1. 
-            General
-            Information
-          </a></span></dt><dt><span class="section"><a href="#UsePriorityQueues-DefiningPriorityQueues">2.10.2. 
-            Defining
-            Priority Queues
-          </a></span></dt><dt><span class="section"><a href="#UsePriorityQueues-Clientconfiguration-2Fmessagingmodelforpriorityqueues">2.10.3. 
-            Client configuration/messaging model for priority queues
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2782946">2.11. Slow Consumer Disconnect - User Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#id2782952">2.11.1. Introduction</a></span></dt><dt><span class="section"><a href="#id2760010">2.11.2. What can it do?</a></span></dt><dt><span class="section"><a href="#id2786790">2.11.3. Frequency of SCD Checking</a></span></dt><dt><span class="section"><a href="#id2776610">2.11.4. Client Exception<span class="bold"><strong>s</strong></span></a></span></dt><dt><span class="section"><a href="#id2800391">2.11.5. Disconnection Thresholds</a></span></dt><dt><span class="section"><a href="#id2792368">2.11.6. Important Points To Note</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Qpid-JMX-Management-Console">3. 
-    Qpid JMX Management Console
-  </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJMXManagementConsole-QpidJMXManagementConsole">3.1.  Qpid JMX Management Console </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJMXManagementConsole-Overview">3.1.1. 
-	Overview
-      </a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#QpidJavaBroker-ManagementTools">4. Management Tools</a></span></dt><dd><dl><dt><span class="section"><a href="#id2801263">4.1. 
-      MessageStore Tool
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#MessageStoreTool-MessageStoreTool">4.1.1. 
-            MessageStore Tool
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784083">4.2. 
-      Qpid Java Broker Management CLI
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaBrokerManagementCLI-HowtobuildApacheQpidCLI">4.2.1. 
-            How to
-            build Apache Qpid CLI
-          </a></span></dt></dl></dd></dl></dd></dl></div></div><div class="chapter" title="Chapter 1. General User Guides"><div class="titlepage"><div><div><h2 class="title"><a name="id2790763"></a>Chapter 1. General User Guides</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#id2783198">1.1. 
-      Java Broker Feature Guide
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#JavaBrokerFeatureGuide-TheQpidpureJavabrokercurrentlysupportsthefollowingfeatures-3A">1.1.1. 
-            The Qpid pure Java broker currently supports the following
-            features:
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784593">1.2. 
-      Qpid Java FAQ
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaFAQ-Purpose">1.2.1. Purpose</a></span></dt></dl></dd><dt><span class="section"><a href="#id2766600">1.3. 
-      Java Environment Variables
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#JavaEnvironmentVariables-SettingQpidEnvironmentVariables">1.3.1. 
-            Setting
-            Qpid Environment Variables
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2758751">1.4. 
-      Qpid Troubleshooting Guide
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidTroubleshootingGuide-I-27mgettingajava.lang.UnsupportedClassVersionErrorwhenItrytostartthebroker.Whatdoesthismean-3F">1.4.1. 
-            I'm getting a java.lang.UnsupportedClassVersionError when I
-            try to start the broker. What does this mean ?
-          </a></span></dt><dt><span class="section"><a href="#QpidTroubleshootingGuide-I-27mhavingaproblembindingtotherequiredhost-3Aportatbrokerstartup-3F">1.4.2. 
-            I'm having a problem binding to the required host:port at
-            broker startup ?
-          </a></span></dt><dt><span class="section"><a href="#QpidTroubleshootingGuide-I-27mhavingproblemswithmyclasspath.HowcanIensurethatmyclasspathisok-3F">1.4.3. 
-            I'm having problems with my classpath. How can I ensure that
-            my classpath is ok ?
-          </a></span></dt><dt><span class="section"><a href="#QpidTroubleshootingGuide-Ican-27tgetthebrokertostart.HowcanIdiagnosetheproblem-3F">1.4.4. 
-            I can't get the broker to start. How can I diagnose the
-            problem ?
-          </a></span></dt><dt><span class="section"><a href="#QpidTroubleshootingGuide-WhenItrytosendmessagestoaqueueI-27mgettingaerrorasthequeuedoesnotexist.WhatcanIdo-3F">1.4.5. 
-            When I try to send messages to a queue I'm getting a error as
-            the queue does not exist. What can I do ?
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2750224">1.5. Broker Configuration Guide </a></span></dt><dd><dl><dt><span class="section"><a href="#id2791235">1.5.1. Topic Configuration on Java Broker</a></span></dt></dl></dd></dl></div><div class="section" title="1.1.  Java Broker Feature Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2783198"></a>1.1. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Broker-Configuration-Guide">1.5. Broker Configuration Guide </a></span></dt><dd><dl><dt><span class="section"><a href="#id1399783">1.5.1. Topic Configuration on Java Broker</a></span></dt></dl></dd></dl></div><div class="section" title="1.1.  Java Broker Feature Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id1398083"></a>1.1. 
       Java Broker Feature Guide
     </h2></div></div></div><div class="section" title="1.1.1.  The Qpid pure Java broker currently supports the following features:"><div class="titlepage"><div><div><h3 class="title"><a name="JavaBrokerFeatureGuide-TheQpidpureJavabrokercurrentlysupportsthefollowingfeatures-3A"></a>1.1.1. 
             The Qpid pure Java broker currently supports the following
@@ -287,7 +178,7 @@
           </h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Flow To Disk
             </p></li><li class="listitem"><p>IP Whitelist
             </p></li><li class="listitem"><p>AMQP 0-10 Support (for interoperability)
-            </p></li></ul></div></div></div></div><div class="section" title="1.2.  Qpid Java FAQ"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2784593"></a>1.2. 
+            </p></li></ul></div></div></div></div><div class="section" title="1.2.  Qpid Java FAQ"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Qpid-Java-FAQ"></a>1.2. 
       Qpid Java FAQ
     </h2></div></div></div><div class="section" title="1.2.1. Purpose"><div class="titlepage"><div><div><h3 class="title"><a name="QpidJavaFAQ-Purpose"></a>1.2.1. Purpose</h3></div></div></div><p>
             Here are a list of commonly asked questions and answers. Click on
@@ -552,7 +443,7 @@ amqj.logging.level
             The following command line options are available:
           </p><p>
             The following options are available:
-          </p><div class="table"><a name="id2803123"></a><p class="title"><b>Table 1.1. 
+          </p><div class="table"><a name="id1398790"></a><p class="title"><b>Table 1.1. 
             Command Line Options
           </b></p><div class="table-contents"><table summary="
             Command Line Options
@@ -790,31 +681,7 @@ amqj.logging.level
           </p><p>
             These flags will not be able to tell you if the consuming
             application has received the message and is able to process it.
-          </p></div><div class="section" title="1.2.1.24.  How do I use an InVM Broker for my own tests?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-HowdoIuseanInVMBrokerformyowntests-3F"></a>1.2.1.24. 
-            How do I
-            use an InVM Broker for my own tests?
-          </h4></div></div></div><p>
-            I would take a look at the testPassiveTTL in
-	    <a class="ulink" href="https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/TimeToLiveTest.java" target="_top">TimeToLiveTest.java</a>
-          </p><p>
-            The setUp and tearDown methods show how to correctly start up a
-            broker for InVM testing. If you write your tests using a file for
-            the JNDI you can then very easily swap between running your tests
-            InVM and against a real broker.
-          </p><p>
-            See our <a class="xref" href="#">???</a> on how to confgure it
-          </p><p>
-            Basically though you just need to set two System Properites:
-          </p><p>
-            java.naming.factory.initial =
-            org.apache.qpid.jndi.PropertiesFileInitialContextFactory
-            java.naming.provider.url = &lt;your JNDI file&gt;
-          </p><p>
-            and call getInitialContext() in your code.
-          </p><p>
-            You will of course need to have the broker libraries on your
-            class path for this to run.
-          </p></div><div class="section" title="1.2.1.25.  How can I inspect the contents of my MessageStore?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-HowcanIinspectthecontentsofmyMessageStore-3F"></a>1.2.1.25. 
+          </p></div><div class="section" title="1.2.1.24.  How can I inspect the contents of my MessageStore?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-HowcanIinspectthecontentsofmyMessageStore-3F"></a>1.2.1.24. 
             How
             can I inspect the contents of my MessageStore?
           </h4></div></div></div><p>
@@ -827,7 +694,7 @@ amqj.logging.level
             2) The <a class="xref" href="#">???</a> can be used to inspect
             the contents of a persistent message store. Note: this can
             currently only be used when the broker is offline.
-          </p></div><div class="section" title="1.2.1.26.  Why are my transient messages being so slow?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-Whyaremytransientmessagesbeingsoslow-3F"></a>1.2.1.26. 
+          </p></div><div class="section" title="1.2.1.25.  Why are my transient messages being so slow?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-Whyaremytransientmessagesbeingsoslow-3F"></a>1.2.1.25. 
             Why are
             my transient messages being so slow?
           </h4></div></div></div><p>
@@ -835,7 +702,7 @@ amqj.logging.level
             this is the default. If you want to send transient messages you
             must explicitly set this option when instantiating your
             MessageProducer or on the send() method.
-          </p></div><div class="section" title="1.2.1.27.  Why does my producer fill up the broker with messages?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-Whydoesmyproducerfillupthebrokerwithmessages-3F"></a>1.2.1.27. 
+          </p></div><div class="section" title="1.2.1.26.  Why does my producer fill up the broker with messages?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-Whydoesmyproducerfillupthebrokerwithmessages-3F"></a>1.2.1.26. 
             Why
             does my producer fill up the broker with messages?
           </h4></div></div></div><p>
@@ -845,7 +712,7 @@ amqj.logging.level
             which will be addressed in the future, it is currently up to
             applications to ensure that they do not publish faster than the
             messages are being consumed for signifcant periods of time.
-          </p></div><div class="section" title="1.2.1.28.  The broker keeps throwing an OutOfMemory exception?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-ThebrokerkeepsthrowinganOutOfMemoryexception-3F"></a>1.2.1.28. 
+          </p></div><div class="section" title="1.2.1.27.  The broker keeps throwing an OutOfMemory exception?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-ThebrokerkeepsthrowinganOutOfMemoryexception-3F"></a>1.2.1.27. 
             The
             broker keeps throwing an OutOfMemory exception?
           </h4></div></div></div><p>
@@ -858,7 +725,7 @@ amqj.logging.level
             though this will only delay the exception if you are publishing
             messages faster than you are consuming. See <a class="xref" href="#">???</a> for
             details of changing the memory settings.
-          </p></div><div class="section" title="1.2.1.29.  Why am I getting a broker side exception when I try to publish to a queue or a topic ?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-WhyamIgettingabrokersideexceptionwhenItrytopublishtoaqueueoratopic-3F"></a>1.2.1.29. 
+          </p></div><div class="section" title="1.2.1.28.  Why am I getting a broker side exception when I try to publish to a queue or a topic ?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-WhyamIgettingabrokersideexceptionwhenItrytopublishtoaqueueoratopic-3F"></a>1.2.1.28. 
             Why am I getting a broker side exception when I try to
             publish to a queue or a topic ?
           </h4></div></div></div><p>
@@ -901,7 +768,7 @@ java.lang.NullPointerException 
         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) 
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) 
         at java.lang.Thread.run(Thread.java:619) 
-</pre></div><div class="section" title="1.2.1.30.  Why is there a lot of AnonymousIoService threads"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-WhyistherealotofAnonymousIoServicethreads"></a>1.2.1.30. 
+</pre></div><div class="section" title="1.2.1.29.  Why is there a lot of AnonymousIoService threads"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-WhyistherealotofAnonymousIoServicethreads"></a>1.2.1.29. 
             Why
             is there a lot of AnonymousIoService threads
           </h4></div></div></div><p>
@@ -910,7 +777,7 @@ java.lang.NullPointerException 
             this point we have seen no performance implications from the
             current configuration. As the threads are part of a pool they
             should remain inactive until required.
-          </p></div><div class="section" title='1.2.1.31.  "unable to certify the provided SSL certificate using the current SSL trust store" when connecting the Management Console to the broker.'><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ--22unabletocertifytheprovidedSSLcertificateusingthecurrentSSLtruststore-22whenconnectingtheManagementConsoletothebroker."></a>1.2.1.31. 
+          </p></div><div class="section" title='1.2.1.30.  "unable to certify the provided SSL certificate using the current SSL trust store" when connecting the Management Console to the broker.'><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ--22unabletocertifytheprovidedSSLcertificateusingthecurrentSSLtruststore-22whenconnectingtheManagementConsoletothebroker."></a>1.2.1.30. 
             "unable to certify the provided SSL certificate using the
             current SSL trust store" when connecting the Management Console
             to the broker.
@@ -918,32 +785,12 @@ java.lang.NullPointerException 
             You have not configured the console's SSL trust store properly,
             see <a class="xref" href="#">???</a> for
             more details.
-          </p></div><div class="section" title="1.2.1.32.  Client keeps throwing 'Server did not respond in a timely fashion' [error code 408: Request Timeout]."><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-Clientkeepsthrowing-27Serverdidnotrespondinatimelyfashion-27-5Cerrorcode408-3ARequestTimeout-5C."></a>1.2.1.32. 
-            Client keeps throwing 'Server did not respond in a timely
-            fashion' [error code 408: Request Timeout].
-          </h4></div></div></div><p>
-            Certain operations wait for a response from the Server. One such
-            operations is commit. If the server does not respond to the
-            commit request within a set time a Request Timeout [error code:
-            408] exception is thrown (Server did not respond in a timely
-            fashion). This is to ensure that a server that has hung does not
-            cause the client process to be come unresponsive.
-          </p><p>
-            However, it is possible that the server just needs a long time to
-            process a give request. For example, sending a large persistent
-            message when using a persistent store will take some time to a)
-            Transfer accross the network and b) to be fully written to disk.
-          </p><p>
-            These situations require that the default timeout value be
-            increased. A cilent <a class="xref" href="#">???</a> 'amqj.default_syncwrite_timeout' can be set
-            on the client to increase the wait time. The default in 0.5 is
-            30000 (30s).
-          </p></div><div class="section" title="1.2.1.33.  Can a use TCP_KEEPALIVE or AMQP heartbeating to keep my connection open?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-CanauseTCPKEEPALIVEorAMQPheartbeatingtokeepmyconnectionopen-3F"></a>1.2.1.33. 
+          </p></div><div class="section" title="1.2.1.31.  Can a use TCP_KEEPALIVE or AMQP heartbeating to keep my connection open?"><div class="titlepage"><div><div><h4 class="title"><a name="QpidJavaFAQ-CanauseTCPKEEPALIVEorAMQPheartbeatingtokeepmyconnectionopen-3F"></a>1.2.1.31. 
             Can a use TCP_KEEPALIVE or AMQP heartbeating to keep my
             connection open?
           </h4></div></div></div><p>
             See <a class="xref" href="#">???</a>
-          </p></div></div></div><div class="section" title="1.3.  Java Environment Variables"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2766600"></a>1.3. 
+          </p></div></div></div><div class="section" title="1.3.  Java Environment Variables"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Java-Environment-Variables"></a>1.3. 
       Java Environment Variables
     </h2></div></div></div><div class="section" title="1.3.1.  Setting Qpid Environment Variables"><div class="titlepage"><div><div><h3 class="title"><a name="JavaEnvironmentVariables-SettingQpidEnvironmentVariables"></a>1.3.1. 
             Setting
@@ -980,7 +827,7 @@ java.lang.NullPointerException 
             . Enclose your value within quotes if you also specify a -Xms
             value. The value in use is echo'd by the qpid-server script on
             startup.
-          </p></div></div></div><div class="section" title="1.4.  Qpid Troubleshooting Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2758751"></a>1.4. 
+          </p></div></div></div><div class="section" title="1.4.  Qpid Troubleshooting Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Qpid-Troubleshooting-Guide"></a>1.4. 
       Qpid Troubleshooting Guide
     </h2></div></div></div><div class="section" title="1.4.1.  I'm getting a java.lang.UnsupportedClassVersionError when I try to start the broker. What does this mean ?"><div class="titlepage"><div><div><h3 class="title"><a name="QpidTroubleshootingGuide-I-27mgettingajava.lang.UnsupportedClassVersionErrorwhenItrytostartthebroker.Whatdoesthismean-3F"></a>1.4.1. 
             I'm getting a java.lang.UnsupportedClassVersionError when I
@@ -1087,7 +934,7 @@ java.lang.NullPointerException 
             use this config, then simply ensure that you consume first from
             queue before staring to publish to it. See the entry on our
             <a class="xref" href="#">???</a> for more details of using the virtualhosts.xml route.
-          </p></div></div><div class="section" title="1.5. Broker Configuration Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2750224"></a>1.5. Broker Configuration Guide </h2></div></div></div><div class="section" title="1.5.1. Topic Configuration on Java Broker"><div class="titlepage"><div><div><h3 class="title"><a name="id2791235"></a>1.5.1. Topic Configuration on Java Broker</h3></div></div></div><p>New in 0.8 is the ability to define configuration for topics. Currently this is limited to
+          </p></div></div><div class="section" title="1.5. Broker Configuration Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Java-Broker-Configuration-Guide"></a>1.5. Broker Configuration Guide </h2></div></div></div><div class="section" title="1.5.1. Topic Configuration on Java Broker"><div class="titlepage"><div><div><h3 class="title"><a name="id1399783"></a>1.5.1. Topic Configuration on Java Broker</h3></div></div></div><p>New in 0.8 is the ability to define configuration for topics. Currently this is limited to
         configuration for slow consumer detection. This configuration is based on the work
         designed on the <a class="ulink" href="http://cwiki.apache.org/confluence/display/qpid/Topic+Configuration+Design" target="_top">design
             wiki</a>.</p><div class="section" title="1.5.1.1. Topic Identification"><div class="titlepage"><div><div><h4 class="title"><a name="Topic%20Identification"></a>1.5.1.1. Topic Identification</h4></div></div></div><p>A configuration section has two entries that can be used to identify how the
@@ -1110,7 +957,7 @@ java.lang.NullPointerException 
                         &lt;name&gt;stocks.us&lt;/name&gt;
                         &lt;subscriptionName&gt;clientid:mysubscription&lt;/subscriptionName&gt;
             </pre><p>
-        </p></div><div class="section" title="1.5.1.2. Configuration Items"><div class="titlepage"><div><div><h4 class="title"><a name="id2786922"></a>1.5.1.2. Configuration Items</h4></div></div></div><p> Currently only one element of the designed configuration is processed, that of the
+        </p></div><div class="section" title="1.5.1.2. Configuration Items"><div class="titlepage"><div><div><h4 class="title"><a name="id1399838"></a>1.5.1.2. Configuration Items</h4></div></div></div><p> Currently only one element of the designed configuration is processed, that of the
             slow consumer detection. This is setup as below using the 'slow-consumer-detection'
             element. There are two required types of tag, first the trigger, which is one of
             'depth', 'messageAge' or 'messageCount' and secondly the 'policy'. </p><pre class="programlisting">
@@ -1144,7 +991,7 @@ java.lang.NullPointerException 
                 &lt;/topic&gt;
             &lt;/topics&gt;
     </pre><p> A subscription for 'stocks.us' will only receive configuration settings that are
-            defined in the 'stocks.us' section. </p></div></div></div></div><div class="chapter" title="Chapter 2. How Tos"><div class="titlepage"><div><div><h2 class="title"><a name="Qpid-Java-Broker-HowTos"></a>Chapter 2. How Tos</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#id2760964">2.1. 
+            defined in the 'stocks.us' section. </p></div></div></div></div><div class="chapter" title="Chapter 2. How Tos"><div class="titlepage"><div><div><h2 class="title"><a name="Qpid-Java-Broker-HowTos"></a>Chapter 2. How Tos</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="#id1399911">2.1. 
       Add New Users
     </a></span></dt><dd><dl><dt><span class="section"><a href="#AddNewUsers-AvailablePasswordfileformats">2.1.1. 
             Available
@@ -1155,11 +1002,17 @@ java.lang.NullPointerException 
           </a></span></dt><dt><span class="section"><a href="#AddNewUsers-HowpasswordfilesandPrincipalDatabasesrelatetoauthenticationmechanisms">2.1.3. 
             How password files and PrincipalDatabases relate to
             authentication mechanisms
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2787719">2.2. 
-      Configure ACLs
-    </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureACLs-ConfigureACLs">2.2.1. 
-            Configure ACLs
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2768562">2.3. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Configuring-ACLS">2.2. 
+      Configuring ACLs
+  </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureACLs-EnablingACL">2.2.1. 
+       Enabling ACLs
+    </a></span></dt><dt><span class="section"><a href="#ConfigureACLs-WriteACL">2.2.2. 
+       Writing .acl files
+    </a></span></dt><dt><span class="section"><a href="#ConfigureACLs-Syntax">2.2.3. 
+       Syntax
+    </a></span></dt><dt><span class="section"><a href="#ConfigureACLs-WorkedExamples">2.2.4. 
+      Worked Examples
+    </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-SSL">2.3. 
       Configure Java Qpid to use a SSL connection.
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureJavaQpidtouseaSSLconnection.-UsingSSLconnectionwithQpidJava.">2.3.1. 
             Using SSL connection with Qpid Java.
@@ -1168,22 +1021,22 @@ java.lang.NullPointerException 
           </a></span></dt><dt><span class="section"><a href="#ConfigureJavaQpidtouseaSSLconnection.-Performingtheconnection.">2.3.3. 
             Performing
             the connection.
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2784387">2.4. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Log4j">2.4. 
       Configure Log4j CompositeRolling Appender
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfigureLog4jCompositeRollingAppender-HowtoconfiguretheCompositeRollinglog4jAppender">2.4.1. 
             How to configure the CompositeRolling log4j Appender
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2758708">2.5. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Broker-Config-File">2.5. 
       Configure the Broker via config.xml
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfiguretheBrokerviaconfig.xml-Brokerconfig.xmlOverview">2.5.1. 
             Broker config.xml Overview
           </a></span></dt><dt><span class="section"><a href="#ConfiguretheBrokerviaconfig.xml-QpidVersion">2.5.2. 
             Qpid
             Version
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2777839">2.6. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Broker-Virtualhosts-Config">2.6. 
       Configure the Virtual Hosts via virtualhosts.xml
     </a></span></dt><dd><dl><dt><span class="section"><a href="#ConfiguretheVirtualHostsviavirtualhosts.xml-virtualhosts.xmlOverview">2.6.1. 
             virtualhosts.xml Overview
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2796862">2.7. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Broker-Debug-Logging">2.7. 
       Debug using log4j
     </a></span></dt><dd><dl><dt><span class="section"><a href="#Debugusinglog4j-Debuggingwithlog4jconfigurations">2.7.1. 
             Debugging
@@ -1199,7 +1052,7 @@ java.lang.NullPointerException 
           </a></span></dt><dt><span class="section"><a href="#HowtoTuneM3JavaBrokerPerformance-NextSteps">2.8.3. 
             Next
             Steps
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2783933">2.9. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Qpid-Java-Build-HowTo">2.9. 
       Qpid Java Build How To
     </a></span></dt><dd><dl><dt><span class="section"><a href="#QpidJavaBuildHowTo-BuildInstructionsGeneral">2.9.1. 
             Build
@@ -1207,7 +1060,7 @@ java.lang.NullPointerException 
           </a></span></dt><dt><span class="section"><a href="#QpidJavaBuildHowTo-BuildInstructionsTrunk">2.9.2. 
             Build
             Instructions - Trunk
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2760251">2.10. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Priority-Queues">2.10. 
       Use Priority Queues
     </a></span></dt><dd><dl><dt><span class="section"><a href="#UsePriorityQueues-GeneralInformation">2.10.1. 
             General
@@ -1217,7 +1070,7 @@ java.lang.NullPointerException 
             Priority Queues
           </a></span></dt><dt><span class="section"><a href="#UsePriorityQueues-Clientconfiguration-2Fmessagingmodelforpriorityqueues">2.10.3. 
             Client configuration/messaging model for priority queues
-          </a></span></dt></dl></dd><dt><span class="section"><a href="#id2782946">2.11. Slow Consumer Disconnect - User Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#id2782952">2.11.1. Introduction</a></span></dt><dt><span class="section"><a href="#id2760010">2.11.2. What can it do?</a></span></dt><dt><span class="section"><a href="#id2786790">2.11.3. Frequency of SCD Checking</a></span></dt><dt><span class="section"><a href="#id2776610">2.11.4. Client Exception<span class="bold"><strong>s</strong></span></a></span></dt><dt><span class="section"><a href="#id2800391">2.11.5. Disconnection Thresholds</a></span></dt><dt><span class="section"><a href="#id2792368">2.11.6. Important Points To Note</a></span></dt></dl></dd></dl></div><div class="section" title="2.1.  Add New Users"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2760964"></a>2.1. 
+          </a></span></dt></dl></dd><dt><span class="section"><a href="#Java-Broker-Slow-Consumer-Disconnect">2.11. Slow Consumer Disconnect - User Guide</a></span></dt><dd><dl><dt><span class="section"><a href="#id1403174">2.11.1. Introduction</a></span></dt><dt><span class="section"><a href="#id1403203">2.11.2. What can it do?</a></span></dt><dt><span class="section"><a href="#id1403228">2.11.3. Frequency of SCD Checking</a></span></dt><dt><span class="section"><a href="#id1403304">2.11.4. Client Exception<span class="bold"><strong>s</strong></span></a></span></dt><dt><span class="section"><a href="#id1403343">2.11.5. Disconnection Thresholds</a></span></dt><dt><span class="section"><a href="#id1403429">2.11.6. Important Points To Note</a></span></dt></dl></dd></dl></div><div class="section" title="2.1.  Add New Users"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id1399911"></a>2.1. 
       Add New Users
     </h2></div></div></div><p>
             The Qpid Java Broker has a single reference source (<a class="xref" href="#">???</a>) that
@@ -1364,7 +1217,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
             about the SASL module they support and not the type of
             PrincipalDatabase. So I client that understands CRAM-MD5 will
             work correctly with a Plain and Base64MD5 PrincipalDatabase.
-          </p><div class="table"><a name="id2791224"></a><p class="title"><b>Table 2.1. File Format and Principal Database</b></p><div class="table-contents"><table summary="File Format and Principal Database" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
+          </p><div class="table"><a name="id1400195"></a><p class="title"><b>Table 2.1. File Format and Principal Database</b></p><div class="table-contents"><table summary="File Format and Principal Database" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
                   FileFormat/PrincipalDatabase
                 </td><td>
                   SASL
@@ -1378,26 +1231,165 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
                   CRAM-MD5 CRAM-MD5-HASHED
                 </td></tr></tbody></table></div></div><br class="table-break"><p>
             For details of SASL support see <a class="xref" href="#">???</a>
-          </p></div></div><div class="section" title="2.2.  Configure ACLs"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2787719"></a>2.2. 
-      Configure ACLs
-    </h2></div></div></div><div class="section" title="2.2.1.  Configure ACLs"><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureACLs-ConfigureACLs"></a>2.2.1. 
-            Configure ACLs
-          </h3></div></div></div><div class="section" title="2.2.1.1.  Specification"><div class="titlepage"><div><div><h4 class="title"><a name="ConfigureACLs-Specification"></a>2.2.1.1. 
-            Specification
-          </h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-              <a class="xref" href="#">???</a>
-            </p></li><li class="listitem"><p>
-              <a class="xref" href="#">???</a>
-            </p></li></ul></div></div><div class="section" title="2.2.1.2.  C++ Broker"><div class="titlepage"><div><div><h4 class="title"><a name="ConfigureACLs-CBroker"></a>2.2.1.2. 
-            C++ Broker
-          </h4></div></div></div><p>
-            The C++ broker supports <a class="xref" href="#">???</a> of the ACLs
-          </p></div><div class="section" title="2.2.1.3.  Java Broker"><div class="titlepage"><div><div><h4 class="title"><a name="ConfigureACLs-JavaBroker"></a>2.2.1.3. 
-            Java Broker
-          </h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-              <a class="xref" href="#">???</a>
-            </p></li><li class="listitem"><p>Support for Version 2 specification is in progress.
-            </p></li></ul></div></div></div></div><div class="section" title="2.3.  Configure Java Qpid to use a SSL connection."><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2768562"></a>2.3. 
+          </p></div></div><div class="section" title="2.2.  Configuring ACLs"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Configuring-ACLS"></a>2.2. 
+      Configuring ACLs
+  </h2></div></div></div><p>
+    In Qpid, ACLs specify which actions can be performed by each authenticated user. To enable the ACL &lt;acl/&gt; element is used within the 
+    &lt;security/&gt; element of the configuration XML. In the Java Broker, the ACL may be imposed broker wide or applied to individual virtual
+    hosts.  The  &lt;acl/&gt; references a text file containing the ACL rules.  By convention, this file should have a .acl extension.
+  </p><div class="section" title="2.2.1.  Enabling ACLs"><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureACLs-EnablingACL"></a>2.2.1. 
+       Enabling ACLs
+    </h3></div></div></div><p>
+      To apply an ACL broker-wide, add the following to the config.xml (Assuming that <em class="replaceable"><code>conf</code></em> has been set to a suitable
+      location such as ${QPID_HOME}/etc)
+    </p><pre class="programlisting">
+      &lt;broker&gt;
+        ...
+        &lt;security&gt;
+          ...
+          &lt;acl&gt;<em class="replaceable"><code>${conf}/broker.acl</code></em>&lt;/acl&gt;
+        &lt;/security&gt;
+      &lt;/broker&gt;
+    </pre><p>
+    </p><p>
+      To apply an ACL on a single virtualhost named <em class="replaceable"><code>test</code></em>, add the following to the config.xml:
+    </p><pre class="programlisting">
+      &lt;virtualhost&gt;
+        ...
+        &lt;name&gt;test&lt;/name&gt;
+        &lt;test&gt;
+          ...
+          &lt;security&gt;
+            &lt;acl&gt;<em class="replaceable"><code>${conf}/vhost_test.acl</code></em>&lt;/acl&gt;
+          &lt;/security&gt;
+        &lt;/test&gt;
+      &lt;/virtualhost&gt;
+    </pre></div><div class="section" title="2.2.2.  Writing .acl files"><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureACLs-WriteACL"></a>2.2.2. 
+       Writing .acl files
+    </h3></div></div></div><p>
+      The ACL file consists of a series of rules and group definitions.  Each rule grants or denies specific rights to a user or group. Group
+      definitions declare groups of users and serve to make the ACL file more concise.
+    </p><p>
+      Each ACL rule grants (or denies) a particular action on a object to a user.  The rule may be augmented with one or more properties, restricting
+      the rule's applicability.
+    </p><pre class="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"
+    </pre><p>
+      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.
+    </p><pre class="programlisting">
+      ACL ALLOW bob ALL EXCHANGE
+      ACL DENY bob CREATE EXCHANGE name="myexch"  # Dead rule
+    </pre><p>
+      If the desire is to allow bob to create all exchanges except "myexch", order of the rules must be reversed:
+    </p><pre class="programlisting">
+      ACL DENY bob CREATE EXCHANGE name="myexch" 
+      ACL ALLOW bob ALL EXCHANGE
+    </pre><p>
+      All ACL files end with a implict rule denying all operations to all users.  It is as if each file ends with 
+      </p><pre class="programlisting">ACL DENY ALL ALL </pre><p>
+      To allow all operations, other than those controlled by earlier use </p><pre class="programlisting">ACL ALLOW ALL ALL </pre><p> instead.
+    </p><p>
+      When writing a new ACL, a good approach is to begin with an .acl file containing only </p><pre class="programlisting">ACL DENY-LOG ALL ALL</pre><p>
+      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, switch the DEBY-LOG to DENY for optimum performamce.
+    </p><p>
+      ACL rules are very powerful: it is possible to write very expressive rules permissioning every AMQP objects enumerating all object
+      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 (i.e. QUEUE) and apply consistently across the whole system.
+    </p></div><div class="section" title="2.2.3.  Syntax"><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureACLs-Syntax"></a>2.2.3. 
+       Syntax
+    </h3></div></div></div><p>
+       ACL rules must follow this syntax:
+    </p><pre class="programlisting">
+     ACL {permission} {&lt;group-name&gt;|&lt;user-name&gt;&gt;|ALL} {action|ALL} [object|ALL] [property="&lt;property-value&gt;"]
+    </pre><p>
+       GROUP definitions must follow this syntax:
+    </p><pre class="programlisting">
+     GROUP {group name} {username 1}..{username n} # Where username is a username, or a groupname.
+    </pre><p>
+       Comments may be introduced with the hash (#) character and are ignored.  Long lines can be broken with the slash (\) character.
+    </p><pre class="programlisting">
+      # A comment
+      ACL ALLOW admin CREATE ALL # Also a comment
+      ACL DENY guest \
+      ALL ALL   # A broken line
+      GROUP securegroup bob \
+      alice # Another broker line
+    </pre></div><div class="table"><a name="tabl-ConfigureACLs-Syntax_permissions"></a><p class="title"><b>Table 2.2. ACL Rules: permission</b></p><div class="table-contents"><table summary="ACL Rules: permission" border="1"><colgroup><col><col></colgroup><tbody><tr><td><span class="command"><strong>ALLOW</strong></span></td><td><p>Allow the action</p></td></tr><tr><td><span class="command"><strong>ALLOW-LOG</strong></span></td><td><p> Allow the action and log the action in the log </p></td></tr><tr><td><span class="command"><strong>DENY</strong></span></td><td><p> Deny the action</p></td></tr><tr><td><span class="command"><strong>DENY-LOG</strong></span></td><td><p> Deny the action and log the action in the log</p></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="tabl-ConfigureACLs-Syntax_actions"></a><p class="title"><b>Table 2.3. ACL Rules:action</b></p><div class="table-contents"><table summary="ACL Rules:action" border="1"><co
 lgroup><col><col></colgroup><tbody><tr><td> <span class="command"><strong>CONSUME</strong></span> </td><td> <p> Applied when subscriptions are created </p> </td></tr><tr><td> <span class="command"><strong>PUBLISH</strong></span> </td><td> <p> Applied on a per message basis on publish message transfers</p> </td></tr><tr><td> <span class="command"><strong>CREATE</strong></span> </td><td> <p> Applied when an object is created, such as bindings, queues, exchanges</p> </td></tr><tr><td> <span class="command"><strong>ACCESS</strong></span> </td><td> <p> Applied when an object is read or accessed</p> </td></tr><tr><td> <span class="command"><strong>BIND</strong></span> </td><td> <p> Applied when queues are bound to exchanges</p> </td></tr><tr><td> <span class="command"><strong>UNBIND</strong></span> </td><td> <p> Applied when queues are unbound from exchanges</p> </td></tr><tr><td> <span class="command"><strong>DELETE</strong></span> </td><td> <p> Applied when objects are deleted <
 /p> </td></tr><tr><td> <span class="command"><strong>PURGE</strong></span> </td><td>
+          <p>Applied when purge the contents of a queue</p> </td></tr><tr><td> <span class="command"><strong>UPDATE</strong></span> </td><td> <p> Applied when an object is updated </p> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="tabl-ConfigureACLs-Syntax_objects"></a><p class="title"><b>Table 2.4. ACL Rules:object</b></p><div class="table-contents"><table summary="ACL Rules:object" border="1"><colgroup><col><col></colgroup><tbody><tr><td> <span class="command"><strong>QUEUE</strong></span> </td><td> <p> A queue </p> </td></tr><tr><td> <span class="command"><strong>EXCHANGE</strong></span> </td><td> <p> An exchange </p> </td></tr><tr><td> <span class="command"><strong>VIRTUALHOST</strong></span> </td><td> <p> A virtualhost (Java Broker only)</p> </td></tr><tr><td> <span class="command"><strong>METHOD</strong></span> </td><td> <p> Management or agent or broker method (Java Broker only)</p> </td></tr><tr><td> <span class="command"
 ><strong>BROKER</strong></span> </td><td> <p> The broker (not currently used in Java Broker)</p> </td></tr><tr><td> <span class="command"><strong>LINK</strong></span> </td><td> <p> A federation or inter-broker link (not currently used in Java Broker)</p> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="tabl-ConfigureACLs-Syntax_properties"></a><p class="title"><b>Table 2.5. ACL Rules:property</b></p><div class="table-contents"><table summary="ACL Rules:property" border="1"><colgroup><col><col></colgroup><tbody><tr><td><span class="command"><strong>name</strong></span> </td><td> <p> String. Object name, such as a queue name, exchange name or JMX method name.  </p> </td></tr><tr><td> <span class="command"><strong>durable</strong></span> </td><td> <p> Boolean. Indicates the object is durable </p> </td></tr><tr><td> <span class="command"><strong>routingkey</strong></span> </td><td> <p> String. Specifies routing key </p> </td></tr><tr><t
 d> <span class="command"><strong>passive</strong></span> </td><td> <p> Boolean. Indicates the presence of a <em class="parameter"><code>passive</code></em> flag </p> </td></tr><tr><td> <span class="command"><strong>autodelete</strong></span> </td><td> <p> Boolean. Indicates whether or not the object gets deleted when the connection is closed </p> </td></tr><tr><td> <span class="command"><strong>exclusive</strong></span> </td><td> <p> Boolean. Indicates the presence of an <em class="parameter"><code>exclusive</code></em> flag </p> </td></tr><tr><td> <span class="command"><strong>temporary</strong></span> </td><td> <p> Boolean. Indicates the presence of an <em class="parameter"><code>temporary</code></em> flag </p> </td></tr><tr><td> <span class="command"><strong>type</strong></span> </td><td> <p> String. Type of object, such as topic, fanout, or xml </p> </td></tr><tr><td> <span class="command"><strong>alternate</strong></span> </td><td> <p> String. Name of the alternate exch
 ange </p> </td></tr><tr><td> <span class="command"><strong>queuename</strong></span> </td><td> <p> String. Name of the queue (used only when the object is something other than <em class="parameter"><code>queue</code></em> </p> </td></tr><tr><td> <span class="command"><strong>component</strong></span> </td><td> <p> String. JMX component name (Java Broker only)</p> </td></tr><tr><td> <span class="command"><strong>schemapackage</strong></span> </td><td> <p> String. QMF schema package name (Not used in Java Broker)</p> </td></tr><tr><td> <span class="command"><strong>schemaclass</strong></span> </td><td> <p> String. QMF schema class name (Not used in Java Broker)</p> </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="tabl-ConfigureACLs-Syntax_javacomponents"></a><p class="title"><b>Table 2.6. ACL rules:components (Java Broker only)</b></p><div class="table-contents"><table summary="ACL rules:components (Java Broker only)" border="1"><colg
 roup><col><col><col></colgroup><tbody><tr><td> <span class="command"><strong>UserManagement</strong></span> </td><td> <p>User maintainance; create/delete/view users, change passwords etc</p> </td><td> <p>permissionable at broker level only</p> </td></tr><tr><td> <span class="command"><strong>ConfigurationManagement</strong></span> </td><td> <p>Dynammically reload configuration from disk.</p> </td><td> <p>permissionable at broker level only</p> </td></tr><tr><td> <span class="command"><strong>LoggingManagement</strong></span> </td><td> <p>Dynammically control Qpid logging level</p> </td><td> <p>permissionable at broker level only</p> </td></tr><tr><td> <span class="command"><strong>ServerInformation</strong></span> </td><td> <p>Read-only information regarding the Qpid: version number etc</p> </td><td> <p>permissionable at broker level only</p> </td></tr><tr><td> <span class="command"><strong>VirtualHost.Queue</strong></span> </td><td> <p>Queue maintainance; copy/move/purge/vi
 ew etc</p> </td><td class="auto-generated"> </td></tr><tr><td> <span class="command"><strong>VirtualHost.Exchange</strong></span> </td><td> <p>Exchange maintenance; bind/unbind queues to exchanges</p> </td><td class="auto-generated"> </td></tr><tr><td> <span class="command"><strong>VirtualHost.VirtualHost</strong></span> </td><td> <p>Virtual host maintainace; create/delete exchanges, queues etc</p> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break"><div class="section" title="2.2.4.  Worked Examples"><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureACLs-WorkedExamples"></a>2.2.4. 
+      Worked Examples
+    </h3></div></div></div><p>
+       Here are three example ACLs illustrating some common use-cases.
+    </p><div class="section" title="2.2.4.1.  Worked example 1 - Management rights"><div class="titlepage"><div><div><h4 class="title"><a name="ConfigureACLs-WorkedExample1"></a>2.2.4.1. 
+        Worked example 1 - Management rights
+      </h4></div></div></div><p>
+         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 allow to connect for messaging.
+      </p><pre class="programlisting">
+        # Give operator permission to execute all JMX Methods
+        ACL ALLOW operator ALL METHOD
+        # Give operator permission to execute only read-only JMX Methods
+        ACL ALLOW readonly ACCESS METHOD
+        # Deny operator/readonly permission to perform messaging.
+        ACL DENY operator ACCESS VIRTUALHOST
+        ACL DENY readonly ACCESS VIRTUALHOST
+        ...
+        ... rules for other users
+        ...
+        # Explicitly deny all (log) to eveyone 
+        ACL DENY-LOG ALL ALL
+      </pre></div><div class="section" title="2.2.4.2.  Worked example 2 - User maintainer group"><div class="titlepage"><div><div><h4 class="title"><a name="ConfigureACLs-WorkedExample2"></a>2.2.4.2. 
+        Worked example 2 - User maintainer group
+      </h4></div></div></div><p>
+         Suppose you wish to restrict User Management operations to users belonging to a group 'usermaint'.  No other user
+         is allowed to perform user maintainence  This example illustrates the permissioning of a individual component 
+         and a group definition.
+      </p><pre class="programlisting">
+        # Create a group usermaint with members bob and alice
+        GROUP usermaint bob alice
+        # Give operator permission to execute all JMX Methods
+        ACL ALLOW usermaint ALL METHOD component="UserManagement"
+        ACL DENY ALL ALL METHOD component="UserManagement"
+        ...
+        ... rules for other users
+        ...
+        ACL DENY-LOG ALL ALL
+      </pre></div><div class="section" title="2.2.4.3.  Worked example 3 - Request/Response messaging"><div class="titlepage"><div><div><h4 class="title"><a name="ConfigureACLs-WorkedExample3"></a>2.2.4.3. 
+        Worked example 3 - Request/Response messaging
+      </h4></div></div></div><p>
+         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.
+      </p><pre class="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 response.  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
+      </pre></div></div></div><div class="section" title="2.3.  Configure Java Qpid to use a SSL connection."><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Qpid-Java-SSL"></a>2.3. 
       Configure Java Qpid to use a SSL connection.
     </h2></div></div></div><div class="section" title="2.3.1.  Using SSL connection with Qpid Java."><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureJavaQpidtouseaSSLconnection.-UsingSSLconnectionwithQpidJava."></a>2.3.1. 
             Using SSL connection with Qpid Java.
@@ -1418,8 +1410,8 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
 &lt;ssl&gt;
     &lt;enabled&gt;true&lt;/enabled&gt;
     &lt;sslOnly&gt;true&lt;/sslOnly&gt;
-    &lt;keystorePath&gt;/path/to/keystore.ks&lt;/keystorePath&gt;
-    &lt;keystorePassword&gt;keystorepass&lt;/keystorePassword&gt;
+    &lt;keyStorePath&gt;/path/to/keystore.ks&lt;/keyStorePath&gt;
+    &lt;keyStorePassword&gt;keystorepass&lt;/keyStorePassword&gt;
 &lt;/ssl&gt;
 </pre><p>
             The sslOnly option is included here for completeness however this
@@ -1436,7 +1428,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
           </p></div></div><div class="section" title="2.3.3.  Performing the connection."><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureJavaQpidtouseaSSLconnection.-Performingtheconnection."></a>2.3.3. 
             Performing
             the connection.
-          </h3></div></div></div><p></p></div></div><div class="section" title="2.4.  Configure Log4j CompositeRolling Appender"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2784387"></a>2.4. 
+          </h3></div></div></div><p></p></div></div><div class="section" title="2.4.  Configure Log4j CompositeRolling Appender"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Qpid-Java-Log4j"></a>2.4. 
       Configure Log4j CompositeRolling Appender
     </h2></div></div></div><div class="section" title="2.4.1.  How to configure the CompositeRolling log4j Appender"><div class="titlepage"><div><div><h3 class="title"><a name="ConfigureLog4jCompositeRollingAppender-HowtoconfiguretheCompositeRollinglog4jAppender"></a>2.4.1. 
             How to configure the CompositeRolling log4j Appender
@@ -1538,7 +1530,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
         &lt;param name="ZeroBased" value="true"/&gt;
         &lt;!-- Backup Location --&gt;
         &lt;param name="backupFilesToPath" value="${QPID_WORK}/backup/log"/&gt;
-</pre></li></ol></div></div></div><div class="section" title="2.5.  Configure the Broker via config.xml"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2758708"></a>2.5. 
+</pre></li></ol></div></div></div><div class="section" title="2.5.  Configure the Broker via config.xml"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Qpid-Java-Broker-Config-File"></a>2.5. 
       Configure the Broker via config.xml
     </h2></div></div></div><div class="section" title="2.5.1.  Broker config.xml Overview"><div class="titlepage"><div><div><h3 class="title"><a name="ConfiguretheBrokerviaconfig.xml-Brokerconfig.xmlOverview"></a>2.5.1. 
             Broker config.xml Overview
@@ -1567,7 +1559,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
           </p><p>
             <a class="xref" href="#">???</a>
             <a class="xref" href="#">???</a>
-          </p></div></div><div class="section" title="2.6.  Configure the Virtual Hosts via virtualhosts.xml"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2777839"></a>2.6. 
+          </p></div></div><div class="section" title="2.6.  Configure the Virtual Hosts via virtualhosts.xml"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Qpid-Java-Broker-Virtualhosts-Config"></a>2.6. 
       Configure the Virtual Hosts via virtualhosts.xml
     </h2></div></div></div><div class="section" title="2.6.1.  virtualhosts.xml Overview"><div class="titlepage"><div><div><h3 class="title"><a name="ConfiguretheVirtualHostsviavirtualhosts.xml-virtualhosts.xmlOverview"></a>2.6.1. 
             virtualhosts.xml Overview
@@ -1659,7 +1651,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
           </p><p>
             When using your own virtualhosts.xml you must edit this path to
             point at the location of your file.
-          </p></div></div></div><div class="section" title="2.7.  Debug using log4j"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2796862"></a>2.7. 
+          </p></div></div></div><div class="section" title="2.7.  Debug using log4j"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Java-Broker-Debug-Logging"></a>2.7. 
       Debug using log4j
     </h2></div></div></div><div class="section" title="2.7.1.  Debugging with log4j configurations"><div class="titlepage"><div><div><h3 class="title"><a name="Debugusinglog4j-Debuggingwithlog4jconfigurations"></a>2.7.1. 
             Debugging
@@ -1941,7 +1933,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
           </p><p>
             These strategies have been successfully tested to mitigate this
             problem:
-          </p><div class="table"><a name="id2803047"></a><p class="title"><b>Table 2.2. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
+          </p><div class="table"><a name="id1402188"></a><p class="title"><b>Table 2.7. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
                   Strategy
                 </td><td>
                   Result
@@ -2000,7 +1992,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
             The using programme should then choose the option most applicable
             for their deployment and perform BAU testing before any
             implementation into a production or pilot environment.
-          </p></div></div><div class="section" title="2.9.  Qpid Java Build How To"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2783933"></a>2.9. 
+          </p></div></div><div class="section" title="2.9.  Qpid Java Build How To"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Qpid-Java-Build-HowTo"></a>2.9. 
       Qpid Java Build How To
     </h2></div></div></div><div class="section" title="2.9.1.  Build Instructions - General"><div class="titlepage"><div><div><h3 class="title"><a name="QpidJavaBuildHowTo-BuildInstructionsGeneral"></a>2.9.1. 
             Build
@@ -2042,7 +2034,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
             level build script which inherits from the template.
           </p><p>
             So, at the top level there are:
-          </p><div class="table"><a name="id2758814"></a><p class="title"><b>Table 2.3. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
+          </p><div class="table"><a name="id1402445"></a><p class="title"><b>Table 2.8. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
                   File
                 </td><td>
                   Description
@@ -2062,7 +2054,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
                   module builds
                 </td></tr></tbody></table></div></div><br class="table-break"><p>
             Then, in each module subdirectory there is:
-          </p><div class="table"><a name="id2768435"></a><p class="title"><b>Table 2.4. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
+          </p><div class="table"><a name="id1402512"></a><p class="title"><b>Table 2.9. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
                   File
                 </td><td>
                   Description
@@ -2074,7 +2066,7 @@ martin:X03MO1qnZdYdgyfeuILPmQ==
             Build targets
           </h4></div></div></div><p>
             The main build targets you are probably interested in are:
-          </p><div class="table"><a name="id2779176"></a><p class="title"><b>Table 2.5. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
+          </p><div class="table"><a name="id1402563"></a><p class="title"><b>Table 2.10. </b></p><div class="table-contents"><table summary="" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
                   Target
                 </td><td>
                   Description
@@ -2204,7 +2196,7 @@ for i in `find . -name build.xml` ; do e
           </p><p>
             If you want to run our tests, you can use the ant test or
             testreport (produces a useful report) targets.
-          </p></div></div></div><div class="section" title="2.10.  Use Priority Queues"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2760251"></a>2.10. 
+          </p></div></div></div><div class="section" title="2.10.  Use Priority Queues"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Priority-Queues"></a>2.10. 
       Use Priority Queues
     </h2></div></div></div><div class="section" title="2.10.1.  General Information"><div class="titlepage"><div><div><h3 class="title"><a name="UsePriorityQueues-GeneralInformation"></a>2.10.1. 
             General
@@ -2295,19 +2287,19 @@ amqp://guest:guest@client1/development?m
             If you are using the receive() method to consume messages then
             you should also only use one consumer per session with priority
             queues. If you're using OnMessage() then this is not a concern.
-          </p></div></div></div><div class="section" title="2.11. Slow Consumer Disconnect - User Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2782946"></a>2.11. Slow Consumer Disconnect - User Guide</h2></div></div></div><div class="section" title="2.11.1. Introduction"><div class="titlepage"><div><div><h3 class="title"><a name="id2782952"></a>2.11.1. Introduction</h3></div></div></div><p>Slow Consumer Disconnect (SCD) is a new feature in Qpid that provides a configurable
+          </p></div></div></div><div class="section" title="2.11. Slow Consumer Disconnect - User Guide"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Java-Broker-Slow-Consumer-Disconnect"></a>2.11. Slow Consumer Disconnect - User Guide</h2></div></div></div><div class="section" title="2.11.1. Introduction"><div class="titlepage"><div><div><h3 class="title"><a name="id1403174"></a>2.11.1. Introduction</h3></div></div></div><p>Slow Consumer Disconnect (SCD) is a new feature in Qpid that provides a configurable
         mechanism to prevent a single slow consumer from causing a back up of unconsumed messages on
         the broker. </p><p>This is most relevant where Topics are in use, since a published message is not removed
         from the broker's memory until all subscribers have acknowledged that message. </p><p>Cases where a consumer is 'slow' can arise due to one of the following: poor network
         connectivity exists; a transient system issue affects a single client; a single subscriber
         written by a client team is behaving incorrectly and not acknowledging messages; a
         downstream resource such as a database is non-responsive. </p><p>SCD will enable the application owner to configure limits for a given consumer's queue and
-        the behaviour to execute when those limits are reached. </p></div><div class="section" title="2.11.2. What can it do?"><div class="titlepage"><div><div><h3 class="title"><a name="id2760010"></a>2.11.2. What can it do?</h3></div></div></div><p>SCD is only applicable to topics or durable subscriptions and can be configured on either
+        the behaviour to execute when those limits are reached. </p></div><div class="section" title="2.11.2. What can it do?"><div class="titlepage"><div><div><h3 class="title"><a name="id1403203"></a>2.11.2. What can it do?</h3></div></div></div><p>SCD is only applicable to topics or durable subscriptions and can be configured on either
         a topic or a subscription name. </p><p>On triggering of a specified threshold the offending client will be disconnected from the
         broker with a 506 error code wrapped in a JMSException returned to the client via the
         ExceptionListener registered on the Connection object. </p><p>Note that it is essential that an ExceptionListener be specified by the client on
         creation of the connection and that exceptions coming back on that listener are handled
-        correctly. </p></div><div class="section" title="2.11.3. Frequency of SCD Checking"><div class="titlepage"><div><div><h3 class="title"><a name="id2786790"></a>2.11.3. Frequency of SCD Checking</h3></div></div></div><div class="section" title="2.11.3.1. Configuring Frequency"><div class="titlepage"><div><div><h4 class="title"><a name="id2786795"></a>2.11.3.1. <span class="bold"><strong>Configuring Frequency</strong></span></h4></div></div></div><p>You can configure the frequency with which the SCD process will check for slow consumers,
+        correctly. </p></div><div class="section" title="2.11.3. Frequency of SCD Checking"><div class="titlepage"><div><div><h3 class="title"><a name="id1403228"></a>2.11.3. Frequency of SCD Checking</h3></div></div></div><div class="section" title="2.11.3.1. Configuring Frequency"><div class="titlepage"><div><div><h4 class="title"><a name="id1403233"></a>2.11.3.1. <span class="bold"><strong>Configuring Frequency</strong></span></h4></div></div></div><p>You can configure the frequency with which the SCD process will check for slow consumers,
           along with the unit of time used to specify that frequency. </p><p>The <span class="italic">virtualhosts.virtualhost.hostname.slow-consumer-detection</span>
           elements <span class="italic">delay</span> and <span class="italic">timeunit</span>
           are used to specify the frequency and timeunit respectively in the virtualhosts.xml
@@ -2324,10 +2316,10 @@ amqp://guest:guest@client1/development?m
 		&lt;/test&gt;
 	&lt;/virtualhost&gt;
 &lt;/virtualhosts&gt;

[... 125 lines stripped ...]


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org


Mime
View raw message