diff options
55 files changed, 1123 insertions, 2953 deletions
diff --git a/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml b/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml index 81eb6df0fc..519e4feace 100644 --- a/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml +++ b/doc/book/src/java-broker/AMQP-Messaging-Broker-Java-Book.xml @@ -8,60 +8,32 @@ 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> - <title>AMQP Messaging Broker (Implemented in Java)</title> - <preface> - <title>Introduction</title> - <para>Qpid provides two AMQP messaging brokers:</para> - - <itemizedlist> - <listitem><para>Implemented in C++ - high performance, low latency, and RDMA support.</para></listitem> - <listitem><para>Implemented in Java - Fully JMS compliant, runs on any Java platform.</para></listitem> - </itemizedlist> - - <para>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.</para> - - <para>This manual contains information specific to the broker that is implemented in Java.</para> - </preface> - -<chapter id="Java-General-User-Guides"> - <title>General User Guides</title> - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Feature-Guide.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Qpid-Java-FAQ.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Environment-Variables.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Qpid-Troubleshooting-Guide.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Broker-Configuration-Guide.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="HA-Guide.xml"/> -</chapter> - -<chapter id="Qpid-Java-Broker-HowTos"> -<title>How Tos</title> - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Add-New-Users.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Configure-ACLs.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Configure-Group-Providers.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Configure-Java-Qpid-to-use-a-SSL-connection.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Configure-Log4j-CompositeRolling-Appender.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Configure-the-Broker-via-config.xml.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Configure-the-Virtual-Hosts-via-virtualhosts.xml.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Configure-AuthenticationProviders.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Debug-using-log4j.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="How-to-Tune-M3-Java-Broker-Performance.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Qpid-Java-Build-How-To.xml"/> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="OtherQueueTypes.xml"/> -</chapter> +<title>AMQP Messaging Broker (Java)</title> + +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 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-Virtual-Hosts.xml"/> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Exchanges.xml"/> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Queues.xml"/> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Stores.xml"/> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Configuring-And-Managing.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"/> </book> diff --git a/doc/book/src/java-broker/Add-New-Users.xml b/doc/book/src/java-broker/Add-New-Users.xml deleted file mode 100644 index dc34bcc5c9..0000000000 --- a/doc/book/src/java-broker/Add-New-Users.xml +++ /dev/null @@ -1,237 +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><title> - Add New Users - </title><para> - The Qpid Java Broker has a single reference source (<xref linkend="qpid_PrincipalDatabase"/>) that - defines all the users in the system. - </para><para> - To add a new user to the broker the password file must be - updated. The details about adding entries and when these updates - take effect are dependent on the file format each of which are - described below. - </para> - - <section role="h2" id="AddNewUsers-AvailablePasswordfileformats"><title> - Available - Password file formats - </title> - <para> - There are currently two different file formats available for use - depending on the PrincipalDatabase that is desired. In all cases - the clients need not be aware of the type of PrincipalDatabase in - use they only need support the SASL mechanisms they provide. - </para><itemizedlist> - <listitem><para> - <xref linkend="AddNewUsers-Plain"/> - </para></listitem> - <listitem><para> - <xref linkend="AddNewUsers-Base64MD5PasswordFileFormat"/> - </para></listitem> - </itemizedlist><para> - - </para> - - <section role="h3" id="AddNewUsers-Plain"><title> - Plain - </title> - <para> - The plain file has the following format: - </para> - <programlisting> -# Plain password authentication file. -# default name : passwd -# Format <username>:<password> -#e.g. -martin:password -</programlisting> - <para> - As the contents of the file are plain text and the password is - taken to be everything to the right of the ':'(colon). The - password, therefore, cannot contain a ':' colon, but this can be - used to delimit the password. - </para><para> - Lines starting with a '#' are treated as comments. - </para> -<!--h3--></section> - - <section role="h3" id="AddNewUsers-Whereisthepasswordfileformybroker-3F"><title> - Where is - the password file for my broker ? - </title> - <para> - The location of the password file in use for your broker is as - configured in your config.xml file. - </para> - <programlisting> -<principal-databases> - <principal-database> - <name>passwordfile</name> - <class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class> - <attributes> - <attribute> - <name>passwordFile</name> - <value>${conf}/passwd</value> - </attribute> - </attributes> - </principal-database> - </principal-databases> -</programlisting> - <para> - So in the example config.xml file this password file lives in the - directory specified as the conf directory (at the top of your - config.xml file). - </para><para> - If you wish to use Base64 encoding for your password file, then - in the <class> element above you should specify - org.apache.qpid.server.security.auth.database.Base64MD5PasswordFilePrincipalDatabase - </para><para> - The default is: - </para> - <programlisting> - <conf>${prefix}/etc</conf> -</programlisting> -<!--h3--></section> - - - <section role="h3" id="AddNewUsers-Base64MD5PasswordFileFormat"><title> - Base64MD5 - Password File Format - </title> - <para> - This format can be used to ensure that SAs cannot read the plain - text password values from your password file on disk. - </para><para> - The Base64MD5 file uses the following format: - </para> - <programlisting> -# Base64MD5 password authentication file -# default name : qpid.passwd -# Format <username>:<Base64 Encoded MD5 hash of the users password> -#e.g. -martin:X03MO1qnZdYdgyfeuILPmQ== -</programlisting> - <para> - As with the Plain format the line is delimited by a ':'(colon). - The password field contains the MD5 Hash of the users password - encoded in Base64. - </para><para> - This file is read on broker start-up and is not re-read. - </para> -<!--h3--></section> - - <section role="h3" id="AddNewUsers-HowcanIupdateaBase64MD5passwordfile-3F"><title> - How can - I update a Base64MD5 password file ? - </title> - <para> - To update the file there are two options: - </para><orderedlist> - <listitem><para>Edit the file by hand using the <emphasis>qpid-passwd</emphasis> tool - that will generate the required lines. The output from the tool - is the text that needs to be copied in to your active password - file. This tool is located in the broker bin directory. - Eventually it is planned for this tool to emulate the - functionality of <xref linkend="qpid_htpasswd"/> - for qpid passwd files. - <emphasis>NOTE:</emphasis> For the changes to be seen by the broker you must - either restart the broker or reload the data with the - management tools (see <xref linkend="Qpid-JMX-Management-Console-User-Guide"/>) - </para></listitem> - <listitem><para>Use the management tools to create a new user. The changes - will be made by the broker to the password file and the new user - will be immediately available to the system (see <xref linkend="Qpid-JMX-Management-Console-User-Guide"/>). - </para></listitem> - </orderedlist> -<!--h3--></section> -<!--h2--></section> - - - <section role="h2" id="AddNewUsers-Dynamicchangestopasswordfiles."><title> - Dynamic - changes to password files. - </title> - <para> - The Plain password file and the Base64MD5 format file are both - only read once on start up. - </para><para> - To make changes dynamically there are two options, both require - administrator access via the Management Console (see <xref linkend="Qpid-JMX-Management-Console-User-Guide"/>) - </para><orderedlist> - <listitem><para>You can replace the file and use the console to reload its - contents. - </para></listitem> - <listitem><para>The management console provides an interface to create, - delete and amend the users. These changes are written back to the - active password file. - </para></listitem> - </orderedlist> -<!--h2--></section> - - <section role="h2" id="AddNewUsers-HowpasswordfilesandPrincipalDatabasesrelatetoauthenticationmechanisms"><title> - How password files and PrincipalDatabases relate to - authentication mechanisms - </title> - <para> - For each type of password file a PrincipalDatabase exists that - parses the contents. These PrincipalDatabases load various SASL - mechanism based on their supportability. e.g. the Base64MD5 file - format can't support Plain authentication as the plain password - is not available. Any client connecting need only be concerned - 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. - </para><table> - <title>File Format and Principal Database</title><tgroup cols="2"> - <tbody> - <row> - <entry> - FileFormat/PrincipalDatabase - </entry> - <entry> - SASL - </entry> - </row> - <row> - <entry> - Plain - </entry> - <entry> - AMQPLAIN PLAIN CRAM-MD5 - </entry> - </row> - <row> - <entry> - Base64MD5 - </entry> - <entry> - CRAM-MD5 CRAM-MD5-HASHED - </entry> - </row> - </tbody> - </tgroup></table><para> - For details of SASL support see <xref linkend="qpid_Qpid-Interoperability-Documentation"/> - </para> -<!--h2--></section> - -</section> diff --git a/doc/book/src/java-broker/Broker-Configuration-Guide.xml b/doc/book/src/java-broker/Broker-Configuration-Guide.xml deleted file mode 100644 index f827dbfaa7..0000000000 --- a/doc/book/src/java-broker/Broker-Configuration-Guide.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-Configuration-Guide"> - <title>Broker Configuration Guide </title> - - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Producer-Flow-Control.xml"/> -</section> diff --git a/doc/book/src/java-broker/Configure-Java-Qpid-to-use-a-SSL-connection.xml b/doc/book/src/java-broker/Configure-Java-Qpid-to-use-a-SSL-connection.xml deleted file mode 100644 index 838b899337..0000000000 --- a/doc/book/src/java-broker/Configure-Java-Qpid-to-use-a-SSL-connection.xml +++ /dev/null @@ -1,84 +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-Java-SSL"><title> - Configure Java Qpid to use a SSL connection. - </title> - - <section role="h2" id="ConfigureJavaQpidtouseaSSLconnection.-UsingSSLconnectionwithQpidJava."><title> - Using SSL connection with Qpid Java. - </title> - <para> - This section will show how to use SSL to enable secure - connections between a Java client and broker. - </para> -<!--h2--></section> - <section role="h2" id="ConfigureJavaQpidtouseaSSLconnection.-Setup"><title> - Setup - </title> - <section role="h3" id="ConfigureJavaQpidtouseaSSLconnection.-BrokerSetup"><title> - Broker - Setup - </title> - <para> - The broker configuration file (config.xml) needs to be updated to - include the SSL keystore location details. - </para> - -<programlisting> -<!-- Additions required to Connector Section --> - -<ssl> - <enabled>true</enabled> - <sslOnly>true</sslOnly> - <keyStorePath>/path/to/keystore.ks</keyStorePath> - <keyStorePassword>keystorepass</keyStorePassword> -</ssl> -</programlisting> - - <para> - The sslOnly option is included here for completeness however this - will disable the unencrypted port and leave only the SSL port - listening for connections. - </para> -<!--h3--></section> - <section role="h3" id="ConfigureJavaQpidtouseaSSLconnection.-ClientSetup"><title> - Client - Setup - </title> - <para> - The best place to start looking is class - <emphasis>SSLConfiguration</emphasis> this is provided to the connection - during creation however there is currently no example that - demonstrates its use. - </para> -<!--h3--></section> -<!--h2--></section> - - <section role="h2" id="ConfigureJavaQpidtouseaSSLconnection.-Performingtheconnection."><title> - Performing - the connection. - </title> - <para/> - <!--h2--></section> -</section> diff --git a/doc/book/src/java-broker/Configure-Log4j-CompositeRolling-Appender.xml b/doc/book/src/java-broker/Configure-Log4j-CompositeRolling-Appender.xml deleted file mode 100644 index f52bc55399..0000000000 --- a/doc/book/src/java-broker/Configure-Log4j-CompositeRolling-Appender.xml +++ /dev/null @@ -1,150 +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-Java-Log4j"><title> - Configure Log4j CompositeRolling Appender - </title> - <section role="h2" id="ConfigureLog4jCompositeRollingAppender-HowtoconfiguretheCompositeRollinglog4jAppender"><title> - How to configure the CompositeRolling log4j Appender - </title> - <para> - There are several sections of our default log4j file that will - need your attention if you wish to fully use this Appender. - </para> - - <orderedlist> - <listitem> - <para>Enable the Appender</para> - <para> - The default log4j.xml file uses the FileAppender, swap this for - the ArchivingFileAppender as follows: - </para> - <programlisting> - <!-- Log all info events to file --> - <root> - <priority value="info"/> - - <appender-ref ref="ArchivingFileAppender"/> - </root> -</programlisting> - </listitem> - <listitem> - <para> - Configure the Appender - </para> - - <para> - The Appender has a number of parameters that can be adjusted - depending on what you are trying to achieve. For clarity lets - take a quick look at the complete default appender: - </para> - <programlisting> - <appender name="ArchivingFileAppender" class="org.apache.log4j.QpidCompositeRollingAppender"> - <!-- Ensure that logs allways have the dateFormat set--> - <param name="StaticLogFileName" value="false"/> - <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> - <param name="Append" value="false"/> - <!-- Change the direction so newer files have bigger numbers --> - <!-- So log.1 is written then log.2 etc This prevents a lot of file renames at log rollover --> - <param name="CountDirection" value="1"/> - <!-- Use default 10MB --> - <!--param name="MaxFileSize" value="100000"/--> - <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm"/> - <!-- Unlimited number of backups --> - <param name="MaxSizeRollBackups" value="-1"/> - <!-- Compress(gzip) the backup files--> - <param name="CompressBackupFiles" value="true"/> - <!-- Compress the backup files using a second thread --> - <param name="CompressAsync" value="true"/> - <!-- Start at zero numbered files--> - <param name="ZeroBased" value="true"/> - <!-- Backup Location --> - <param name="backupFilesToPath" value="${QPID_WORK}/backup/log"/> - - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> - </layout> - </appender> -</programlisting> - <para> - The appender configuration has three groups of parameter - configuration. - </para><para> - The first group is for configuration of the file name. The - default is to write a log file to QPID_WORK/log/qpid.log - (Remembering you can use the logprefix and logsuffix values to - modify the file name, see Property Config). - </para> - <programlisting> - <!-- Ensure that logs always have the dateFormat set--> - <param name="StaticLogFileName" value="false"/> - <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> - <param name="Append" value="false"/> -</programlisting> - <para> - The second section allows the specification of a Maximum File - Size and a DatePattern that will be used to move on to the next - file. - </para><para> - When MaxFileSize is reached a new log file will be created - The DataPattern is used to decide when to create a new log file, - so here a new file will be created for every minute and every - 10Meg of data. So if 15MB of data is made every minute then there - will be two log files created each minute. One at the start of - the minute and a second when the file hit 10MB. When the next - minute arrives a new file will be made even though it only has - 5MB of content. For a production system it would be expected to - be changed to something like 'yyyy-MM-dd' which would make a new - log file each day and keep the files to a max of 10MB. - </para><para> - The final MaxSizeRollBackups allows you to limit the amount of - disk you are using by only keeping the last n backups. - </para> - <programlisting> - <!-- Change the direction so newer files have bigger numbers --> - <!-- So log.1 is written then log.2 etc This prevents a lot of file renames at log rollover --> - <param name="CountDirection" value="1"/> - <!-- Use default 10MB --> - <!--param name="MaxFileSize" value="100000"/--> - <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm"/> - <!-- Unlimited number of backups --> - <param name="MaxSizeRollBackups" value="-1"/> -</programlisting> - <para> - The final section allows the old log files to be compressed and - copied to a new location. - </para> - <programlisting> - <!-- Compress(gzip) the backup files--> - <param name="CompressBackupFiles" value="true"/> - <!-- Compress the backup files using a second thread --> - <param name="CompressAsync" value="true"/> - <!-- Start at zero numbered files--> - <param name="ZeroBased" value="true"/> - <!-- Backup Location --> - <param name="backupFilesToPath" value="${QPID_WORK}/backup/log"/> -</programlisting> -</listitem> -</orderedlist> -<!--h2--></section> -</section> diff --git a/doc/book/src/java-broker/Configure-the-Broker-via-config.xml.xml b/doc/book/src/java-broker/Configure-the-Broker-via-config.xml.xml deleted file mode 100644 index 6a7729acd8..0000000000 --- a/doc/book/src/java-broker/Configure-the-Broker-via-config.xml.xml +++ /dev/null @@ -1,71 +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-Java-Broker-Config-File"> - <title> - Configure the Broker via config.xml - </title> - <section role="h2" id="ConfiguretheBrokerviaconfig.xml-Brokerconfig.xmlOverview"> - <title> - Broker config.xml Overview - </title> - <para> - The broker config.xml file which is shipped in the etc directory - of any Qpid binary distribution details various options and - configuration for the Java Qpid broker implementation. - </para> - <para> - In tandem with the virtualhosts.xml file, the config.xml file - allows you to control much of the deployment detail for your Qpid - broker in a flexible fashion. - </para> - <para> - Note that you can pass the config.xml you wish to use for your - broker instance to the broker using the -c command line option. - In turn, you can specify the paths for the broker password file - and virtualhosts.xml files in your config.xml for simplicity. - </para> - <para> - For more information about command line configuration options - please see <xref linkend="QpidDesign-Configuration-ConfigurationMethods"/>. - </para> - <!--h2--> - </section> - - <section role="h2" id="ConfiguretheBrokerviaconfig.xml-QpidVersion"> - <title> - Qpid - Version - </title> - <para> - The config format has changed between versions here you can find - the configuration details on a per version basis. - </para> - <para> - <xref linkend="qpid_M2-20--20config.xml"/> - <xref linkend="qpid_M2.1-20--20config.xml"/> - </para> - <!--h2--> - </section> - -</section> diff --git a/doc/book/src/java-broker/Configure-the-Virtual-Hosts-via-virtualhosts.xml.xml b/doc/book/src/java-broker/Configure-the-Virtual-Hosts-via-virtualhosts.xml.xml deleted file mode 100644 index 804970b923..0000000000 --- a/doc/book/src/java-broker/Configure-the-Virtual-Hosts-via-virtualhosts.xml.xml +++ /dev/null @@ -1,131 +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-Java-Broker-Virtualhosts-Config"><title> - Configure the Virtual Hosts via virtualhosts.xml - </title><section role="h2" id="ConfiguretheVirtualHostsviavirtualhosts.xml-virtualhosts.xmlOverview"><title> - virtualhosts.xml Overview - </title> - <para> - This configuration file contains details of all queues and - topics, and associated properties, to be created on broker - startup. These details are configured on a per virtual host - basis. - </para><para> - Note that if you do not add details of a queue or topic you - intend to use to this file, you must first create a consumer on a - queue/topic before you can publish to it using Qpid. - </para><para> - Thus most application deployments need a virtualhosts.xml file - with at least some minimal detail. - </para> - - <section role="h3" id="ConfiguretheVirtualHostsviavirtualhosts.xml-XMLFormatwithComments"><title> - XML Format with Comments - </title> - <para> - The virtualhosts.xml which currently ships as part of the Qpid - distribution is really targeted at development use, and supports - various artifacts commonly used by the Qpid development team. - </para><para> - As a result, it is reasonably complex. In the example XML below, - I have tried to simplify one example virtual host setup which is - possibly more useful for new users of Qpid or development teams - looking to simply make use of the Qpid broker in their - deployment. - </para><para> - I have also added some inline comments on each section, which - should give some extra information on the purpose of the various - elements. - </para> - - - - <programlisting> -<virtualhosts> - <!-- Sets the default virtual host for connections which do not specify a vh --> - <default>localhost</default> - <!-- Define a virtual host and all it's config --> - <virtualhost> - <name>localhost</name> - <localhost> - <!-- Define the types of additional AMQP exchange available for this vh --> - <!-- Always get amq.direct (for queues) and amq.topic (for topics) by default --> - <exchanges> - <!-- Example of declaring an additional exchanges type for developer use only --> - <exchange> - <type>direct</type> - <name>test.direct</name> - <durable>true</durable> - </exchange> - </exchanges> - - <!-- Define the set of queues to be created at broker startup --> - <queues> - <!-- The properties configured here will be applied as defaults to all --> - <!-- queues subsequently defined unless explicitly overridden --> - <exchange>amq.direct</exchange> - <!-- Set threshold values for queue monitor alerting to log --> - <maximumQueueDepth>4235264</maximumQueueDepth> <!-- 4Mb --> - <maximumMessageSize>2117632</maximumMessageSize> <!-- 2Mb --> - <maximumMessageAge>600000</maximumMessageAge> <!-- 10 mins --> - - <!-- Define a queue with all default settings --> - <queue> - <name>ping</name> - </queue> - <!-- Example definitions of queues with overriden settings --> - <queue> - <name>test-queue</name> - <test-queue> - <exchange>test.direct</exchange> - <durable>true</durable> - </test-queue> - </queue> - <queue> - <name>test-ping</name> - <test-ping> - <exchange>test.direct</exchange> - </test-ping> - </queue> - </queues> - </localhost> - </virtualhost> -</virtualhosts> -</programlisting> -<!--h3--></section> - <section role="h3" id="ConfiguretheVirtualHostsviavirtualhosts.xml-Usingyourownvirtualhosts.xml"><title> - Using your own virtualhosts.xml - </title> - - <para> - Note that the config.xml file shipped as an example (or developer - default) in the Qpid distribution contains an element which - defines the path to the virtualhosts.xml. - </para><para> - When using your own virtualhosts.xml you must edit this path to - point at the location of your file. - </para> -<!--h3--></section> -<!--h2--></section> -</section> diff --git a/doc/book/src/java-broker/Debug-using-log4j.xml b/doc/book/src/java-broker/Debug-using-log4j.xml deleted file mode 100644 index 615fd9e560..0000000000 --- a/doc/book/src/java-broker/Debug-using-log4j.xml +++ /dev/null @@ -1,298 +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-Debug-Logging"><title> - Debug using log4j - </title> - - <section role="h2" id="Debugusinglog4j-Debuggingwithlog4jconfigurations"><title> - Debugging - with log4j configurations - </title> - <para> - Unfortunately setting of logging in the Java Broker is not simply - a matter of setting one of WARN,INFO,DEBUG. At some point in the - future we may have more BAU logging that falls in to that - category but more likely is that we will have a varioius config - files that can be swapped in (dynamically) to understand what is - going on. - </para><para> - This page will be host to a variety of useful configuration - setups that will allow a user or developer to extract only the - information they are interested in logging. Each section will be - targeted at logging in a particular area and will include a full - log4j file that can be used. In addition the logging - <emphasis>category</emphasis> elements will be presented and discussed so - that the user can create their own file. - </para><para> - Currently the configuration that is available has not been fully - documented and as such there are gaps in what is desired and what - is available. Some times this is due to the desire to reduce the - overhead in message processing, but sometimes it is simply an - oversight. Hopefully in future releases the latter will be - addressed but care needs to be taken when adding logging to the - 'Message Flow' path as this will have performance implications. - </para> - - <section role="h3" id="Debugusinglog4j-LoggingConnectionState-5CDeprecated-5C"><title> - Logging - Connection State *Deprecated* - </title> - <para> - <emphasis>deprecation notice</emphasis> Version 0.6 of the Java broker includes - <xref linkend="qpid_Configure-Operational-Status-Logging"/> functionality which improves upon these messages and - as such enabling status logging would be more beneficial. - The configuration file has been left here for assistence with - broker versions prior to 0.6. - </para><para> - The goals of this configuration are to record: - </para><itemizedlist> - <listitem><para>New Connections - </para></listitem> - <listitem><para>New Consumers - </para></listitem> - <listitem><para>Identify slow consumers - </para></listitem> - <listitem><para>Closing of Consumers - </para></listitem> - <listitem><para>Closing of Connections - </para></listitem> - </itemizedlist><para> - An additional goal of this configuration is to minimise any - impact to the 'message flow' path. So it should not adversely - affect production systems. - </para> -<programlisting> -<![CDATA[ -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> - <appender name="FileAppender" class="org.apache.log4j.FileAppender"> - <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> - <param name="Append" value="false"/> - - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> - </layout> - - </appender> - - <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> - - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> - </layout> - </appender> - - <category name="Qpid.Broker"> - - <priority value="debug"/> - </category> - - - <!-- Provide warnings to standard output --> - <category name="org.apache.qpid"> - <priority value="warn"/> - </category> - - - <!-- Connection Logging --> - - <!-- Log details of client starting connection --> - <category name="org.apache.qpid.server.handler.ConnectionStartOkMethodHandler"> - <priority value="info"/> - </category> - <!-- Log details of client closing connection --> - <category name="org.apache.qpid.server.handler.ConnectionCloseMethodHandler"> - <priority value="info"/> - </category> - <!-- Log details of client responding to be asked to closing connection --> - - <category name="org.apache.qpid.server.handler.ConnectionCloseOkMethodHandler"> - <priority value="info"/> - </category> - - - <!-- Consumer Logging --> - <!-- Provide details of Consumers connecting--> - <category name="org.apache.qpid.server.handler.BasicConsumeMethodHandler"> - <priority value="debug"/> - </category> - - <!-- Provide details of Consumers disconnecting, if the call it--> - <category name="org.apache.qpid.server.handler.BasicCancelMethodHandler"> - <priority value="debug"/> - </category> - <!-- Provide details of when a channel closes to attempt to match to the Consume as a Cancel is not always issued--> - <category name="org.apache.qpid.server.handler.ChannelCloseHandler"> - <priority value="info"/> - </category> - - <!-- Provide details of Consumers starting to consume--> - <category name="org.apache.qpid.server.handler.ChannelFlowHandler"> - <priority value="debug"/> - </category> - <!-- Provide details of what consumers are going to be consuming--> - <category name="org.apache.qpid.server.handler.QueueBindHandler"> - <priority value="info"/> - </category> - - <!-- No way of determining if publish message is returned, client log should show it.--> - - <root> - <priority value="debug"/> - <appender-ref ref="STDOUT"/> - <appender-ref ref="FileAppender"/> - </root> - -</log4j:configuration> -]]> -</programlisting> - <!--h3--></section> - - <section role="h3" id="Debugusinglog4j-DebuggingMyApplication"><title> - Debugging My - Application - </title> - <para> - This is the most often asked for set of configuration. The goals - of this configuration are to record: - </para><itemizedlist> - <listitem><para>New Connections - </para></listitem> - <listitem><para>New Consumers - </para></listitem> - <listitem><para>Message Publications - </para></listitem> - <listitem><para>Message Consumption - </para></listitem> - <listitem><para>Identify slow consumers - </para></listitem> - <listitem><para>Closing of Consumers - </para></listitem> - <listitem><para>Closing of Connections - </para></listitem> - </itemizedlist><para> - NOTE: This configuration enables message logging on the 'message - flow' path so should only be used were message volume is - low. - <emphasis>Every message that is sent to the broker will generate at - least four logging statements</emphasis> - </para> -<programlisting> -<![CDATA[ -<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> - <appender name="FileAppender" class="org.apache.log4j.FileAppender"> - <param name="File" value="${QPID_WORK}/log/${logprefix}qpid${logsuffix}.log"/> - <param name="Append" value="false"/> - - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> - </layout> - - </appender> - - <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> - - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> - </layout> - </appender> - - <category name="Qpid.Broker"> - - <priority value="debug"/> - </category> - - - <!-- Provide warnings to standard output --> - <category name="org.apache.qpid"> - <priority value="warn"/> - </category> - - - <!-- Connection Logging --> - - <!-- Log details of client starting connection --> - <category name="org.apache.qpid.server.handler.ConnectionStartOkMethodHandler"> - <priority value="info"/> - </category> - <!-- Log details of client closing connection --> - <category name="org.apache.qpid.server.handler.ConnectionCloseMethodHandler"> - <priority value="info"/> - </category> - <!-- Log details of client responding to be asked to closing connection --> - - <category name="org.apache.qpid.server.handler.ConnectionCloseOkMethodHandler"> - <priority value="info"/> - </category> - - <!-- Consumer Logging --> - <!-- Provide details of Consumers connecting--> - <category name="org.apache.qpid.server.handler.BasicConsumeMethodHandler"> - <priority value="debug"/> - </category> - - <!-- Provide details of Consumers disconnecting, if the call it--> - <category name="org.apache.qpid.server.handler.BasicCancelMethodHandler"> - <priority value="debug"/> - </category> - <!-- Provide details of when a channel closes to attempt to match to the Consume as a Cancel is not always issued--> - <category name="org.apache.qpid.server.handler.ChannelCloseHandler"> - <priority value="info"/> - </category> - - <!-- Provide details of Consumers starting to consume--> - <category name="org.apache.qpid.server.handler.ChannelFlowHandler"> - <priority value="debug"/> - </category> - <!-- Provide details of what consumers are going to be consuming--> - <category name="org.apache.qpid.server.handler.QueueBindHandler"> - <priority value="info"/> - </category> - - <!-- No way of determining if publish message is returned, client log should show it.--> - - <!-- WARNING DO NOT ENABLE THIS IN PRODUCTION --> - <!-- Will generate minimum one log statements per published message --> - <!-- Will generate will log receiving of all body frame, count will vary on size of message.--> - <!-- Empty Message = no body, Body is up to 64kb of data --> - <!-- Will generate three log statements per recevied message --> - - <!-- Log messages flow--> - <category name="org.apache.qpid.server.AMQChannel"> - - <priority value="debug"/> - </category> - - <root> - <priority value="debug"/> - <appender-ref ref="STDOUT"/> - <appender-ref ref="FileAppender"/> - </root> - -</log4j:configuration> -]]> -</programlisting> - -<!--h3--></section> -<!--h2--></section> -</section> diff --git a/doc/book/src/java-broker/How-to-Tune-M3-Java-Broker-Performance.xml b/doc/book/src/java-broker/How-to-Tune-M3-Java-Broker-Performance.xml deleted file mode 100644 index f7fffbaceb..0000000000 --- a/doc/book/src/java-broker/How-to-Tune-M3-Java-Broker-Performance.xml +++ /dev/null @@ -1,172 +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="How-to-Tune-M3-Java-Broker-Performance"> - <title> - How to Tune M3 Java Broker Performance - </title> - <section role="h3" id="HowtoTuneM3JavaBrokerPerformance-ProblemStatement"> - <title> - Problem - Statement - </title> - <para> - During destructive testing of the Qpid M3 Java Broker, we tested - some tuning techniques and deployment changes to improve the Qpid - M3 Java Broker's capacity to maintain high levels of throughput, - particularly in the case of a slower consumer than produceer - (i.e. a growing backlog). - </para> - <para> - The focus of this page is to detail the results of tuning & - deployment changes trialled. - </para> - <para> - The successful tuning changes are applicable for any deployment - expecting to see bursts of high volume throughput (1000s of - persistent messages in large batches). Any user wishing to use - these options <emphasis>must test them thoroughly in their own - environment with representative volumes</emphasis>. - </para> - <!--h3--> - </section> - - <section role="h3" id="HowtoTuneM3JavaBrokerPerformance-SuccessfulTuningOptions"> - <title> - Successful - Tuning Options - </title> - <para> - The key scenario being taregetted by these changes is a broker - under heavy load (processing a large batch of persistent - messages)can be seen to perform slowly when filling up with an - influx of high volume transient messages which are queued behind - the persistent backlog. However, the changes suggested will be - equally applicable to general heavy load scenarios. - </para> - <para> - The easiest way to address this is to separate streams of - messages. Thus allowing the separate streams of messages to be - processed, and preventing a backlog behind a particular slow - consumer. - </para> - <para> - These strategies have been successfully tested to mitigate this - problem: - </para> - <table> - <title/> - <tgroup cols="2"> - <tbody> - <row> - <entry> - Strategy - </entry> - <entry> - Result - </entry> - </row> - <row> - <entry> - Seperate connections to one broker for separate streams of - messages. - </entry> - <entry> - Messages processed successfully, no problems experienced - </entry> - </row> - <row> - <entry> - Seperate brokers for transient and persistent messages. - </entry> - <entry> - Messages processed successfully, no problems experienced - </entry> - </row> - </tbody> - </tgroup> - </table> - <para> - <emphasis>Separate Connections</emphasis> - Using separate connections effectively means that the two streams - of data are not being processed via the same buffer, and thus the - broker gets & processes the transient messages while - processing the persistent messages. Thus any build up of - unprocessed data is minimal and transitory. - </para> - <para> - <emphasis>Separate Brokers</emphasis> - Using separate brokers may mean more work in terms of client - connection details being changed, and from an operational - perspective. However, it is certainly the most clear cut way of - isolating the two streams of messages and the heaps impacted. - </para> - <section role="h4" id="HowtoTuneM3JavaBrokerPerformance-Additionaltuning"> - <title> - Additional - tuning - </title> - <para> - It is worth testing if changing the size of the Qpid read/write - thread pool improves performance (eg. by setting - JAVA_OPTS="-Damqj.read_write_pool_size=32" before running - qpid-server). By default this is equal to the number of CPU - cores, but a higher number may show better performance with some - work loads. - </para> - <para> - It is also important to note that you should give the Qpid broker - plenty of memory - for any serious application at least a -Xmx of - 3Gb. If you are deploying on a 64 bit platform, a larger heap is - definitely worth testing with. We will be testing tuning options - around a larger heap shortly. - </para> - <!--h4--> - </section> - <!--h3--> - </section> - - <section role="h3" id="HowtoTuneM3JavaBrokerPerformance-NextSteps"> - <title> - Next - Steps - </title> - <para> - These two options have been testing using a Qpid test case, and - demonstrated that for a test case with a profile of persistent - heavy load following by constant transient high load traffic they - provide significant improvment. - </para> - <para> - However, the deploying project <emphasis>must</emphasis> complete their own - testing, using the same destructive test cases, representative - message paradigms & volumes, in order to verify the proposed - mitigation options. - </para> - <para> - 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. - </para> - <!--h3--> - </section> -</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts-Authentication-Providers.xml b/doc/book/src/java-broker/Java-Broker-Concepts-Authentication-Providers.xml new file mode 100644 index 0000000000..3a2825826b --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts-Authentication-Providers.xml @@ -0,0 +1,26 @@ +<?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> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts-Exchanges.xml b/doc/book/src/java-broker/Java-Broker-Concepts-Exchanges.xml new file mode 100644 index 0000000000..af14b46a69 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts-Exchanges.xml @@ -0,0 +1,26 @@ +<?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> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts-Other-Services.xml b/doc/book/src/java-broker/Java-Broker-Concepts-Other-Services.xml new file mode 100644 index 0000000000..bb694d81da --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts-Other-Services.xml @@ -0,0 +1,26 @@ +<?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> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts-Ports.xml b/doc/book/src/java-broker/Java-Broker-Concepts-Ports.xml new file mode 100644 index 0000000000..afbb612bc4 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts-Ports.xml @@ -0,0 +1,26 @@ +<?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> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts-Protocols.xml b/doc/book/src/java-broker/Java-Broker-Concepts-Protocols.xml new file mode 100644 index 0000000000..45a62ce5ab --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts-Protocols.xml @@ -0,0 +1,26 @@ +<?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-Protocols"> +<title>Protocols</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts-Queues.xml b/doc/book/src/java-broker/Java-Broker-Concepts-Queues.xml new file mode 100644 index 0000000000..a4b0995a7e --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts-Queues.xml @@ -0,0 +1,26 @@ +<?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-Queues"> +<title>Queues</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts-Virtual-Hosts.xml b/doc/book/src/java-broker/Java-Broker-Concepts-Virtual-Hosts.xml new file mode 100644 index 0000000000..c12a543140 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts-Virtual-Hosts.xml @@ -0,0 +1,26 @@ +<?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-Virtual-Hosts"> +<title>Virtual Hosts</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Concepts.xml b/doc/book/src/java-broker/Java-Broker-Concepts.xml new file mode 100644 index 0000000000..013308fb8f --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Concepts.xml @@ -0,0 +1,32 @@ +<?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="Java-Broker-Concepts-Virtual-Hosts.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Concepts-Exchanges.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Concepts-Queues.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Concepts-Ports.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Concepts-Protocols.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Concepts-Authentication-Providers.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Concepts-Other-Services.xml"/> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Config-Files.xml b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Config-Files.xml new file mode 100644 index 0000000000..f2d93641b4 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Config-Files.xml @@ -0,0 +1,26 @@ +<?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-Configuring-And-Managing-Config-Files"> +<title>Config Files</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-JMX.xml b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-JMX.xml new file mode 100644 index 0000000000..122da6d267 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-JMX.xml @@ -0,0 +1,26 @@ +<?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-Configuring-And-Managing-JMX"> +<title>JMX</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Other-Tooling.xml b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Other-Tooling.xml new file mode 100644 index 0000000000..cf9d9497dd --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Other-Tooling.xml @@ -0,0 +1,26 @@ +<?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-Configuring-And-Managing-Other-Tooling"> +<title>Other Tooling</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-REST-API.xml b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-REST-API.xml new file mode 100644 index 0000000000..fcca6b69b4 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-REST-API.xml @@ -0,0 +1,26 @@ +<?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-Configuring-And-Managing-REST-API"> +<title>REST API</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Web-Console.xml b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Web-Console.xml new file mode 100644 index 0000000000..9fa8d3c03f --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing-Web-Console.xml @@ -0,0 +1,26 @@ +<?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-Configuring-And-Managing-Web-Console"> +<title>Web Console</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing.xml b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing.xml new file mode 100644 index 0000000000..d0858a80c0 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Configuring-And-Managing.xml @@ -0,0 +1,30 @@ +<?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-Configuring-And-Managing"> + <title>Configuring And Managing</title> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Configuring-And-Managing-Config-Files.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Configuring-And-Managing-Web-Console.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Configuring-And-Managing-REST-API.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Configuring-And-Managing-JMX.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Configuring-And-Managing-Other-Tooling.xml"/> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Exchanges-Binding-Arguments.xml b/doc/book/src/java-broker/Java-Broker-Exchanges-Binding-Arguments.xml new file mode 100644 index 0000000000..06c5ee7336 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Exchanges-Binding-Arguments.xml @@ -0,0 +1,26 @@ +<?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/doc/book/src/java-broker/Java-Broker-Exchanges.xml b/doc/book/src/java-broker/Java-Broker-Exchanges.xml new file mode 100644 index 0000000000..f6272fb0f3 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Exchanges.xml @@ -0,0 +1,26 @@ +<?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-Exchanges"> + <title>Exchanges</title> + +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Feature-Guide.xml b/doc/book/src/java-broker/Java-Broker-Feature-Guide.xml deleted file mode 100644 index bbc2a1aaf0..0000000000 --- a/doc/book/src/java-broker/Java-Broker-Feature-Guide.xml +++ /dev/null @@ -1,84 +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> - <title> - Java Broker Feature Guide - </title> - <section role="h3" id="JavaBrokerFeatureGuide-TheQpidpureJavabrokercurrentlysupportsthefollowingfeatures-3A"> - <title> - The Qpid pure Java broker currently supports the following - features: - </title> - <itemizedlist> - <listitem><para>All features required by the Sun JMS 1.1 specification, fully - tested - </para></listitem> - <listitem><para>Transaction support - </para></listitem> - <listitem><para>Persistence using a pluggable layer - </para></listitem> - <listitem><para>Pluggable security using SASL - </para></listitem> - <listitem><para>Management using JMX and an Eclipse Management Console - application - </para></listitem> - <listitem><para>High performance header-based routing for messages - </para></listitem> - <listitem><para>Message Priorities - </para></listitem> - <listitem><para>Configurable logging and log archiving - </para></listitem> - <listitem><para>Threshold alerting - </para></listitem> - <listitem><para>ACLs - </para></listitem> - <listitem><para>Extensively tested on each release, including performance - & reliability testing - </para></listitem> - <listitem><para>Automatic client failover using configurable connection - properties - </para></listitem> - <listitem><para>Durable Queues/Subscriptions - </para></listitem> - </itemizedlist> - <section role="h3" id="JavaBrokerFeatureGuide-Upcomingfeatures-3A"> - <title> - Upcoming - features: - </title> - <itemizedlist> - <listitem><para>Flow To Disk - </para></listitem> - <listitem><para>IP Whitelist - </para></listitem> - <listitem><para>AMQP 0-10 Support (for interoperability) - </para></listitem> - </itemizedlist> - - <!--h3--> - </section> - - <!--h3--> - </section> - -</section> diff --git a/doc/book/src/java-broker/Java-Broker-Getting-Started.xml b/doc/book/src/java-broker/Java-Broker-Getting-Started.xml new file mode 100644 index 0000000000..e6c112cf22 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Getting-Started.xml @@ -0,0 +1,25 @@ +<?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-Getting-Started"> + <title>Getting Started</title> +</chapter> diff --git a/doc/book/src/java-broker/HA-Guide.xml b/doc/book/src/java-broker/Java-Broker-High-Availability.xml index 6d98961f3f..45927d20e0 100644 --- a/doc/book/src/java-broker/HA-Guide.xml +++ b/doc/book/src/java-broker/Java-Broker-High-Availability.xml @@ -26,10 +26,10 @@ under the License. --> -<section id="High-Availability"> +<chapter id="Java-Broker-High-Availability"> <title>High Availability</title> - <section role="h3" id="HAGeneralIntroduction"> + <section role="h3" 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 @@ -42,7 +42,7 @@ </para> </section> - <section role="h3" id="HAOfferingsOfJavaBroker"> + <section role="h3" id="Java-Broker-High-Availability-OfferingsOfJavaBroker"> <title>HA offerings of the Java Broker</title> <para>The Java Broker's HA offering became available at release <emphasis role="bold">0.18</emphasis>. HA is provided by way of the HA features built into the <ulink url="&oracleBdbProductOverviewUrl;">Java Edition of the Berkley Database (BDB JE)</ulink> and as such @@ -63,7 +63,7 @@ Message Store</emphasis>.</para> </section> - <section role="h3" id="HATwoNodeCluster"> + <section role="h3" id="Java-Broker-High-Availability-TwoNodeCluster"> <title>Two Node Cluster</title> <section role="h4"> <title>Overview</title> @@ -73,7 +73,7 @@ <para>All data and state required for the operation of the virtual host is automatically sent from the master to the replica. This is called the replication stream. The master virtual host confirms each message is on the replica before the client transaction completes. The exact way the client awaits - for the master and replica is gorverned by the <link linkend="HADurabilityGuarantee">durability</link> + for the master and replica is gorverned by the <link linkend="Java-Broker-High-Availability-DurabilityGuarantee">durability</link> configuration, which is discussed later. In this way, the replica remains ready to take over the role of the master if the master becomes unavailable. </para> @@ -86,7 +86,7 @@ In the event of a master failure, a third party must designate the replica as primary. This process is described in more detail later. </para> - <para>Clients connect to the cluster using a <link linkend="HAClientFailover">failover url</link>. + <para>Clients connect to the cluster using a <link linkend="Java-Broker-High-Availability-ClientFailover">failover url</link>. This allows the client to maintain a connection to the master in a way that is transparent to the client application.</para> </section> @@ -105,7 +105,7 @@ </textobject> </mediaobject> </figure> - <section role="h5" id="HATwoNodeNormalOperation"> + <section role="h5" id="Java-Broker-High-Availability-TwoNodeNormalOperation"> <title>Normal Operation</title> <para>The figure below illustrates normal operation. Clients connecting to the cluster by way of the failover URL achieve a connection to the master. As clients perform work (message @@ -123,7 +123,7 @@ </mediaobject> </figure> </section> - <section role="h5" id="HATwoNodeMasterFailure"> + <section role="h5" id="Java-Broker-High-Availability-TwoNodeMasterFailure"> <title>Master Failure and Recovery</title> <para>The figure below illustrates a sequence of events whereby the master suffers a failure and the replica is made the master to allow the clients to continue to work. Later the @@ -142,7 +142,7 @@ <para>A third-party (an operator, a script or a combination of the two) verifies that the master has truely failed <emphasis role="bold">and is no longer running</emphasis>. If it has truely failed, the decision is made to designate the replica as primary, allowing it to assume the role of master despite the other node being down. - This primary designation is performed using <link linkend="HAJMXAPI">JMX</link>.</para> + This primary designation is performed using <link linkend="Java-Broker-High-Availability-JMXAPI">JMX</link>.</para> </listitem> <listitem> <para>Client connections to the new master succeed and the <emphasis role="bold">service is restored @@ -165,7 +165,7 @@ </mediaobject> </figure> </section> - <section role="h5" id="HATwoNodeReplicaFailure"> + <section role="h5" id="Java-Broker-High-Availability-TwoNodeReplicaFailure"> <title>Replica Failure and Recovery</title> <para>The figure that follows illustrates a sequence of events whereby the replica suffers a failure leaving the master to continue processing alone. Later the replica is repaired and is restarted. @@ -205,11 +205,11 @@ </mediaobject> </figure> </section> - <section role="h5" id="HATwoNodeNetworkPartition"> + <section role="h5" id="Java-Broker-High-Availability-TwoNodeNetworkPartition"> <title>Network Partition and Recovery</title> <para>The figure below illustrates the sequence of events that would occur if the network between master and replica were to suffer a partition, and the nodes were out of contact with one and other.</para> - <para>As with <link linkend="HATwoNodeReplicaFailure">Replica Failure and Recovery</link>, the + <para>As with <link linkend="Java-Broker-High-Availability-TwoNodeReplicaFailure">Replica Failure and Recovery</link>, the behaviour is governed by the <varname>designatedPrimary</varname>. Only if <varname>designatedPrimary</varname> is true on the master, will the master continue solo.</para> <para>The item numbers in this list apply to the numbered boxes in the figure below. This example assumes @@ -243,7 +243,7 @@ </mediaobject> </figure> </section> - <section role="h5" id="HATwoNodeSplitBrain"> + <section role="h5" id="Java-Broker-High-Availability-TwoNodeSplitBrain"> <title>Split Brain</title> <para>A <ulink url="http://en.wikipedia.org/wiki/Split-brain_(computing)">split-brain</ulink> is a situation where the two node cluster has two masters. BDB normally strives to prevent @@ -287,13 +287,13 @@ </section> </section> - <section role="h3" id="HAMultiNodeCluster"> + <section role="h3" id="Java-Broker-High-Availability-MultiNodeCluster"> <title>Multi Node Cluster</title> <para>Multi node clusters, that is clusters where the number of nodes is three or more, are not yet ready for use.</para> </section> - <section role="h3" id="HAConfiguration"> + <section role="h3" id="Java-Broker-High-Availability-Configuration"> <title>Configuring a Virtual Host to be a node</title> <para>To configure a virtualhost as a cluster node, configure the virtualhost.xml in the following manner:</para> <para> @@ -331,28 +331,28 @@ nodes within the cluster when they are newly introduced to the cluster. When configuring the first node, set the <varname>helperHostPort</varname> to its own <varname>nodeHostPort</varname>. For the second and subsequent nodes, set their <varname>helperHostPort</varname> to that of the first node.</para> - <para><varname>durability</varname> controls the <link linkend="HADurabilityGuarantee">durability</link> + <para><varname>durability</varname> controls the <link linkend="Java-Broker-High-Availability-DurabilityGuarantee">durability</link> guarantees made by the cluster. It is important that all nodes use the same value for this property. The default value is NO_SYNC\,NO_SYNC\,SIMPLE_MAJORITY. Owing to the internal use of Apache Commons Config, it is currently necessary to escape the commas within the durability string.</para> - <para><varname>coalescingSync</varname> controls the <link linkend="HADurabilityGuarantee_CoalescingSync">coalescing-sync</link> + <para><varname>coalescingSync</varname> controls the <link linkend="Java-Broker-High-Availability-DurabilityGuarantee_CoalescingSync">coalescing-sync</link> mode of Qpid. It is important that all nodes use the same value. If omitted, it defaults to true.</para> - <para>The <varname>designatedPrimary</varname> is applicable only to the <link linkend="HATwoNodeCluster">two-node + <para>The <varname>designatedPrimary</varname> is applicable only to the <link linkend="Java-Broker-High-Availability-TwoNodeCluster">two-node case.</link> It governs the behaviour of a node when the other node fails or becomes uncontactable. If true, the node will be designated as primary at startup and will be able to continue operating as a single node master. If false, the node will transition to an unavailable state until a third-party manually designates the node as primary or the other node is restored. It is suggested that the node that normally fulfils the role of master is set true in config file and the node that is normally replica is set false. Be aware that setting both nodes to true will lead to a failure to start up, as both cannot be designated at the point of contact. Designating both - nodes as primary at runtime (using the JMX interface) will lead to a <link linkend="HATwoNodeSplitBrain">split-brain</link> + nodes as primary at runtime (using the JMX interface) will lead to a <link linkend="Java-Broker-High-Availability-TwoNodeSplitBrain">split-brain</link> in the case of network partition and must be avoided.</para> <note><para>Usage of domain names in <varname>helperHostPort</varname> and <varname>nodeHostPort</varname> is more preferebale over IP addresses due to the tendency of more frequent changes of the last over the former. If server IP address changes but domain name remains the same the HA cluster can continue working as normal in case when domain names are used in cluster configuration. In case when IP addresses are used and they are changed with the time - than Qpid <link linkend="HAJMXAPI">JMX API for HA</link> can be used to change the addresses or remove the nodes from the cluster.</para></note> + than Qpid <link linkend="Java-Broker-High-Availability-JMXAPI">JMX API for HA</link> can be used to change the addresses or remove the nodes from the cluster.</para></note> - <section role="h4" id="HAConfiguration_BDBEnvVars"> + <section role="h4" id="Java-Broker-High-Availability-Configuration_BDBEnvVars"> <title>Passing BDB environment and replication configuration options</title> <para>It is possible to pass BDB <ulink url="&oracleBdbJavaDocUrl;com/sleepycat/je/EnvironmentConfig.html"> environment</ulink> and <ulink url="&oracleBdbJavaDocUrl;com/sleepycat/je/rep/ReplicationConfig.html"> @@ -387,7 +387,7 @@ </section> </section> - <section role="h3" id="HADurabilityGuarantee"> + <section role="h3" id="Java-Broker-High-Availability-DurabilityGuarantee"> <title>Durability Guarantees</title> <para>The term <ulink url="http://en.wikipedia.org/wiki/ACID#Durability">durability</ulink> is used to mean that once a transaction is committed, it remains committed regardless of subsequent failures. A highly durable system is one where @@ -397,7 +397,7 @@ <ulink url="&oracleBdbRepGuideUrl;txn-management.html#durabilitycontrols">durability controls</ulink> offered by by BDB JE JA and a Qpid specific optimisation called <emphasis role="bold">coalescing-sync</emphasis> which defaults to enabled.</para> - <section role="h4" id="HADurabilityGuarantee_BDBControls"> + <section role="h4" id="Java-Broker-High-Availability-DurabilityGuarantee_BDBControls"> <title>BDB Durability Controls</title> <para>BDB expresses durability as a triplet with the following form:</para> <programlisting><![CDATA[<master sync policy>,<replica sync policy>,<replica acknowledgement policy>]]></programlisting> @@ -408,7 +408,7 @@ <ulink url="&oracleBdbJavaDocUrl;com/sleepycat/je/Durability.SyncPolicy.html#WRITE_NO_SYNC">WRITE_NO_SYNC</ulink>, <ulink url="&oracleBdbJavaDocUrl;com/sleepycat/je/Durability.SyncPolicy.html#NO_SYNC">NO_SYNC</ulink>. SYNC is offers the highest durability whereas NO_SYNC the lowest.</para> - <para>Note: the combination of a master sync policy of SYNC and <link linkend="HADurabilityGuarantee_CoalescingSync">coalescing-sync</link> + <para>Note: the combination of a master sync policy of SYNC and <link linkend="Java-Broker-High-Availability-DurabilityGuarantee_CoalescingSync">coalescing-sync</link> true would result in poor performance with no corresponding increase in durability guarantee. It cannot not be used.</para> <para>The acknowledgement policy defines whether when a master commits a transaction, it also awaits for the replica(s) to commit the same transaction before continuing. For the two-node case, ALL and SIMPLE_MAJORITY are equal.</para> @@ -417,7 +417,7 @@ <ulink url="&oracleBdbJavaDocUrl;com/sleepycat/je/Durability.ReplicaAckPolicy.html#SIMPLE_MAJORITY">SIMPLE_MAJORITY</ulink> <ulink url="&oracleBdbJavaDocUrl;com/sleepycat/je/Durability.ReplicaAckPolicy.html#NONE">NONE</ulink>.</para> </section> - <section role="h4" id="HADurabilityGuarantee_CoalescingSync"> + <section role="h4" id="Java-Broker-High-Availability-DurabilityGuarantee_CoalescingSync"> <title>Coalescing-sync</title> <para>If enabled (the default) Qpid works to reduce the number of separate <ulink url="&oracleJdkDocUrl;java/io/FileDescriptor.html#sync()">file-system sync</ulink> operations @@ -426,14 +426,14 @@ It does this in such a manner not to reduce the ACID guarantees of the system.</para> <para>Coalescing-sync has no effect on the behaviour of the replicas.</para> </section> - <section role="h4" id="HADurabilityGuarantee_Default"> + <section role="h4" id="Java-Broker-High-Availability-DurabilityGuarantee_Default"> <title>Default</title> <para>The default durability guarantee is <constant>NO_SYNC, NO_SYNC, SIMPLE_MAJORITY</constant> with coalescing-sync enabled. The effect of this combination is described in the table below. It offers a good compromise between durability guarantee and performance with writes being guaranteed on the master and the additional guarantee that a majority of replicas have received the transaction.</para> </section> - <section role="h4" id="HADurabilityGuarantee_Examples"> + <section role="h4" id="Java-Broker-High-Availability-DurabilityGuarantee_Examples"> <title>Examples</title> <para>Here are some examples illustrating the effects of the durability and coalescing-sync settings.</para> <para> @@ -483,7 +483,7 @@ </section> </section> - <section id="HAClientFailover"> + <section id="Java-Broker-High-Availability-ClientFailover"> <title>Client failover configuration</title> <para>The details about format of Qpid connection URLs can be found at section <ulink url="../../Programming-In-Apache-Qpid/html/QpidJNDI.html">Connection URLs</ulink> @@ -500,7 +500,7 @@ amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672?connectdelay=' </section> - <section role="h3" id="HAJMXAPI"> + <section role="h3" id="Java-Broker-High-Availability-JMXAPI"> <title>Qpid JMX API for HA</title> <para>Qpid exposes the BDB HA store information via its JMX interface and provides APIs to remove a Node from the group, update a Node IP address, and assign a Node as the designated primary.</para> @@ -639,7 +639,7 @@ System.out.println("Node state:" + state); </example> </section> - <section id="BDB-HA-Monitoring-cluster"> + <section id="Java-Broker-High-Availability-Monitoring-cluster"> <title>Monitoring cluster</title> <para>In order to discover potential issues with HA Cluster early, all nodes in the Cluster should be monitored on regular basis using the following techniques:</para> @@ -707,26 +707,26 @@ Current state of node: Node-5001 from group: TestClusterGroup <para><emphasis>AllNodesInGroup</emphasis> lists of all nodes in the replication group including their names, hosts and ports.</para> </listitem> </itemizedlist> - <para>For more details about <classname>BDBHAMessageStore</classname> MBean please refer section <link linkend="HAJMXAPI">Qpid JMX API for HA</link></para> + <para>For more details about <classname>BDBHAMessageStore</classname> MBean please refer section <link linkend="Java-Broker-High-Availability-JMXAPI">Qpid JMX API for HA</link></para> </listitem> </itemizedlist> </section> - <section id="HADiskSpace"> + <section id="Java-Broker-High-Availability-DiskSpace"> <title>Disk space requirements</title> <para>Disk space is a critical resource for the HA Qpid broker.</para> <para>In case when a Replica goes down (or falls behind the Master in 2 node cluster where the Master is designated primary) and the Master continues running, the non-replicated store files are kept on the Masters disk for the period of time as specified in <emphasis>je.rep.repStreamTimeout</emphasis> JE setting in order to replicate this data later when the Replica is back. This setting is set to 1 hour by default by the broker. The setting can be overridden as described in - <xref linkend="HAConfiguration_BDBEnvVars"/>.</para> + <xref linkend="Java-Broker-High-Availability-Configuration_BDBEnvVars"/>.</para> <para>Depending from the application publishing/consuming rates and message sizes, the disk space might become overfull during this period of time due to preserved logs. Please, make sure to allocate enough space on your disk to avoid this from happening. </para> </section> - <section id="BDB-HA-Network-Requirements"> + <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 @@ -734,7 +734,7 @@ Current state of node: Node-5001 from group: TestClusterGroup installing a cluster in a separate network not impacted by any other traffic.</para> </section> - <section id="BDB-HA-Security"> + <section id="Java-Broker-High-Availability-Security"> <title>Security</title> <para>At the moment Berkeley replication API supports only TCP/IP protocol to transfer replication data between Master and Replicas.</para> <para>As result, the replicated data is unprotected and can be intercepted by anyone having access to the replication network.</para> @@ -742,7 +742,7 @@ Current state of node: Node-5001 from group: TestClusterGroup <para>In order to reduce the security risks the entire HA cluster is recommended to run in a separate network protected from general access.</para> </section> - <section id="BDB-HA-Backup"> + <section id="Java-Broker-High-Availability-Backup"> <title>Backups</title> <para>In order to protect the entire cluster from some cataclysms which might destroy all cluster nodes, backups of the Master store should be taken on a regular basis.</para> @@ -764,7 +764,7 @@ Current state of node: Node-5001 from group: TestClusterGroup </note> </section> - <section id="HAMigrationFromNonHA"> + <section id="Java-Broker-High-Availability-MigrationFromNonHA"> <title>Migration of a non-HA store to HA</title> <para>Non HA stores starting from schema version 4 (0.14 Qpid release) can be automatically converted into HA store on broker startup if replication is first enabled with the <ulink url="&oracleBdbJavaDocUrl;com/sleepycat/je/rep/util/DbEnableReplication.html"><classname>DbEnableReplication</classname></ulink> utility from the BDB JE jar.</para> <para>DbEnableReplication converts a non HA store into an HA store and can be used as follows:</para> @@ -795,10 +795,10 @@ java -jar je-&oracleBdbProductVersion;.jar DbEnableReplication -h /path/to/store </note> </section> - <section id="HADisasterRecovery"> + <section id="Java-Broker-High-Availability-DisasterRecovery"> <title>Disaster Recovery</title> <para>This section describes the steps required to restore HA broker cluster from backup.</para> - <para>The detailed instructions how to perform backup on replicated environment can be found <link linkend="BDB-HA-Backup">here</link>.</para> + <para>The detailed instructions how to perform backup on replicated environment can be found <link linkend="Java-Broker-High-Availability-Backup">here</link>.</para> <para>At this point we assume that backups are collected on regular basis from Master node.</para> <para>Replication configuration of a cluster is stored internally in HA message store. This information includes IP addresses of the nodes. @@ -825,7 +825,7 @@ java -cp je-&oracleBdbProductVersion;.jar com.sleepycat.je.rep.util.DbResetRepGr </itemizedlist> </section> - <section id="HAPerformance"> + <section id="Java-Broker-High-Availability-Performance"> <title>Performance</title> <para>The aim of this section is not to provide exact performance metrics relating to HA, as this depends heavily on the test environment, but rather showing an impact of HA on Qpid broker performance in comparison with the Non HA case.</para> @@ -996,9 +996,9 @@ java -cp je-&oracleBdbProductVersion;.jar com.sleepycat.je.rep.util.DbResetRepGr </figure> <para>On using durability <emphasis>SYNC,SYNC,ALL</emphasis> (without coalescing-sync) the performance drops significantly (by 62-95%) in comparison with non HA broker.</para> <para>Whilst, on using durability <emphasis>WRITE_NO_SYNC,WRITE_NO_SYNC,ALL</emphasis> (without coalescing-sync) the performance drops by only half, but with loss of durability guarantee, so is not recommended.</para> - <para>In order to have better performance with HA, Qpid Broker comes up with the special mode called <link linkend="HADurabilityGuarantee_CoalescingSync">coalescing-sync</link>, + <para>In order to have better performance with HA, Qpid Broker comes up with the special mode called <link linkend="Java-Broker-High-Availability-DurabilityGuarantee_CoalescingSync">coalescing-sync</link>, With this mode enabled, Qpid broker batches the concurrent transaction commits and syncs transaction data into Master disk in one go. As result, the HA performance only drops by 25-60% for durability <emphasis>NO_SYNC,NO_SYNC,ALL</emphasis> and by 10-90% for <emphasis>WRITE_NO_SYNC,WRITE_NO_SYNC,ALL</emphasis>.</para> </section> -</section> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Installation.xml b/doc/book/src/java-broker/Java-Broker-Installation.xml new file mode 100644 index 0000000000..150f83710f --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Installation.xml @@ -0,0 +1,25 @@ +<?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-Installation"> + <title>Installation</title> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Introduction.xml b/doc/book/src/java-broker/Java-Broker-Introduction.xml new file mode 100644 index 0000000000..01b29e390e --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Introduction.xml @@ -0,0 +1,25 @@ +<?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-Introduction"> + <title>Introduction</title> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Queues-Messaging-Groups.xml b/doc/book/src/java-broker/Java-Broker-Queues-Messaging-Groups.xml new file mode 100644 index 0000000000..60413282a0 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Queues-Messaging-Groups.xml @@ -0,0 +1,26 @@ +<?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="Queues-Messaging-Groups"> +<title>Messaging Groups</title> + +</section> diff --git a/doc/book/src/java-broker/OtherQueueTypes.xml b/doc/book/src/java-broker/Java-Broker-Queues-OtherTypes.xml index d42e4e62cb..75afc58e4e 100644 --- a/doc/book/src/java-broker/OtherQueueTypes.xml +++ b/doc/book/src/java-broker/Java-Broker-Queues-OtherTypes.xml @@ -23,26 +23,26 @@ --> -<section id="OtherQueueTypes"> +<section id="Java-Broker-Queues-OtherTypes"> <title>Other Queue Types</title> - <section role="h2" id="OtherQueueTypes-Introduction"> + <section role="h2" id="Java-Broker-Queues-OtherTypes-Introduction"> <title>Introduction</title> <para> In addition to the standard queue type where messages are delivered in the same order that they were sent, the Java Broker supports three additional queue types which allows for - alternative delivery behaviours. These are <link linkend="OtherQueueTypes-Priority" - >priority-queues</link>, <link linkend="OtherQueueTypes-Sorted">sorted-queues</link>-, and - <link linkend="OtherQueueTypes-LVQ">last-value-queues</link> (LVQs). </para> + alternative delivery behaviours. These are <link linkend="Java-Broker-Queues-OtherTypes-Priority" + >priority-queues</link>, <link linkend="Java-Broker-Queues-OtherTypes-Sorted">sorted-queues</link>-, and + <link linkend="Java-Broker-Queues-OtherTypes-LVQ">last-value-queues</link> (LVQs). </para> <para> In the following sections, the semantics of each queue type is described, followed by a description of how instances of these queue can be created via <link - linkend="OtherQueueTypes-CreateUsingConfig">configuration</link> or <link - linkend="OtherQueueTypes-CreateUsingJmsOrJmx">programmatically</link>. </para> + linkend="Java-Broker-Queues-OtherTypes-CreateUsingConfig">configuration</link> or <link + linkend="Java-Broker-Queues-OtherTypes-CreateUsingJmsOrJmx">programmatically</link>. </para> <para>The final section discusses the importance of using a <link - linkend="OtherQueueTypes-SetLowPrefetch">low client pre-fetch</link> with these queued. + linkend="Java-Broker-Queues-OtherTypes-SetLowPrefetch">low client pre-fetch</link> with these queued. </para> </section> - <section role="h2" id="OtherQueueTypes-Priority"> + <section role="h2" id="Java-Broker-Queues-OtherTypes-Priority"> <title>Priority Queues</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 @@ -53,7 +53,7 @@ default message priority</ulink> as 4. Messages sent without a specified priority use this default. </para> </section> - <section role="h2" id="OtherQueueTypes-Sorted"> + <section role="h2" id="Java-Broker-Queues-OtherTypes-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 @@ -62,7 +62,7 @@ <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 role="h2" id="OtherQueueTypes-LVQ"> + <section role="h2" id="Java-Broker-Queues-OtherTypes-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 @@ -78,7 +78,7 @@ <para>Messages sent to an LVQ without the specified property will be delivered as normal and will never be "replaced".</para> </section> - <section role="h2" id="OtherQueueTypes-Create"> + <section role="h2" id="Java-Broker-Queues-OtherTypes-Create"> <title>Creating a Priority, Sorted or LVQ Queue</title> <para>To create a priority, sorted or LVQ queue, it can be defined in the virtualhost configuration file, or the queue can be created programmtically from a client via AMQP (using @@ -86,12 +86,12 @@ <para>Once a queue is created you cannot change its type (without deleting it and re-creating). Also note you cannot currently mix the natures of these queue types, for instance, you cannot define a queue which it both an LVQ and a priority-queue.</para> - <section role="h2" id="OtherQueueTypes-CreateUsingConfig"> + <section role="h2" id="Java-Broker-Queues-OtherTypes-CreateUsingConfig"> <title>Using configuration</title> <para>To create a priority, sorted or LVQ queue within configuration, add the appropriate xml to the virtualhost.xml configuration file within the <varname>queues</varname> element.</para> - <section role="h3" id="OtherQueueTypes-CreateUsingConfig-Priority"> + <section role="h3" id="Java-Broker-Queues-OtherTypes-CreateUsingConfig-Priority"> <title>Priority</title> <para> To defining a priority queue, add a <priority>true</priority> element. By default the queue will have 10 distinct priorities. </para> @@ -124,7 +124,7 @@ </queue>]]></programlisting> </example> </section> - <section role="h3" id="OtherQueueTypes-CreateUsingConfig-Sorted"> + <section role="h3" id="Java-Broker-Queues-OtherTypes-CreateUsingConfig-Sorted"> <title>Sorted</title> <para> To define a sorted queue, add a <varname>sortKey</varname> element. The value of the <varname>sortKey</varname> element defines the message property to use the value of when @@ -140,7 +140,7 @@ </queue>]]></programlisting> </example> </section> - <section role="h3" id="OtherQueueTypes-CreateUsingConfig-LVQ"> + <section role="h3" id="Java-Broker-Queues-OtherTypes-CreateUsingConfig-LVQ"> <title>LVQ</title> <para> To define a LVQ, add a <varname>lvq</varname> element with the value <constant>true</constant>. Without any further configuration this will define an LVQ @@ -171,11 +171,12 @@ </example> </section> </section> - <section role="h2" id="OtherQueueTypes-CreateUsingJmsOrJmx"> - <title>Using JMS or AMQP</title> + <section role="h2" id="Java-Broker-Queues-OtherTypes-CreateUsingJmsOrJmx"> + <title>Using JMX or AMQP</title> <para>To create a priority, sorted or LVQ queue programmatically from JMX or using a Qpid extension to JMS, 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> @@ -242,7 +243,7 @@ managedBroker.createNewQueue("myqueue", null, true, arguments);]]></programlisti </section> </section> - <section role="h2" id="OtherQueueTypes-SetLowPrefetch"> + <section role="h2" id="Java-Broker-Queues-OtherTypes-SetLowPrefetch"> <title>Low pre-fetch</title> <para>Qpid clients receive buffered messages in batches, sized according to the pre-fetch value. The current default is 500. </para> diff --git a/doc/book/src/java-broker/Java-Broker-Queues.xml b/doc/book/src/java-broker/Java-Broker-Queues.xml new file mode 100644 index 0000000000..050d4cdbce --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Queues.xml @@ -0,0 +1,27 @@ +<?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-Queues"> + <title>Queues</title> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Queues-Messaging-Groups.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Queues-OtherTypes.xml"/> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Runtime-Alerts.xml b/doc/book/src/java-broker/Java-Broker-Runtime-Alerts.xml new file mode 100644 index 0000000000..29ac68b937 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Runtime-Alerts.xml @@ -0,0 +1,26 @@ +<?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-Alerts"> +<title>Alerts</title> + +</section> diff --git a/doc/book/src/java-broker/Producer-Flow-Control.xml b/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control.xml index 262279510e..8db014a6b7 100644 --- a/doc/book/src/java-broker/Producer-Flow-Control.xml +++ b/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control.xml @@ -23,7 +23,7 @@ <section id="Qpid-Producer-Flow-Control"> <title>Producer Flow Control</title> - <section role="h2" id="QpidProducerFlowControlGeneralInformation"> + <section role="h2" id="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control-GeneralInformation"> <title>General Information</title> <para> The Qpid 0.6 release introduced a simplistic producer-side flow control mechanism @@ -32,7 +32,7 @@ mechanism triggered by an overfull persistent message store on a virtual host. </para> </section> - <section role="h2" id="QpidProducerFlowControlServerConfiguration"> + <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> @@ -44,6 +44,9 @@ "capacity" of the Queue. A Queue becomes "underfull" when its size becomes less than the "flowResumeCapacity". + + <example> + <title>Configuring a queue depth limit</title> <programlisting> <![CDATA[ <queue> @@ -56,9 +59,12 @@ </queue> ]]> </programlisting> + </example> The default for all queues on a virtual host can also be set + <example> + <title>Configuring a default queue depth limit on a virtualhost</title> <programlisting> <![CDATA[ <virtualhosts> @@ -72,6 +78,7 @@ </virtualhosts> ]]> </programlisting> + </example> Where no flowResumeCapacity is set, the flowResumeCapacity is set to be equal to the capacity. Where no capacity is set, capacity is defaulted to 0 meaning @@ -127,6 +134,9 @@ MESSAGE [con:2(guest@anonymous(713889609)/test)/ch:1] [con:2(guest@anonymous(713 <para> An example of quota configuration for the BDB message store is provided below. </para> + + <example> + <title>Configuring a limit on a store</title> <programlisting> <![CDATA[ <store> @@ -137,6 +147,7 @@ MESSAGE [con:2(guest@anonymous(713889609)/test)/ch:1] [con:2(guest@anonymous(713 </store> ]]> </programlisting> + </example> <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 @@ -163,7 +174,7 @@ MESSAGE [con:2(guest@anonymous(713889609)/test)/ch:1] [con:2(guest@anonymous(713 </section><!-- Server configuration --> - <section role="h2" id="QpidProducerFlowControlClientImpact"> + <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 diff --git a/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management.xml b/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management.xml new file mode 100644 index 0000000000..814b366d9d --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Runtime-Disk-Space-Management.xml @@ -0,0 +1,27 @@ +<?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/doc/book/src/java-broker/Java-Broker-Runtime-Log-Files.xml b/doc/book/src/java-broker/Java-Broker-Runtime-Log-Files.xml new file mode 100644 index 0000000000..84ee4db6d3 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Runtime-Log-Files.xml @@ -0,0 +1,26 @@ +<?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> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Runtime.xml b/doc/book/src/java-broker/Java-Broker-Runtime.xml new file mode 100644 index 0000000000..236ef82ecd --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Runtime.xml @@ -0,0 +1,28 @@ +<?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-Alerts.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Runtime-Disk-Space-Management.xml"/> +</chapter> diff --git a/doc/book/src/java-broker/Configure-ACLs.xml b/doc/book/src/java-broker/Java-Broker-Security-ACLs.xml index 9cc009e431..21e1052183 100644 --- a/doc/book/src/java-broker/Configure-ACLs.xml +++ b/doc/book/src/java-broker/Java-Broker-Security-ACLs.xml @@ -21,10 +21,8 @@ --> -<section id="Configuring-ACLS"> - <title> - Configuring ACLs - </title> +<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, the <acl/> element is used within the <security/> element of the configuration XML. @@ -34,7 +32,7 @@ </para> - <section role="h3" id="ConfigureACLs-EnablingACL"> + <section role="h3" id="Java-Broker-Security-ACLs-EnablingACL"> <title> Enabling ACLs </title> @@ -75,13 +73,13 @@ </programlisting> </section> - <section role="h3" id="ConfigureACLs-WriteACL"> + <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="Configuring-Group-Providers">Configuring Group Providers</link> for more information on defining groups. + 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 @@ -126,7 +124,7 @@ </para> </section> - <section role="h4" id="ConfigureACLs-Syntax"> + <section role="h4" id="Java-Broker-Security-ACLs-Syntax"> <title> Syntax </title> @@ -148,8 +146,8 @@ ALL ALL # A broken line </programlisting> </section> - <table id="tabl-ConfigureACLs-Syntax_permissions"> - <title>ACL Rules: permission</title> + <table id="table-Java-Broker-Security-ACLs-Syntax_permissions"> + <title>List of ACL permission</title> <tgroup cols="2"> <tbody> <row> @@ -171,8 +169,8 @@ </tbody> </tgroup> </table> - <table id="tabl-ConfigureACLs-Syntax_actions"> - <title>ACL Rules:action</title> + <table id="table-Java-Broker-Security-ACLs-Syntax_actions"> + <title>List of ACL actions</title> <tgroup cols="2"> <tbody> <row> @@ -214,8 +212,8 @@ </tbody> </tgroup> </table> - <table id="tabl-ConfigureACLs-Syntax_objects"> - <title>ACL Rules:object</title> + <table id="table-Java-Broker-Security-ACLs-Syntax_objects"> + <title>List of ACL objects</title> <tgroup cols="2"> <tbody> <row> @@ -257,8 +255,8 @@ </tbody> </tgroup> </table> - <table id="tabl-ConfigureACLs-Syntax_properties"> - <title>ACL Rules:property</title> + <table id="table-Java-Broker-Security-ACLs-Syntax_properties"> + <title>List of ACL properties</title> <tgroup cols="2"> <tbody> <row> @@ -368,8 +366,8 @@ </tbody> </tgroup> </table> - <table id="tabl-ConfigureACLs-Syntax_javacomponents"> - <title>ACL rules:components (Java Broker only)</title> + <table id="table-Java-Broker-Security-ACLs-Syntax_javacomponents"> + <title>List of ACL rules</title> <tgroup cols="3"> <tbody> <row> @@ -407,7 +405,7 @@ </tbody> </tgroup> </table> - <section role="h4" id="ConfigureACLs-WorkedExamples"> + <section role="h4" id="Java-Broker-Security-ACLs-WorkedExamples"> <title> Worked Examples </title> @@ -415,7 +413,7 @@ 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="ConfigureACLs-WorkedExample1"> + <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample1"> <title> Worked example 1 - Management rights </title> @@ -439,13 +437,13 @@ ACL ALLOW readonly ACCESS ALL ACL DENY-LOG ALL ALL </programlisting> </section> - <section role="h4" id="ConfigureACLs-WorkedExample2"> + <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="Configuring-Group-Providers">group</link> 'usermaint'. No other user + <link linkend="Java-Broker-Security-Group-Providers">group</link> 'usermaint'. No other user is allowed to perform user maintainence This example illustrates the permissioning of an individual component. </para> <programlisting> @@ -462,7 +460,7 @@ ACL DENY ALL ALL USER ACL DENY-LOG ALL ALL </programlisting> </section> - <section role="h4" id="ConfigureACLs-WorkedExample3"> + <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample3"> <title> Worked example 3 - Request/Response messaging </title> @@ -498,7 +496,7 @@ ACL ALLOW server PUBLISH EXCHANGE name="amq.direct" routingKey="TempQueue*" ACL DENY-LOG all all </programlisting> </section> - <section role="h4" id="ConfigureACLs-WorkedExample4"> + <section role="h4" id="Java-Broker-Security-ACLs-WorkedExample4"> <title> Worked example 4 - firewall-like access control </title> diff --git a/doc/book/src/java-broker/Configure-AuthenticationProviders.xml b/doc/book/src/java-broker/Java-Broker-Security-Authentication-Providers.xml index 4910197742..58360dc722 100644 --- a/doc/book/src/java-broker/Configure-AuthenticationProviders.xml +++ b/doc/book/src/java-broker/Java-Broker-Security-Authentication-Providers.xml @@ -1,7 +1,7 @@ <?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 @@ -9,28 +9,28 @@ 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="Configuring-Authentication-Mechanisms"> - <title>Configuring Authentication Mechanisms</title> +<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 schemesi, each + authenticated. The Java Broker supports a number of different authentication schemes, each with its own "authentication manager". Different managers may be used on different ports. Each manager has its own configuration element, the presence of which within the - <security> section denotes the use of that authentication mechanism. Where only one + <security> section denotes the use of that authentication provider. Where only one such manager is configured, that manager will be used on all ports (including JMX). Where - more than one authentication manager is configured the configuration must define which + more than one authentication manager is configured the configuration must define which manager is the "default", and (if required) the mapping of non-default authentication managers to other ports. </para> @@ -39,46 +39,52 @@ the default (e.g. for the JMX port), Kerberos on port 5672 and Anonymous on 5673. </para> - <programlisting><![CDATA[ - <security> - <pd-auth-manager> - <principal-database> - <class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class> - <attributes> - <attribute> - <name>passwordFile</name> - <value>${conf}/passwd</value> - </attribute> - </attributes> - </principal-database> - </pd-auth-manager> - <kerberos-auth-manager><auth-name>sib</auth-name></kerberos-auth-manager> - <anonymous-auth-manager></anonymous-auth-manager> - <default-auth-manager>PrincipalDatabaseAuthenticationManager</default-auth-manager> - <port-mappings> - <port-mapping> - <port>5672</port> - <auth-manager>KerberosAuthenticationManager</auth-manager> - </port-mapping> - <port-mapping> - <port>5673</port> - <auth-manager>AnonymousAuthenticationManager</auth-manager> - </port-mapping> - </port-mappings> - </security>]]> - </programlisting> + <example> + <title>Configuring different authentication schemes on different ports</title> + <programlisting><![CDATA[ +<security> + <pd-auth-manager> + <principal-database> + <class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class> + <attributes> + <attribute> + <name>passwordFile</name> + <value>${conf}/passwd</value> + </attribute> + </attributes> + </principal-database> + </pd-auth-manager> + <kerberos-auth-manager><auth-name>sib</auth-name></kerberos-auth-manager> + <anonymous-auth-manager></anonymous-auth-manager> + <default-auth-manager>PrincipalDatabaseAuthenticationManager</default-auth-manager> + <port-mappings> + <port-mapping> + <port>5672</port> + <auth-manager>KerberosAuthenticationManager</auth-manager> + </port-mapping> + <port-mapping> + <port>5673</port> + <auth-manager>AnonymousAuthenticationManager</auth-manager> + </port-mapping> + </port-mappings> +</security>]]> + </programlisting> + </example> <section><title>Password File</title></section> <section><title>LDAP</title> - <programlisting><![CDATA[ - <security> - <simple-ldap-auth-manager> - <provider-url>ldaps://example.com:636/</provider-url> - <search-context>dc=example\,dc=com</search-context> - <search-filter>(uid={0})</search-filter> - </simple-ldap-auth-manager> - </security>]]> - </programlisting> + <example> + <title>Configuring a LDAP authentication</title> + <programlisting><![CDATA[ +<security> + <simple-ldap-auth-manager> + <provider-url>ldaps://example.com:636/</provider-url> + <search-context>dc=example\,dc=com</search-context> + <search-filter>(uid={0})</search-filter> + </simple-ldap-auth-manager> +</security>]]> + </programlisting> + </example> <para> The authentication manager first connects to the ldap server anonymously and searches for the @@ -121,29 +127,32 @@ configuration, and use this for other ports: </para> - <programlisting><![CDATA[ - <security> - <pd-auth-manager> - <principal-database> - <class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class> - <attributes> - <attribute> - <name>passwordFile</name> - <value>${conf}/passwd</value> - </attribute> - </attributes> - </principal-database> - </pd-auth-manager> - <kerberos-auth-manager><auth-name>sib</auth-name></kerberos-auth-manager> - <default-auth-manager>PrincipalDatabaseAuthenticationManager</default-auth-manager> - <port-mappings> - <port-mapping> - <port>5672</port> - <auth-manager>KerberosAuthenticationManager</auth-manager> - </port-mapping> - </port-mappings> - </security>]]> - </programlisting> + <example> + <title>Configuring a Kerberos authentication</title> + <programlisting><![CDATA[ +<security> + <pd-auth-manager> + <principal-database> + <class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class> + <attributes> + <attribute> + <name>passwordFile</name> + <value>${conf}/passwd</value> + </attribute> + </attributes> + </principal-database> + </pd-auth-manager> + <kerberos-auth-manager></kerberos-auth-manager> + <default-auth-manager>PrincipalDatabaseAuthenticationManager</default-auth-manager> + <port-mappings> + <port-mapping> + <port>5672</port> + <auth-manager>KerberosAuthenticationManager</auth-manager> + </port-mapping> + </port-mappings> +</security>]]> + </programlisting> + </example> <para> Configuration of kerberos is done through system properties (there doesn't seem to be a way diff --git a/doc/book/src/java-broker/Configure-Group-Providers.xml b/doc/book/src/java-broker/Java-Broker-Security-Group-Providers.xml index f23f4b60f5..eaecd85770 100644 --- a/doc/book/src/java-broker/Configure-Group-Providers.xml +++ b/doc/book/src/java-broker/Java-Broker-Security-Group-Providers.xml @@ -21,10 +21,10 @@ --> -<section id="Configuring-Group-Providers"> +<section id="Java-Broker-Security-Group-Providers"> <title>Configuring Group Providers</title> <para> - The Java broker utilises GroupProviders to allow assigning users to groups for use in <link linkend="Configuring-ACLS">ACLs</link>. Following authentication by a given <link linkend="Configuring-Authentication-Mechanisms">Authentication Provider</link>, the configured Group Providers are consulted to allowing assignment of GroupPrincipals for a given authenticated user. + 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 to allowing assignment of GroupPrincipals for a given authenticated user. </para> diff --git a/doc/book/src/java-broker/Java-Broker-Security-SSL.xml b/doc/book/src/java-broker/Java-Broker-Security-SSL.xml new file mode 100644 index 0000000000..8e95caf1c3 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Security-SSL.xml @@ -0,0 +1,26 @@ +<?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-SSL"> +<title>SSL</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Security-Users-And-Groups.xml b/doc/book/src/java-broker/Java-Broker-Security-Users-And-Groups.xml new file mode 100644 index 0000000000..2125f3a3df --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Security-Users-And-Groups.xml @@ -0,0 +1,26 @@ +<?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-Users-And-Groups"> +<title>Users And Groups</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Security.xml b/doc/book/src/java-broker/Java-Broker-Security.xml new file mode 100644 index 0000000000..3db672100e --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Security.xml @@ -0,0 +1,30 @@ +<?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="Java-Broker-Security-Users-And-Groups.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Group-Providers.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-Authentication-Providers.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-ACLs.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Security-SSL.xml"/> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Stores-BDB-Store.xml b/doc/book/src/java-broker/Java-Broker-Stores-BDB-Store.xml new file mode 100644 index 0000000000..01176c21f3 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Stores-BDB-Store.xml @@ -0,0 +1,26 @@ +<?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-Stores-BDB-Store"> +<title>BDB Store</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Stores-Derby-Store.xml b/doc/book/src/java-broker/Java-Broker-Stores-Derby-Store.xml new file mode 100644 index 0000000000..bc66821d51 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Stores-Derby-Store.xml @@ -0,0 +1,26 @@ +<?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-Stores-Derby-Store"> +<title>Derby Store</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Stores-HA-BDB-Store.xml b/doc/book/src/java-broker/Java-Broker-Stores-HA-BDB-Store.xml new file mode 100644 index 0000000000..9d213598e6 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Stores-HA-BDB-Store.xml @@ -0,0 +1,26 @@ +<?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-Stores-HA-BDB-Store"> +<title>High Availability BDB Store</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Stores-Memory-Store.xml b/doc/book/src/java-broker/Java-Broker-Stores-Memory-Store.xml new file mode 100644 index 0000000000..32288d350a --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Stores-Memory-Store.xml @@ -0,0 +1,26 @@ +<?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-Stores-Memory-Store"> +<title>Memory Store</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Stores-SQL-Store.xml b/doc/book/src/java-broker/Java-Broker-Stores-SQL-Store.xml new file mode 100644 index 0000000000..b6776c81e6 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Stores-SQL-Store.xml @@ -0,0 +1,26 @@ +<?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-Stores-SQL-Store"> +<title>SQL Store</title> + +</section> diff --git a/doc/book/src/java-broker/Java-Broker-Stores.xml b/doc/book/src/java-broker/Java-Broker-Stores.xml new file mode 100644 index 0000000000..aee3cdebdb --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Stores.xml @@ -0,0 +1,30 @@ +<?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-Stores"> + <title>Stores</title> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Stores-Memory-Store.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Stores-Derby-Store.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Stores-SQL-Store.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Stores-BDB-Store.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Java-Broker-Stores-HA-BDB-Store.xml"/> +</chapter> diff --git a/doc/book/src/java-broker/Java-Broker-Virtual-Hosts.xml b/doc/book/src/java-broker/Java-Broker-Virtual-Hosts.xml new file mode 100644 index 0000000000..fc1a8b1dc5 --- /dev/null +++ b/doc/book/src/java-broker/Java-Broker-Virtual-Hosts.xml @@ -0,0 +1,25 @@ +<?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-Virtual-Hosts"> + <title>Virtual Hosts</title> +</chapter> diff --git a/doc/book/src/java-broker/Java-Environment-Variables.xml b/doc/book/src/java-broker/Java-Environment-Variables.xml deleted file mode 100644 index 12703190f2..0000000000 --- a/doc/book/src/java-broker/Java-Environment-Variables.xml +++ /dev/null @@ -1,84 +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-Environment-Variables"> - <title> - Java Environment Variables - </title> - <section role="h2" id="JavaEnvironmentVariables-SettingQpidEnvironmentVariables"> - <title> - Setting - Qpid Environment Variables - </title> - - <section role="h3" id="JavaEnvironmentVariables-QpidDeploymentPathVariables"> - <title> - Qpid - Deployment Path Variables - </title> - <para> - There are two main Qpid environment variables which are required - to be set for Qpid deployments, QPID_HOME and QPID_WORK. - </para> - <para> - QPID_HOME - This variable is used to tell the Qpid broker where - it's installed home is, which is in turn used to find dependency - JARs which Qpid uses. - </para> - <para> - QPID_WORK - This variable is used by Qpid when creating all - 'writeable' directories that it uses. This includes the log - directory and the storage location for any BDB instances in use - by your deployment (if you're using persistence with BDB). If you - do not set this variable, then the broker will default (in the - qpid-server script) to use the current user's homedir as the root - directory for creating the writeable locations that it uses. - </para> - - <!--h3--> - </section> - - <section role="h3" id="JavaEnvironmentVariables-SettingMaxMemoryforthebroker"> - <title> - Setting - Max Memory for the broker - </title> - <para> - If you simply start the Qpid broker, it will default to use a - -Xmx setting of 1024M for the broker JVM. However, we would - recommend that you make the maximum -Xmx heap size available, if - possible, of 3Gb (for 32-bit platforms). - </para> - <para> - You can control the memory setting for your broker by setting the - QPID_JAVA_MEM variable before starting the broker e.g. -Xmx3668m - . 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. - </para> - <!--h3--> - </section> - - <!--h2--> - </section> - -</section> diff --git a/doc/book/src/java-broker/Qpid-Java-Build-How-To.xml b/doc/book/src/java-broker/Qpid-Java-Build-How-To.xml deleted file mode 100644 index 9f3625760a..0000000000 --- a/doc/book/src/java-broker/Qpid-Java-Build-How-To.xml +++ /dev/null @@ -1,365 +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-Java-Build-HowTo"><title> - Qpid Java Build How To - </title> - - <section role="h1" id="QpidJavaBuildHowTo-BuildInstructionsGeneral"><title> - Build - Instructions - General - </title> - - <section role="h2" id="QpidJavaBuildHowTo-Checkoutthesource"><title> - Check out the - source - </title> - <para> - Firstly, check the source for Qpid out of our subversion - repository: - </para><para> - <xref linkend="qpid_trunk"/> - </para> -<!--h2--></section> - <section role="h2" id="QpidJavaBuildHowTo-Prerequisites"><title> - Prerequisites - </title> - <para> - For the broker code you need JDK 1.5.0_15 or later. You should - set JAVA_HOME and include the bin directory in your PATH. - </para><para> - Check it's ok by executing java -v ! - </para><para> - If you are wanting to run the python tests against the broker you - will of course need a version of python. - </para> -<!--h2--></section> -<!--h1--></section> - - <section role="h1" id="QpidJavaBuildHowTo-BuildInstructionsTrunk"><title> - Build - Instructions - Trunk - </title> - <para> - Our build system has reverted to ant as of May 2008. - </para><para> - The ant target 'help' will tell you what you need to know about - the build system. - </para> - <section role="h2" id="QpidJavaBuildHowTo-AntBuildScripts"><title> - Ant Build - Scripts - </title> - <para> - Currently the Qpid java project builds using ant. - </para><para> - The ant build system is set up in a modular way, with a top level - build script and template for module builds and then a module - level build script which inherits from the template. - </para><para> - So, at the top level there are: - </para><table><title/><tgroup cols="2"> - <tbody> - <row> - <entry> - File - </entry> - <entry> - Description - </entry> - </row> - <row> - <entry> - build.xml - </entry> - <entry> - Top level build file for the project which defines all the - build targets - </entry> - </row> - <row> - <entry> - common.xml - </entry> - <entry> - Common properties used throughout the build system - </entry> - </row> - <row> - <entry> - module.xml - </entry> - <entry> - Template used by all modules which sets up properties for - module builds - </entry> - </row> - </tbody> - </tgroup></table><para> - Then, in each module subdirectory there is: - </para><table><title/><tgroup cols="2"> - <tbody> - <row> - <entry> - File - </entry> - <entry> - Description - </entry> - </row> - <row> - <entry> - build.xml - </entry> - <entry> - Defines all the module values for template properties - </entry> - </row> - </tbody> - </tgroup></table> -<!--h2--></section> - <section role="h2" id="QpidJavaBuildHowTo-Buildtargets"><title> - Build targets - </title> - <para> - The main build targets you are probably interested in are: - </para><table><title/><tgroup cols="2"> - <tbody> - <row> - <entry> - Target - </entry> - <entry> - Description - </entry> - </row> - <row> - <entry> - build - </entry> - <entry> - Builds all source code for Qpid - </entry> - </row> - <row> - <entry> - test - </entry> - <entry> - Runs the testsuite for Qpid - </entry> - </row> - </tbody> - </tgroup></table><para> - So, if you just want to compile everything you should run the - build target in the top level build.xml file. - </para><para> - If you want to build an installable version of Qpid, run the - archive task from the top level build.xml file. - </para><para> - If you want to compile an individual module, simply run the build - target from the appropriate module e.g. to compile the broker - source - </para> -<!--h2--></section> - <section role="h2" id="QpidJavaBuildHowTo-ConfiguringEclipse"><title> - Configuring - Eclipse - </title> - <para> - 1. Run the ant build from the root directory of Java trunk. - 2. New project -> create from existing file system for broker, - common, client, junit-toolkit, perftests, systests and each - directory under management - 4. Add the contents of lib/ to the build path - 5. Setup Generated Code - 6. Setup Dependencies - </para> - <section role="h3" id="QpidJavaBuildHowTo-GeneratedCode"><title> - Generated Code - </title> - <para> - The Broker and Common packages both depend on generated code. - After running 'ant' the build/scratch directory will contain this - generated code. - For the broker module add build/scratch/broker/src - For the common module add build/scratch/common/src - </para> -<!--h3--></section> - <section role="h3" id="QpidJavaBuildHowTo-Dependencies"><title> - Dependencies - </title> - <para> - These dependencies are correct at the time of writting however, - if things are not working you can check the dependencies by - looking in the modules build.xml file: - </para> - <programlisting> -for i in `find . -name build.xml` ; do echo "$i:"; grep module.depends $i ; done -</programlisting> - <para> - The <emphasis>module.depend</emphasis> value will detail which other modules - are dependencies. - </para><para> - broker - </para><itemizedlist> - <listitem><para>common - </para></listitem> - <listitem><para>management/common - </para></listitem> - </itemizedlist><para> - client - </para><itemizedlist> - <listitem><para>Common - </para></listitem> - </itemizedlist><para> - systest - </para><itemizedlist> - <listitem><para>client - </para></listitem> - <listitem><para>management/common - </para></listitem> - <listitem><para>broker - </para></listitem> - <listitem><para>broker/test - </para></listitem> - <listitem><para>common - </para></listitem> - <listitem><para>junit-toolkit - </para></listitem> - <listitem><para>management/tools/qpid-cli - </para></listitem> - </itemizedlist><para> - perftests - </para><itemizedlist> - <listitem><para>systests - </para></listitem> - <listitem><para>client - </para></listitem> - <listitem><para>broker - </para></listitem> - <listitem><para>common - </para></listitem> - <listitem><para>junit-toolkit - </para></listitem> - </itemizedlist><para> - management/eclipse-plugin - </para><itemizedlist> - <listitem><para>broker - </para></listitem> - <listitem><para>common - </para></listitem> - <listitem><para>management/common - </para></listitem> - </itemizedlist><para> - management/console - </para><itemizedlist> - <listitem><para>common - </para></listitem> - <listitem><para>client - </para></listitem> - </itemizedlist><para> - management/agent - </para><itemizedlist> - <listitem><para>common - </para></listitem> - <listitem><para>client - </para></listitem> - </itemizedlist><para> - management/tools/qpid-cli - </para><itemizedlist> - <listitem><para>common - </para></listitem> - <listitem><para>management/common - </para></listitem> - </itemizedlist><para> - management/client - </para><itemizedlist> - <listitem><para>common - </para></listitem> - <listitem><para>client - </para></listitem> - </itemizedlist><para> - integrationtests - </para><itemizedlist> - <listitem><para>systests - </para></listitem> - <listitem><para>client - </para></listitem> - <listitem><para>common - </para></listitem> - <listitem><para>junit-toolkit - </para></listitem> - </itemizedlist><para> - testkit - </para><itemizedlist> - <listitem><para>client - </para></listitem> - <listitem><para>broker - </para></listitem> - <listitem><para>common - </para></listitem> - </itemizedlist><para> - tools - </para><itemizedlist> - <listitem><para>client - </para></listitem> - <listitem><para>common - </para></listitem> - </itemizedlist><para> - client/examples - </para><itemizedlist> - <listitem><para>common - </para></listitem> - <listitem><para>client - </para></listitem> - </itemizedlist><para> - broker-plugins - </para><itemizedlist> - <listitem><para>client - </para></listitem> - <listitem><para>management/common - </para></listitem> - <listitem><para>broker - </para></listitem> - <listitem><para>common - </para></listitem> - <listitem><para>junit-toolkit - </para></listitem> - </itemizedlist> -<!--h3--></section> -<!--h2--></section> - - <section role="h2" id="QpidJavaBuildHowTo-Whatnext-3F"><title> - What next ? - </title> - <para> - If you want to run your built Qpid package, see our <xref linkend="qpid_Getting-Started-Guide"/> for details of - how to do that. - </para><para> - If you want to run our tests, you can use the ant test or - testreport (produces a useful report) targets. - </para> - -<!--h2--></section> -<!--h1--></section> -</section> diff --git a/doc/book/src/java-broker/Qpid-Java-FAQ.xml b/doc/book/src/java-broker/Qpid-Java-FAQ.xml deleted file mode 100644 index 2940e58138..0000000000 --- a/doc/book/src/java-broker/Qpid-Java-FAQ.xml +++ /dev/null @@ -1,890 +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-Java-FAQ"><title> - Qpid Java FAQ - </title> - - <section role="h2" id="QpidJavaFAQ-Purpose"> - <title>Purpose</title> - <para> - Here are a list of commonly asked questions and answers. Click on - the the bolded questions for the answer to unfold. If you have - any questions which are not on this list, please email our - qpid-user list. - </para> - - <section role="h3" id="QpidJavaFAQ-WhatisQpid-3F"><title> - What is Qpid ? - </title> - - <para> - The java implementation of Qpid is a pure Java message broker - that implements the AMQP protocol. Essentially, Qpid is a robust, - performant middleware component that can handle your messaging - traffic. - </para><para> - It currently supports the following features: - </para><itemizedlist> - <listitem><para>High performance header-based routing for messages - </para></listitem> - <listitem><para>All features required by the JMS 1.1 specification. Qpid - passes all tests in the Sun JMS compliance test suite - </para></listitem> - <listitem><para>Transaction support - </para></listitem> - <listitem><para>Persistence using the high performance Berkeley DB Java - Edition. The persistence layer is also pluggable should an - alternative implementation be required. The BDB store is - available from the <xref linkend="qpid_3rd-Party-Libraries"/> page - </para></listitem> - <listitem><para>Pluggable security using SASL. Any Java SASL provider can be - used - </para></listitem> - <listitem><para>Management using JMX and a custom management console built - using Eclipse RCP - </para></listitem> - <listitem><para>Naturally, interoperability with other clients including the - Qpid .NET, Python, Ruby and C++ implementations - </para></listitem> - </itemizedlist> - <!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-WhyamIgettingaConfigurationExceptionatbrokerstartup-3F"><title> - Why am I getting a ConfigurationException at broker startup ? - </title> - - <section role="h4" id="QpidJavaFAQ-InvocationTargetException"><title> - InvocationTargetException - </title> - <para> - If you get a java.lang.reflect.InvocationTargetException on - startup, wrapped as ConfigurationException like this: - </para> - <programlisting> -Error configuring message broker: org.apache.commons.configuration.ConfigurationException: java.lang.reflect.InvocationTargetException -2008-09-26 15:14:56,529 ERROR [main] server.Main (Main.java:206) - Error configuring message broker: org.apache.commons.configuration.ConfigurationException: java.lang.reflect.InvocationTargetException -org.apache.commons.configuration.ConfigurationException: java.lang.reflect.InvocationTargetException -at org.apache.qpid.server.security.auth.database.ConfigurationFilePrincipalDatabaseManager.initialisePrincipalDatabase(ConfigurationFilePrincipalDatabaseManager.java:158) -at org.apache.qpid.server.security.auth.database.ConfigurationFilePrincipalDatabaseManager.initialisePrincipalDatabases(ConfigurationFilePrincipalDatabaseManager.java:87) -at org.apache.qpid.server.security.auth.database.ConfigurationFilePrincipalDatabaseManager.<init>(ConfigurationFilePrincipalDatabaseManager.java:56) -at org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry.initialise(ConfigurationFileApplicationRegistry.java:117) -at org.apache.qpid.server.registry.ApplicationRegistry.initialise(ApplicationRegistry.java:79) -at org.apache.qpid.server.registry.ApplicationRegistry.initialise(ApplicationRegistry.java:67) -at org.apache.qpid.server.Main.startup(Main.java:260) -at org.apache.qpid.server.Main.execute(Main.java:196) -at org.apache.qpid.server.Main.<init>(Main.java:96) -at org.apache.qpid.server.Main.main(Main.java:454) -at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) -at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) -at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) -at java.lang.reflect.Method.invoke(Method.java:597) -at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) -Caused by: java.lang.reflect.InvocationTargetException -at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) -at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) -at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) -at java.lang.reflect.Method.invoke(Method.java:597) -at org.apache.qpid.server.security.auth.database.ConfigurationFilePrincipalDatabaseManager.initialisePrincipalDatabase(ConfigurationFilePrincipalDatabaseManager.java:148) -</programlisting> - <para> - .. then it means you have a missing password file. - </para><para> - You need to create a password file for your deployment and update - your config.xml to reflect the location of the password file for - your instance. - </para><para> - The config.xml can be a little confusing in terms of element - names and file names for passwords. - </para><para> - To do this, you need to edit the passwordDir element for the - broker, which may have a comment to that effect: - </para> - <programlisting> -<passwordDir><!-- Change to the location --></passwordDir> -</programlisting> - <para> - The file should be named passwd by default but if you want to you - can change this by editing this element: - </para> - <programlisting> -<value>${passwordDir}/passwd</value> -</programlisting> - <!--h4--></section> - - - <section role="h4" id="QpidJavaFAQ-Cannotlocateconfigurationsourcenull-2Fvirtualhosts.xml"><title> - Cannot locate configuration source null/virtualhosts.xml - </title> - - <para> - If you get this message, wrapped inside a ConfigurationException - then you've come across a known issue, see JIRA <xref linkend="qpid_QPID-431"/> - </para><para> - The work around is to use a qualified path as the parameter value - for your -c option, rather than (as you migth be) starting the - broker from your installed etc directory. Even going up one level - and using a path relative to your £QPID_HOME directory - would sort this e.g qpid-server -c ./etc/myconfig.xml - </para> -<!--h4--></section> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIruntheQpidbroker-3F"><title> - How do I run - the Qpid broker ? - </title> - - <para> - The broker comes with a script for unix/linux/cygwin called - qpid-server, which can be found in the bin directory of the - installed package. This command can be executed without any - paramters and will then use the default configuration file - provided on install. - </para><para> - For the Windows OS, please use qpid-server.bat. - </para><para> - There's no need to set your classpath for QPID as the scripts - take care of that by adding jar's with classpath defining - manifest files to your classpath. - </para><para> - For more information on running the broker please see our - <xref linkend="Getting-Started"/> page. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowcanIcreateaconnectionusingaURL-3F"><title> - How can I - create a connection using a URL ? - </title> - - <para> - Please see the <xref linkend="qpid_Connection-URL-Format"/> documentation. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIrepresentaJMSDestinationstringwithQPID-3F"><title> - How - do I represent a JMS Destination string with QPID ? - </title> - - <section role="h4" id="QpidJavaFAQ-Queues"><title> - Queues - </title> - - <para> - A queue can be created in QPID using the following URL format. - </para><para> - direct://amq.direct/<Destination>/<Queue - Name> - </para><para> - For example: - direct://amq.direct/<Destination>/simpleQueue - </para><para> - Queue names may consist of any mixture of digits, letters, and - underscores. - </para><para> - The <xref linkend="BindingURLFormat"/> is described in more - detail on it's own page. - </para> -<!--h4--></section> - - <section role="h4" id="QpidJavaFAQ-Topics"><title> - Topics - </title> - - <para> - A topic can be created in QPID using the following URL format. - </para><para> - topic://amq.topic/<Topic Subscription>/ - </para><para> - The topic subscription may only contain the letters A-Z and a-z - and digits 0-9. - </para><para> - The topic subscription is formed from a series of words that may - only contain the letters A-Z and a-z and digits 0-9. - The words are delimited by dots. Each dot represents a new level. - </para><para> - For example: stocks.nyse.ibm - </para><para> - Wildcards can be used on subscription with the following meaning. - </para><itemizedlist> - <listitem><para>match a single level - # match zero or more levels - </para></listitem> - </itemizedlist><para> - For example: - With two clients - 1 - stocks.*.ibm - 2 - stocks.#.ibm - </para><para> - Publishing stocks.nyse.ibm will be received by both - clients but stocks.ibm and stocks.world.us.ibm - will only be received by client 2. - </para><para> - The topic currently does not support wild cards. - </para> -<!--h4--></section> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIconnecttothebrokerusingJNDI-3F"><title> - How do I - connect to the broker using JNDI ? - </title> - - <para> - see <xref linkend="How-to-Use-JNDI"/> - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-I-27musingSpringandWeblogiccanyouhelpmewiththeconfigurationformovingovertoQpid-3F"><title> - I'm using Spring and Weblogic - can you help me with the - configuration for moving over to Qpid ? - </title> - - <para> - Here is a donated Spring configuration file <ulink - url="http://qpid.apache.org/qpid-java-faq.data/appContext.zip">appContext.zip</ulink> - which shows the config for Qpid side by side with - Weblogic. HtH ! - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIconfigurethelogginglevelforQpid-3F"><title> - How do - I configure the logging level for Qpid ? - </title> - - <para> - The system property - </para> - <programlisting> -amqj.logging.level -</programlisting> - <para> - can be used to configure the logging level. - For the broker, you can use the environment variable - AMQJ_LOGGING_LEVEL which is picked up by the qpid-run script - (called by qpid-server to start the broker) at runtime. - </para><para> - For client code that you've written, simply pass in a system - property to your command line to set it to the level you'd like - i.e. - </para> - <programlisting> --Damqj.logging.level=INFO -</programlisting> - <para> - The log level for the broker defaults to INFO if the env variable - is not set, but you may find that your log4j properties affect - this. Setting the property noted above should address this. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowcanIconfiguremyapplicationtouseQpidclientlogging-3F"><title> - How can I configure my application to use Qpid client - logging? - </title> - - <para> - If you don't already have a logging implementation in your - classpath you should add slf4-log4j12-1.4.0.jar and - log4j-1.2.12.jar. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowcanIconfigurethebroker-3F"><title> - How can I - configure the broker ? - </title> - - <para> - The broker configuration is contained in the - <installed-dir>/etc/config.xml file. You can copy and edit - this file and then specify your own configuration file as a - parameter to the startup script using the -c flag i.e. - qpid-server -c <your_config_file's_path> - </para><para> - For more detailed information on configuration, please see - <xref linkend="qpid_Qpid-Design---Configuration"/> - </para><para> - - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-Whatportsdoesthebrokeruse"><title> - What ports - does the broker use? - </title> - - <para> - The broker defaults to use port 5672 at startup for AMQP - traffic. - If the management interface is enabled it starts on port 8999 by - default. - </para><para> - The JMX management interface actually requires 2 ports to - operate, the second of which is indicated to the client - application during connection initiation to the main (default: - 8999) port. Previously this second port has been chosen at random - during broker startup, however since Qpid 0.5 this has been fixed - to a port 100 higher than the main port(ie Default:9099) in order - to ease firewall navigation. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowcanIchangetheportthebrokerusesatruntime-3F"><title> - How - can I change the port the broker uses at runtime ? - </title> - - <para> - The broker defaults to use port 5672 at startup for AMQP - traffic. - The broker also uses port 8999 for the JMX Management interface. - </para><para> - To change the AMQP traffic port use the -p flag at startup. To - change the management port use -m - i.e. qpid-server -p <port_number_to_use> -m - <port_number_to_use> - </para><para> - Use this to get round any issues on your host server with port - 5672/8999 being in use/unavailable. - </para><para> - For additional details on what ports the broker uses see <xref linkend="QpidJavaFAQ-Whatportsdoesthebrokeruse"/> FAQ - entry. - For more detailed information on configuration, please see - <xref linkend="qpid_Qpid-Design---Configuration"/> - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-WhatcommandlineoptionscanIpassintotheqpidserverscript-3F"><title> - What command line options can I pass into the qpid-server - script ? - </title> - - <para> - The following command line options are available: - </para> - - <para> - The following options are available: - </para><table> - <title> - Command Line Options - </title> - - <tgroup cols="3"> - <tbody> - <row> - <entry> - Option - </entry> - <entry> - Long Option - </entry> - <entry> - Description - </entry> - </row> - <row> - <entry> - b - </entry> - <entry> - bind - </entry> - <entry> - Bind to the specified address overriding any value in the - config file - </entry> - </row> - <row> - <entry> - c - </entry> - <entry> - config - </entry> - <entry> - Use the given configuration file - </entry> - </row> - <row> - <entry> - h - </entry> - <entry> - help - </entry> - <entry> - Prints list of options - </entry> - </row> - <row> - <entry> - l - </entry> - <entry> - logconfig - </entry> - <entry> - Use the specified log4j.xml file rather than that in the - etc directory - </entry> - </row> - <row> - <entry> - m - </entry> - <entry> - mport - </entry> - <entry> - Specify port to listen on for the JMX Management. Overrides - value in config file - </entry> - </row> - <row> - <entry> - p - </entry> - <entry> - port - </entry> - <entry> - Specify port to listen on. Overrides value in config file - </entry> - </row> - <row> - <entry> - v - </entry> - <entry> - version - </entry> - <entry> - Print version information and exit - </entry> - </row> - <row> - <entry> - w - </entry> - <entry> - logwatch - </entry> - <entry> - Specify interval for checking for logging config changes. - Zero means no checking - </entry> - </row> - </tbody> - </tgroup></table> - </section> - - <section role="h3" id="QpidJavaFAQ-HowdoIauthenticatewiththebroker-3FWhatuserid-26passwordshouldIuse-3F"><title> - How do I authenticate with the broker ? What user id & - password should I use ? - </title> - - <para> - You should login as user guest with password guest - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIcreatequeuesthatwillalwaysbeinstantiatedatbrokerstartup-3F"><title> - How do I create queues that will always be instantiated at - broker startup ? - </title> - - <para> - You can configure queues which will be created at broker startup - by tailoring a copy of the virtualhosts.xml file provided in the - installed qpid-version/etc directory. - </para><para> - So, if you're using a queue called 'devqueue' you can ensure that - it is created at startup by using an entry something like this: - </para> - <programlisting> -<virtualhosts> - <default>test</default> - <virtualhost> - <name>test</name> - <test> - <queue> - <name>devqueue</name> - <devqueue> - <exchange>amq.direct</exchange> - <maximumQueueDepth>4235264</maximumQueueDepth> <!-- 4Mb --> - <maximumMessageSize>2117632</maximumMessageSize> <!-- 2Mb --> - <maximumMessageAge>600000</maximumMessageAge> <!-- 10 mins --> - </devqueue> - </queue> - </test> - </virtualhost> -</virtualhosts> -</programlisting> - <para> - Note that the name (in thie example above the name is 'test') - element should match the virtualhost that you're using to create - connections to the broker. This is effectively a namespace used - to prevent queue name clashes etc. You can also see that we've - set the 'test' virtual host to be the default for any connections - which do not specify a virtual host (in the <default> tag). - </para><para> - You can amend the config.xml to point at a different - virtualhosts.xml file by editing the <virtualhosts/> - element. - </para><para> - So, for example, you could tell the broker to use a file in your - home directory by creating a new config.xml file with the - following entry: - </para><para> - <virtualhosts>/home/myhomedir/virtualhosts.xml</virtualhosts> - </para><para> - You can then pass this amended config.xml into the broker at - startup using the -c flag i.e. - qpid-server -c <path>/config.xml - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIcreatequeuesatruntime-3F"><title> - How do I - create queues at runtime? - </title> - - <para> - Queues can be dynamically created at runtime by creating a - consumer for them. After they have been created and bound (which - happens automatically when a JMS Consumer is created) a publisher - can send messages to them. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoItunethebroker-3F"><title> - How do I tune - the broker? - </title> - - <para> - There are a number of tuning options available, please see the - <xref linkend="How-to-Tune-M3-Java-Broker-Performance"/> page for more information. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-Wheredoundeliverablemessagesendup-3F"><title> - Where do - undeliverable messages end up ? - </title> - - <para> - At present, messages with an invalid routing key will be returned - to the sender. If you register an exception listener for your - publisher (easiest to do by making your publisher implement the - ExceptionListener interface and coding the onException method) - you'll see that you end up in onException in this case. You can - expect to be catching a subclass of - org.apache.qpid.AMQUndeliveredException. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-CanIconfigurethenameoftheQpidbrokerlogfileatruntime-3F"><title> - Can I configure the name of the Qpid broker log file at - runtime ? - </title> - - <para> - If you simply start the Qpid broker using the default - configuration, then the log file is written to - $QPID_WORK/log/qpid.log - </para><para> - This is not ideal if you want to run several instances from one - install, or acrhive logs to a shared drive from several hosts. - </para><para> - To make life easier, there are two optional ways to configure the - naming convention used for the broker log. - </para> - - <section role="h4" id="QpidJavaFAQ-Settingaprefixorsuffix"><title> - Setting a prefix - or suffix - </title> - - <para> - Users should set the following environment variables before - running qpid-server: - </para><para> - QPID_LOG_PREFIX - will prefix the log file name with the - specified value e.g. if you set this value to be the name of your - host (for example) it could look something like host123qpid.log - </para><para> - QPID_LOG_SUFFIX - will suffix the file name with the specified - value e.g. if you set this value to be the name of your - application (for example) if could look something like - qpidMyApp.log - </para> -<!--h4--></section> - - <section role="h4" id="QpidJavaFAQ-IncludingthePID"><title> - Including the PID - </title> - - <para> - Setting either of these variables to the special value PID will - introduce the process id of the java process into the file name - as a prefix or suffix as specified** - </para> -<!--h4--></section> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-Myclientapplicationappearstohavehung-3F"><title> - My - client application appears to have hung? - </title> - - <para> - The client code currently has various timeouts scattered - throughout the code. These can cause your client to appear like - it has hung when it is actually waiting for the timeout ot - compelete. One example is when the broker becomes non-responsive, - the client code has a hard coded 2 minute timeout that it will - wait when closing a connection. These timeouts need to be - consolidated and exposed. see <xref linkend="qpid_QPID-429"/> - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIcontacttheQpidteam-3F"><title> - How do I - contact the Qpid team ? - </title> - - <para> - For general questions, please subscribe to the - <ulink url="mailto:users@qpid.apache.org">users@qpid.apache.org</ulink> mailing list. - </para><para> - For development questions, please subscribe to the - <ulink url="mailto:dev@qpid.apache.org">dev@qpid.apache.org</ulink> mailing list. - </para><para> - More details on these lists are available on our <xref linkend="qpid_Mailing-Lists"/> - page. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowcanIchangeauser-27spasswordwhilethebrokerisup-3F"><title> - How can I change a user's password while the broker is up ? - </title> - - <para> - You can do this via the <xref linkend="qpid_Qpid-JMX-Management-Console"/>. To - do this simply log in to the management console as an admin user - (you need to have created an admin account in the - jmxremote.access file first) and then select the 'UserManagement' - mbean. Select the user in the table and click the Set Password - button. Alternatively, update the password file and use the - management console to reload the file with the button at the - bottom of the 'UserManagement' view. In both cases, this will - take effect when the user next logs in i.e. will not cause them - to be disconnected if they are already connected. - </para><para> - For more information on the Management Console please see our - <xref linkend="Qpid-JMX-Management-Console-User-Guide"/> - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowdoIknowifthereisaconsumerforamessageIamgoingtosend-3F"><title> - How do I know if there is a consumer for a message I am going - to send? - </title> - - <para> - Knowing that there is a consumer for a message is quite tricky. - That said using the qpid.jms.Session#createProducer with - immediate and mandatory set to true will get you part of the way - there. - </para><para> - If you are publishing to a well known queue then immediate will - let you know if there is any consumer able to pre-fetch that - message at the time you send it. If not it will be returned to - you on your connection listener. - </para><para> - If you are sending to a queue that the consumer creates then the - mandatory flag will let you know if they have not yet created - that queue. - </para><para> - These flags will not be able to tell you if the consuming - application has received the message and is able to process it. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-HowcanIinspectthecontentsofmyMessageStore-3F"><title> - How - can I inspect the contents of my MessageStore? - </title> - - <para> - The management console can be used to interogate an active - broker and browse the contents of a queue.See the <xref linkend="qpid_Qpid-JMX-Management-Console"/> - page for further details. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-Whyaremytransientmessagesbeingsoslow-3F"><title> - Why are - my transient messages being so slow? - </title> - - <para> - You should check that you aren't sending persistent messages, - 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. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-Whydoesmyproducerfillupthebrokerwithmessages-3F"><title> - Why - does my producer fill up the broker with messages? - </title> - - <para> - Switch on producer flow control to prevent temporary spikes in - message production over-filling the broker. - - Of course, if the long-term rate of message production exceeds - the rate of message - consumption then that is an architectural problem that can only - be temporarily mitigated by producer flow control. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-ThebrokerkeepsthrowinganOutOfMemoryexception-3F"><title> - The - broker keeps throwing an OutOfMemory exception? - </title> - - <para> - The broker can no longer store any more messages in memory. This - is particular evident if you are using the MemoryMessageStore. To - alleviate this issue you should ensure that your clients are - consuming all the messages from the broker. - </para><para> - You may also want to increase the memory allowance to the broker - though this will only delay the exception if you are publishing - messages faster than you are consuming. See <xref linkend="qpid_Java-Environment-Variables"/> for - details of changing the memory settings. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-WhyamIgettingabrokersideexceptionwhenItrytopublishtoaqueueoratopic-3F"><title> - Why am I getting a broker side exception when I try to - publish to a queue or a topic ? - </title> - - <para> - If you get a stack trace like this when you try to publish, then - you may have typo'd the exchange type in your queue or topic - declaration. Open your virtualhosts.xml and check that the - </para> - <programlisting> -<exchange>amq.direct</exchange> -</programlisting> - - <programlisting> -2009-01-12 15:26:27,957 ERROR [pool-11-thread-2] protocol.AMQMinaProtocolSession (AMQMinaProtocolSession.java:365) - Unexpected exception while processing frame. Closing connection. -java.lang.NullPointerException - at org.apache.qpid.server.security.access.PrincipalPermissions.authorise(PrincipalPermissions.java:398) - at org.apache.qpid.server.security.access.plugins.SimpleXML.authorise(SimpleXML.java:302) - at org.apache.qpid.server.handler.QueueBindHandler.methodReceived(QueueBindHandler.java:111) - at org.apache.qpid.server.handler.ServerMethodDispatcherImpl.dispatchQueueBind(ServerMethodDispatcherImpl.java:498) - at org.apache.qpid.framing.amqp_8_0.QueueBindBodyImpl.execute(QueueBindBodyImpl.java:167) - at org.apache.qpid.server.state.AMQStateManager.methodReceived(AMQStateManager.java:204) - at org.apache.qpid.server.protocol.AMQMinaProtocolSession.methodFrameReceived(AMQMinaProtocolSession.java:295) - at org.apache.qpid.framing.AMQMethodBodyImpl.handle(AMQMethodBodyImpl.java:93) - at org.apache.qpid.server.protocol.AMQMinaProtocolSession.frameReceived(AMQMinaProtocolSession.java:235) - at org.apache.qpid.server.protocol.AMQMinaProtocolSession.dataBlockReceived(AMQMinaProtocolSession.java:191) - at org.apache.qpid.server.protocol.AMQPFastProtocolHandler.messageReceived(AMQPFastProtocolHandler.java:244) - at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived(AbstractIoFilterChain.java:703) - at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362) - at org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54) - at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800) - at org.apache.qpid.pool.PoolingFilter.messageReceived(PoolingFilter.java:371) - at org.apache.mina.filter.ReferenceCountingIoFilter.messageReceived(ReferenceCountingIoFilter.java:96) - at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362) - at org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54) - at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800) - at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimpleProtocolDecoderOutput.java:60) - at org.apache.mina.filter.codec.QpidProtocolCodecFilter.messageReceived(QpidProtocolCodecFilter.java:174) - at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362) - at org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54) - at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800) - at org.apache.qpid.pool.Event$ReceivedEvent.process(Event.java:86) - at org.apache.qpid.pool.Job.processAll(Job.java:110) - at org.apache.qpid.pool.Job.run(Job.java:149) - 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) -</programlisting> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-WhyistherealotofAnonymousIoServicethreads"><title> - Why - is there a lot of AnonymousIoService threads - </title> - - <para> - These threads are part of the thread pool used by Mina to process - the socket. In the future we may provide tuning guidelines but at - 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. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ--22unabletocertifytheprovidedSSLcertificateusingthecurrentSSLtruststore-22whenconnectingtheManagementConsoletothebroker."><title> - "unable to certify the provided SSL certificate using the - current SSL trust store" when connecting the Management Console - to the broker. - </title> - - <para> - You have not configured the console's SSL trust store properly, - see <xref linkend="qpid_Management-Console-Security"/> for - more details. - </para> -<!--h3--></section> - - <section role="h3" id="QpidJavaFAQ-CanauseTCPKEEPALIVEorAMQPheartbeatingtokeepmyconnectionopen-3F"><title> - Can a use TCP_KEEPALIVE or AMQP heartbeating to keep my - connection open? - </title> - - <para> - See <xref linkend="qpid_Configure-Broker-and-Client-Heartbeating"/> - </para> - -<!--h3--></section> -<!--h2--></section> - - - -</section> diff --git a/doc/book/src/java-broker/Qpid-Troubleshooting-Guide.xml b/doc/book/src/java-broker/Qpid-Troubleshooting-Guide.xml deleted file mode 100644 index 0920f18798..0000000000 --- a/doc/book/src/java-broker/Qpid-Troubleshooting-Guide.xml +++ /dev/null @@ -1,156 +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-Troubleshooting-Guide"> - - <title> - Qpid Troubleshooting Guide - </title> - - <section role="h2" id="QpidTroubleshootingGuide-I-27mgettingajava.lang.UnsupportedClassVersionErrorwhenItrytostartthebroker.Whatdoesthismean-3F"><title> - I'm getting a java.lang.UnsupportedClassVersionError when I - try to start the broker. What does this mean ? - </title> - - <para> - The QPID broker requires JDK 1.5 or later. If you're seeing this - exception you don't have that version in your path. Set JAVA_HOME - to the correct version and ensure the bin directory is on your - path. - </para><para> - java.lang.UnsupportedClassVersionError: - org/apache/qpid/server/Main (Unsupported major.minor version - 49.0) - at - java.lang.ClassLoader.defineClass(Ljava.lang.String;[BIILjava.security.ProtectionDomain;)Ljava.lang.Class;(Unknown - Source) - at - java.security.SecureClassLoader.defineClass(Ljava.lang.String;[BIILjava.security.CodeSource;)Ljava.lang.Class;(SecureClassLoader.java:123) - - at - java.net.URLClassLoader.defineClass(Ljava.lang.String;Lsun.misc.Resource;)Ljava.lang.Class;(URLClassLoader.java:251) - - at - java.net.URLClassLoader.access$100(Ljava.net.URLClassLoader;Ljava.lang.String;Lsun.misc.Resource;)Ljava.lang.Class;(URLClassLoader.java:55) - - at java.net.URLClassLoader$1.run()Ljava.lang.Object; - (URLClassLoader.java:194) - at - jrockit.vm.AccessController.do_privileged_exc(Ljava.security.PrivilegedExceptionAction;Ljava.security.AccessControlContext;I)Ljava.lang.Object;(Unknown - Source) - at - jrockit.vm.AccessController.doPrivileged(Ljava.security.PrivilegedExceptionAction;Ljava.security.AccessControlContext;)Ljava.lang.Object;(Unknown - Source) - at - java.net.URLClassLoader.findClass(Ljava.lang.String;)Ljava.lang.Class;(URLClassLoader.java:187) - - at - java.lang.ClassLoader.loadClass(Ljava.lang.String;Z)Ljava.lang.Class; - (Unknown Source) - at - sun.misc.Launcher$AppClassLoader.loadClass(Ljava.lang.String;Z)Ljava.lang.Class;(Launcher.java:274) - - at - java.lang.ClassLoader.loadClass(Ljava.lang.String;)Ljava.lang.Class; - - (Unknown Source) - at - java.lang.ClassLoader.loadClassFromNative(II)Ljava.lang.Class; - - (Unknown Source) - </para> - -<!--h2--></section> - - <section role="h2" id="QpidTroubleshootingGuide-I-27mhavingaproblembindingtotherequiredhost-3Aportatbrokerstartup-3F"><title> - I'm having a problem binding to the required host:port at - broker startup ? - </title> - <para> - This error probably indicates that another process is using the - port you the broker is trying to listen on. If you haven't - amended the default configuration this will be 5672. To check - what process is using the port you can use 'netstat -an |grep - 5672'. - </para><para> - To change the port your broker uses, either edit the config.xml - you are using. You can specify an alternative config.xml from the - one provided in /etc by using the -c flag i.e. qpid-server -c - <my config file path>. - </para><para> - You can also amend the port more simply using the -p option to - qpid-server i.e. qpid-server -p <my port number' - </para> -<!--h2--></section> - - <section role="h2" id="QpidTroubleshootingGuide-I-27mhavingproblemswithmyclasspath.HowcanIensurethatmyclasspathisok-3F"><title> - I'm having problems with my classpath. How can I ensure that - my classpath is ok ? - </title> - <para> - When you are running the broker the classpath is taken care of - for you, via the manifest entries in the launch jars that the - qpid-server configuration file adds to the classpath. - </para><para> - However, if you are running your own client code and experiencing - classspath errors you need to ensure that the client-launch.jar - from the installed Qpid lib directory is on your classpath. The - manifest for this jar includes the common-launch.jar, and thus - all the code you need to run a client application. - </para> - </section> - - <section role="h2" id="QpidTroubleshootingGuide-Ican-27tgetthebrokertostart.HowcanIdiagnosetheproblem-3F"><title> - I can't get the broker to start. How can I diagnose the - problem ? - </title> - <para> - Firstly have a look at the broker log file - either on stdout or - in $QPID_WORK/log/qpid.log or in $HOME/log/qpid.log if you - haven't set QPID_WORK. - </para><para> - You should see the problem logged in here via log4j and a stack - trace. Have a look at the other entries on this page for common - problems. If the log file includes a line like: - </para><para> - "2006-10-13 09:58:14,672 INFO [main] server.Main (Main.java:343) - - Qpid.AMQP listening on non-SSL address 0.0.0.0/0.0.0.0:5672" - </para><para> - ... then you know the broker started up. If not, then it didn't. - </para> -<!--h2--></section> - - <section role="h2" id="QpidTroubleshootingGuide-WhenItrytosendmessagestoaqueueI-27mgettingaerrorasthequeuedoesnotexist.WhatcanIdo-3F"><title> - When I try to send messages to a queue I'm getting a error as - the queue does not exist. What can I do ? - </title> - <para> - In Qpid queues need a consumer before they really exist, unless - you have used the virtualhosts.xml file to specify queues which - should always be created at broker startup. If you don't want to - use this config, then simply ensure that you consume first from - queue before staring to publish to it. See the entry on our - <xref linkend="qpid_Qpid-Java-FAQ"/> for more details of using the virtualhosts.xml route. - </para> -<!--h2--></section> - -</section> |