Modified: qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JMS-Extensions.xml URL: http://svn.apache.org/viewvc/qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JMS-Extensions.xml?rev=1722019&r1=1722018&r2=1722019&view=diff ============================================================================== --- qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JMS-Extensions.xml (original) +++ qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JMS-Extensions.xml Mon Dec 28 22:41:23 2015 @@ -1,10 +1,4 @@ <?xml version="1.0"?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ -<!ENTITY % entities SYSTEM "commonEntities.xml"> -%entities; -]> <!-- Licensed to the Apache Software Foundation (ASF) under one @@ -26,7 +20,7 @@ --> -<appendix id="JMS-Client-0-8-Appendix-JMS-Extensions"> +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="JMS-Client-0-8-Appendix-JMS-Extensions"> <title>JMS Extensions</title> <para>This section illustrates using Qpid specific extentions to JMS for the managament of queues, exchanges and bindings.</para> @@ -36,43 +30,43 @@ subject to change and will not be supported in this form for AMQP 1.0. Instead, the reader is directed towards the Managment interfaces of the Broker.</para> </important> - <section id="JMS-Client-0-8-Appendix-JMS-Extensions-Queue"> + <section xml:id="JMS-Client-0-8-Appendix-JMS-Extensions-Queue"> <title>Queue Management</title> <para>These extensions allow queues to be created or removed.</para> - <section id="JMS-Client-0-8-Appendix-JMS-Extensions-Queue-Creation"> + <section xml:id="JMS-Client-0-8-Appendix-JMS-Extensions-Queue-Creation"> <title>Queue creation</title> <para>The following example illustrates the creation of the a LVQ queue from a javax.jms.Session object. Note that this utilises a Qpid specific extension to JMS and involves casting the session object back to its Qpid base-class.</para> <example> <title>Creation of an LVQ using the Qpid extension to JMS</title> - <programlisting><![CDATA[Map<String,Object> arguments = new HashMap<String, Object>(); + <programlisting>Map<String,Object> arguments = new HashMap<String, Object>(); arguments.put("qpid.last_value_queue_key","ISIN"); AMQDestination amqQueue = (AMQDestination) context.lookup("myqueue"); -((AMQSession<?,?>) session).createQueue( +((AMQSession<?,?>) session).createQueue( AMQShortString.valueOf(amqQueue.getQueueName()), amqQueue.isAutoDelete(), amqQueue.isDurable(), amqQueue.isExclusive(), arguments); -]]></programlisting> +</programlisting> </example> </section> </section> - <section id="JMS-Client-0-8-Appendix-JMS-Extensions-Binding"> + <section xml:id="JMS-Client-0-8-Appendix-JMS-Extensions-Binding"> <title>Binding Management</title> <para>These extensions allow bindings to be created or removed.</para> - <section id="JMS-Client-0-8-Appendix-JMS-Extensions-Binding-Creation"> + <section xml:id="JMS-Client-0-8-Appendix-JMS-Extensions-Binding-Creation"> <title>Binding creation</title> <para>The following example illustrates the creation of queue binding to topic exchange with JMS client.</para> <example> <title>Binding a queue using JMS</title> - <programlisting><![CDATA[ConnectionFactory connectionFactory = ... + <programlisting>ConnectionFactory connectionFactory = ... Connection connection = connectionFactory.createConnection(); -AMQSession<?, ?> session = (AMQSession<?,?>)connection.createSession(false, Session.AUTO_ACKNOWLEDGE); +AMQSession<?, ?> session = (AMQSession<?,?>)connection.createSession(false, Session.AUTO_ACKNOWLEDGE); ... @@ -83,12 +77,12 @@ AMQDestination destination = (AMQDestina ... // binding arguments -Map<String, Object> arguments = new HashMap<String, Object>(); +Map<String, Object> arguments = new HashMap<String, Object>(); arguments.put("x-filter-jms-selector", "application='app1'"); // create binding session.bindQueue(queueName, routingKey, FieldTable.convertToFieldTable(arguments), - new AMQShortString("amq.topic"), destination);]]></programlisting> + new AMQShortString("amq.topic"), destination);</programlisting> </example> </section> </section>
Modified: qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml URL: http://svn.apache.org/viewvc/qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml?rev=1722019&r1=1722018&r2=1722019&view=diff ============================================================================== --- qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml (original) +++ qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml Mon Dec 28 22:41:23 2015 @@ -1,10 +1,4 @@ <?xml version="1.0"?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ -<!ENTITY % entities SYSTEM "commonEntities.xml"> -%entities; -]> <!-- Licensed to the Apache Software Foundation (ASF) under one @@ -26,7 +20,7 @@ --> -<chapter id="JMS-Client-0-8-JNDI-Properties-Format"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="JMS-Client-0-8-JNDI-Properties-Format"> <title>JNDI Properties Format</title> <para>The Qpid JMS Client comes with own JNDI context factory @@ -34,49 +28,44 @@ Java properties file for declaring the JMS administered objects: connection factories, queues, topics and destinations. It uses the following syntax:</para> <para> - <screen><![CDATA[ -connectionfactory.<jndi name>=<connection url> -queue.<jndi name>=<queue name> -topic.<jndi name>=<topic name> -destination.<jndi name>=<binding url> -]]></screen></para> + <screen> +connectionfactory.<jndi name>=<connection url> +queue.<jndi name>=<queue name> +topic.<jndi name>=<topic name> +destination.<jndi name>=<binding url> +</screen></para> <para>An arbitrary number of connection factories, queues, topics, queues or destinations or can be declared in the JNDI properties file. Each JNDI name must be unique.</para> <para>The application looks up the objects via an InitialContext. This lookup and an example JNDI properties file is provided in <xref linkend="JMS-Client-0-8-Examples"/></para> <para>We now consider each JMS administered object type in turn.</para> - <section id="JMS-Client-0-8-JNDI-Properties-Format-ConnectionFactory"> + <section xml:id="JMS-Client-0-8-JNDI-Properties-Format-ConnectionFactory"> <title>ConnectionFactory</title> - <para><literal>connectionfactory.</literal><emphasis>name</emphasis> declares a <ulink - url="&oracleJeeDocUrl;javax/jms/ConnectionFactory.html">ConnectionFactory</ulink> with the + <para><literal>connectionfactory.</literal><emphasis>name</emphasis> declares a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/ConnectionFactory.html">ConnectionFactory</link> with the given JNDI name. The value must be a legal Connection URL.</para> <para>See <xref linkend="JMS-Client-0-8-Connection-URL"/> for format of the URL and its permitted options.</para> </section> - <section id="JMS-Client-0-8-JNDI-Properties-Format-Queue"> + <section xml:id="JMS-Client-0-8-JNDI-Properties-Format-Queue"> <title>Queue</title> - <para><literal>queue.</literal><emphasis>name</emphasis> declares a <ulink - url="&oracleJeeDocUrl;javax/jms/Queue.html">Queue</ulink> with the given JNDI name. The + <para><literal>queue.</literal><emphasis>name</emphasis> declares a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Queue.html">Queue</link> with the given JNDI name. The value is simple queue name. This is the name of the queue as known by the Broker.</para> <para>The <literal>queue.</literal> form is a short hand for declaring a destination:</para> - <screen><![CDATA[destination.name=direct://amq.direct//<queue name>?routingkey=â<queue name>â&durable=âtrueâ]]></screen> + <screen>destination.name=direct://amq.direct//<queue name>?routingkey=â<queue name>â&durable=âtrueâ</screen> </section> - <section id="JMS-Client-0-8-JNDI-Properties-Format-Topic"> + <section xml:id="JMS-Client-0-8-JNDI-Properties-Format-Topic"> <title>Topic</title> - <para><literal>topic.</literal><emphasis>name</emphasis> declares a <ulink - url="&oracleJeeDocUrl;javax/jms/Topic.html">Topic</ulink> with the given JNDI name. The + <para><literal>topic.</literal><emphasis>name</emphasis> declares a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Topic.html">Topic</link> with the given JNDI name. The value is topic name. This topic name is used on the Broker as a binding key between the <literal>amq.topic</literal> exchange and the queue corresponding to the topic subscriber.</para> <para>The <literal>topic.</literal> form is a short hand for declaring a destination:</para> - <screen><![CDATA[destination.name=topic://amq.topic/<topic name>/?routingkey=<topic name>]]></screen> + <screen>destination.name=topic://amq.topic/<topic name>/?routingkey=<topic name></screen> </section> - <section id="JMS-Client-0-8-JNDI-Properties-Format-Destination"> + <section xml:id="JMS-Client-0-8-JNDI-Properties-Format-Destination"> <title>Destination</title> - <para><literal>destination.</literal><emphasis>name</emphasis> declares either a <ulink - url="&oracleJeeDocUrl;javax/jms/Queue.html">Queue</ulink> or <ulink - url="&oracleJeeDocUrl;javax/jms/Topic.html">Topic</ulink> (depending on the class) with the + <para><literal>destination.</literal><emphasis>name</emphasis> declares either a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Queue.html">Queue</link> or <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Topic.html">Topic</link> (depending on the class) with the given JNDI name. The value must be a Binding URL.</para> <para>See <xref linkend="JMS-Client-0-8-Binding-URL"/> for format of the URL and its permitted options.</para> Modified: qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Logging.xml URL: http://svn.apache.org/viewvc/qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Logging.xml?rev=1722019&r1=1722018&r2=1722019&view=diff ============================================================================== --- qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Logging.xml (original) +++ qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Logging.xml Mon Dec 28 22:41:23 2015 @@ -1,10 +1,4 @@ <?xml version="1.0"?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ -<!ENTITY % entities SYSTEM "commonEntities.xml"> -%entities; -]> <!-- Licensed to the Apache Software Foundation (ASF) under one @@ -26,22 +20,18 @@ --> -<chapter id="JMS-Client-0-8-Logging"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="JMS-Client-0-8-Logging"> <title>Logging</title> - <para>The Qpid JMS client uses the <ulink url="http://www.slf4j.org">Apache SLF4J</ulink> logging + <para>The Qpid JMS client uses the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.slf4j.org">Apache SLF4J</link> logging framework. All logging activity created by the client is directed through the SLF4J API. SLF4J is a is a façade for other common logging frameworks. This makes it easy for application authors to use their prefered logging framework in their application stack, and have the Qpid JMS Client use it too. </para> - <para>SLF4J suppplies bindings for many common logging frameworks (<ulink - url="&oracleJdkDocUrl;java/util/logging/package-summary.html">JUL</ulink>, <ulink - url="http://logging.apache.org/log4j/1.2/">Apache Log4J</ulink>, <ulink - url="http://logback.qos.ch">Logback</ulink>.</para> + <para>SLF4J suppplies bindings for many common logging frameworks (<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJdkDocUrl;java/util/logging/package-summary.html">JUL</link>, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://logging.apache.org/log4j/1.2/">Apache Log4J</link>, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://logback.qos.ch">Logback</link>.</para> <para>Include the SLF4J binding corresponding to the logging framework of your choosen logging - framework on classpath. For full details, see the SLF4J <ulink url="http://www.slf4j.org" - >documentation</ulink>.</para> + framework on classpath. For full details, see the SLF4J <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.slf4j.org">documentation</link>.</para> - <section id="JMS-Client-0-8-Logging-RecommendedProductionLoggingLevel"> + <section xml:id="JMS-Client-0-8-Logging-RecommendedProductionLoggingLevel"> <title>Recommended Production Logging Level</title> <para>In production, it is recommended that you configure your logging framework is configured with logger <literal>org.apache.qpid</literal> set to <literal>WARN</literal>.</para> @@ -54,7 +44,7 @@ another manner, refer to the documentation accompanying the logging framework for details of how to proceed.</para> </section> - <section id="JMS-Client-0-8-Logging-EnablingDebugLogging"> + <section xml:id="JMS-Client-0-8-Logging-EnablingDebugLogging"> <title>Enabling Debug</title> <para>If you are experiencing a problem, it can be informative to enable debug logging to allow the behaviour of the Qpid JMS client to be understood at a deeper level.</para> Modified: qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-System-Properties.xml URL: http://svn.apache.org/viewvc/qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-System-Properties.xml?rev=1722019&r1=1722018&r2=1722019&view=diff ============================================================================== --- qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-System-Properties.xml (original) +++ qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-System-Properties.xml Mon Dec 28 22:41:23 2015 @@ -1,10 +1,4 @@ <?xml version="1.0"?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ -<!ENTITY % entities SYSTEM "commonEntities.xml"> -%entities; -]> <!-- Licensed to the Apache Software Foundation (ASF) under one @@ -26,12 +20,11 @@ --> -<chapter id="JMS-Client-0-8-System-Properties"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="JMS-Client-0-8-System-Properties"> <title>System Properties</title> <para>The following system properties affect the behaviour of the Qpid JMS client. System properties are global in nature so affect all Qpid interactions made from within the same - JVM. For many options, there are equivalent <link linkend="JMS-Client-0-8-Connection-URL" - >Connection URL</link> options allowing the option to be controlled at the level of the + JVM. For many options, there are equivalent <link linkend="JMS-Client-0-8-Connection-URL">Connection URL</link> options allowing the option to be controlled at the level of the Connection.</para> <table pgwide="1"> @@ -55,7 +48,7 @@ the specified version and only negotiate downwards if the Broker does not support the specified version.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-Heartbeat"> + <row xml:id="JMS-Client-0-8-System-Properties-Heartbeat"> <entry>qpid.heartbeat</entry> <entry>int</entry> <entry><para>Defaults to the heartbeat value suggested by the Broker, if @@ -63,9 +56,7 @@ <entry>Frequency of heartbeat messages (in seconds). A value of 0 disables heartbeating. <para>Two consecutive missed heartbeats will result in the connection timing out.</para><para>This can also be set per connection - using the <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-Heartbeat" - >Connection URL</link> options.</para><para>For compatibility with + using the <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-Heartbeat">Connection URL</link> options.</para><para>For compatibility with old client configuration, the synonym <varname>amqj.heartbeat.delay</varname> is supported.</para></entry> </row> @@ -87,13 +78,13 @@ <para>Setting this property to 'false' will disable that check and allow you to ignore host name errors.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-ConnectionCompressMessages"> + <row xml:id="JMS-Client-0-8-System-Properties-ConnectionCompressMessages"> <entry>qpid.connection_compress_messages</entry> <entry>Boolean</entry> <entry>false</entry> <entry><para>Controls whether the client will compress messages before they they are sent.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-MessageCompressionThresholdSize"> + <row xml:id="JMS-Client-0-8-System-Properties-MessageCompressionThresholdSize"> <entry>qpid.message_compression_threshold_size</entry> <entry>Integer</entry> <entry>102400</entry> @@ -116,21 +107,19 @@ </row> </thead> <tbody> - <row id="JMS-Client-0-8-System-Properties-DestSyntax"> + <row xml:id="JMS-Client-0-8-System-Properties-DestSyntax"> <entry>qpid.dest_syntax</entry> <entry>String</entry> <entry>ADDR</entry> <entry><para>Addressing syntax: ADDR (Address format) or BURL (Binding URL)</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-Maxprefetch"> + <row xml:id="JMS-Client-0-8-System-Properties-Maxprefetch"> <entry>max_prefetch</entry> <entry>int</entry> <entry>500</entry> <entry><para>Maximum number of pre-fetched messages per Session. This can also be defaulted for sessions created on a particular connection using the - <link - linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Maxprefetch" - >Connection URL</link> options.</para></entry> + <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Maxprefetch">Connection URL</link> options.</para></entry> </row> <!-- 0-10 <row> @@ -154,9 +143,7 @@ <entry>false</entry> <entry><para>If set will use the old map message encoding. By default the Map messages are encoded using the 0-10 map encoding.</para><para>This can - also be set per connection using the <link - linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-UseLegacyMap" - >Connection URL</link> options.</para></entry> + also be set per connection using the <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-UseLegacyMap">Connection URL</link> options.</para></entry> </row> <row> @@ -184,7 +171,7 @@ </row> </thead> <tbody> - <row id="JMS-Client-0-8-System-Properties-DeclareExchanges"> + <row xml:id="JMS-Client-0-8-System-Properties-DeclareExchanges"> <entry>qpid.declare_exchanges</entry> <entry>Boolean</entry> <entry>true</entry> @@ -193,7 +180,7 @@ Destination), creating it if is does not already exist. </para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-DeclareQueues"> + <row xml:id="JMS-Client-0-8-System-Properties-DeclareQueues"> <entry>qpid.declare_queues</entry> <entry>Boolean</entry> <entry>true</entry> @@ -202,7 +189,7 @@ Destination), creating it if is does not already exist.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-BindQueues"> + <row xml:id="JMS-Client-0-8-System-Properties-BindQueues"> <entry>qpid.bind_queues</entry> <entry>Boolean</entry> <entry>true</entry> @@ -211,13 +198,11 @@ exchange name, queue name and routing key are taken from the Binding URL associated with the Destination.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-RejectBehaviour"> + <row xml:id="JMS-Client-0-8-System-Properties-RejectBehaviour"> <entry>qpid.reject.behaviour</entry> <entry>String</entry> <entry>NORMAL</entry> - <entry><para>Used with the maximum delivery count feature. See <xref - linkend="JMS-Client-0-8-Client-Understanding-MessageConsumer-MaximumDeliveryCount" - /> for details.</para></entry> + <entry><para>Used with the maximum delivery count feature. See <xref linkend="JMS-Client-0-8-Client-Understanding-MessageConsumer-MaximumDeliveryCount"/> for details.</para></entry> </row> <!-- 0-10 @@ -271,56 +256,46 @@ </row> </thead> <tbody> - <row id="JMS-Client-0-8-System-Properties-DefaultMandatory"> + <row xml:id="JMS-Client-0-8-System-Properties-DefaultMandatory"> <entry>qpid.default_mandatory</entry> <entry>Boolean</entry> <entry>True</entry> <entry><para>If true, messages sent to Queue destinations for which cannot be routed to at least one queue on the Broker, will be returned to the - application. See <xref - linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-MandatoryMessage" - /> for more details.</para></entry> + application. See <xref linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-MandatoryMessage"/> for more details.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-DefaultMandatoryTopic"> + <row xml:id="JMS-Client-0-8-System-Properties-DefaultMandatoryTopic"> <entry>qpid.default_mandatory_topic</entry> <entry>Boolean</entry> <entry>False</entry> <entry><para>If true, messages sent to Topic destinations for which cannot be routed to at least one queue on the Broker, will be returned to the - application. See <xref - linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-MandatoryMessage" - /> for more details..</para></entry> + application. See <xref linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-MandatoryMessage"/> for more details..</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-DefaultImmediate"> + <row xml:id="JMS-Client-0-8-System-Properties-DefaultImmediate"> <entry>qpid.default_immediate</entry> <entry>Boolean</entry> <entry>False</entry> <entry><para>If true, the message will be returned to the application unless the Broker is able to route the message to at least one queue with a - consumer attached. See <xref - linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-ImmediateMessage" - /> for more details.</para></entry> + consumer attached. See <xref linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-ImmediateMessage"/> for more details.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-FlowControlWaitFailure"> + <row xml:id="JMS-Client-0-8-System-Properties-FlowControlWaitFailure"> <entry>qpid.flow_control_wait_failure</entry> <entry>Long</entry> <entry>60000</entry> - <entry><para>Used with <xref - linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-FlowControl" - />. The amount of time (in milliseconds) to wait before timing + <entry><para>Used with <xref linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-FlowControl"/>. The amount of time (in milliseconds) to wait before timing out.</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-FlowControlWaitNotifyPeriod"> + <row xml:id="JMS-Client-0-8-System-Properties-FlowControlWaitNotifyPeriod"> <entry>qpid.flow_control_wait_notify_period</entry> <entry>Long</entry> <entry>5000</entry> - <entry><para>Used with <xref - linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-FlowControl" - />. The frequency at which the log message informing that the producer + <entry><para>Used with <xref linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-FlowControl"/>. The frequency at which the log message informing that the producer is flow controlled .</para></entry> </row> - <row id="JMS-Client-0-8-System-Properties-SyncPublish"> + <row xml:id="JMS-Client-0-8-System-Properties-SyncPublish"> <entry>sync_publish</entry> <entry>string</entry> <entry>"" (disabled)</entry> @@ -383,7 +358,7 @@ </row> </thead> <tbody> - <row id="JMS-Client-0-8-System-Properties-SyncOpTimeout"> + <row xml:id="JMS-Client-0-8-System-Properties-SyncOpTimeout"> <entry>qpid.sync_op_timeout</entry> <entry>long</entry> <entry>60000</entry> @@ -400,9 +375,7 @@ <para>Sets the TCP_NODELAY property of the underlying socket. The default was changed to true as of Qpid 0.14.</para> <para>This can also be set per connection using the Connection URL broker - option<link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-TcpNoDelay" - ><literal>tcp_nodelay</literal>.</link> options.</para> + option<link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-TcpNoDelay"><literal>tcp_nodelay</literal>.</link> options.</para> <para>For compatibility with older clients, the synonym <varname>amqj.tcp_nodelay</varname> is supported.</para> </entry> @@ -609,8 +582,7 @@ <entry>string</entry> <entry>jvm default</entry> <entry><para>Specifies the key store path.</para><para>This can also be set per - connection using the <link linkend="JMS-Client-0-8-Connection-URL" - >Connection URL</link> options.</para></entry> + connection using the <link linkend="JMS-Client-0-8-Connection-URL">Connection URL</link> options.</para></entry> </row> <row> @@ -618,8 +590,7 @@ <entry>string</entry> <entry>jvm default</entry> <entry><para>Specifies the key store password.</para><para>This can also be set - per connection using the <link linkend="JMS-Client-0-8-Connection-URL" - >Connection URL</link> options.</para></entry> + per connection using the <link linkend="JMS-Client-0-8-Connection-URL">Connection URL</link> options.</para></entry> </row> <row> @@ -627,8 +598,7 @@ <entry>string</entry> <entry>jvm default</entry> <entry><para>Specifies the trust store path.</para><para>This can also be set - per connection using the <link linkend="JMS-Client-0-8-Connection-URL" - >Connection URL</link> options.</para></entry> + per connection using the <link linkend="JMS-Client-0-8-Connection-URL">Connection URL</link> options.</para></entry> </row> <row> @@ -636,8 +606,7 @@ <entry>string</entry> <entry>jvm default</entry> <entry><para>Specifies the trust store password.</para><para>This can also be - set per connection using the <link - linkend="JMS-Client-0-8-Connection-URL">Connection URL</link> + set per connection using the <link linkend="JMS-Client-0-8-Connection-URL">Connection URL</link> options.</para></entry> </row> </tbody> Modified: qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml URL: http://svn.apache.org/viewvc/qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml?rev=1722019&r1=1722018&r2=1722019&view=diff ============================================================================== --- qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml (original) +++ qpid/java/trunk/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml Mon Dec 28 22:41:23 2015 @@ -1,10 +1,4 @@ <?xml version="1.0"?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ -<!ENTITY % entities SYSTEM "commonEntities.xml"> -%entities; -]> <!-- Licensed to the Apache Software Foundation (ASF) under one @@ -26,13 +20,13 @@ --> -<chapter id="JMS-Client-0-8-Client-Understanding"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="JMS-Client-0-8-Client-Understanding"> <title>Understanding the Qpid JMS client</title> - <section id="JMS-Client-0-8-Client-Understanding-Overview"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Overview"> <title>Overview</title> <para>The Qpid JMS client provides a JMS 1.1 compliant implementation. As such, the primary - source of documentation is the <ulink url="&oracleJmsSpec;">JMS specification</ulink> and the - <ulink url="&oracleJeeDocUrl;/javax/jms/package-summary.html">JMS javadocs</ulink>. This + source of documentation is the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJmsSpec;">JMS specification</link> and the + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;/javax/jms/package-summary.html">JMS javadocs</link>. This documentation assumes the reader has familiarity with these resources.</para> <para>The remainder of this section describes how the Qpid JMS client behaves and the effect(s) making JMS method calls will have on the Broker. </para> @@ -49,22 +43,17 @@ </mediaobject> </figure> </section> - <section id="JMS-Client-0-8-Client-Understanding-ConnectionFactory"> + <section xml:id="JMS-Client-0-8-Client-Understanding-ConnectionFactory"> <title>ConnectionFactory</title> - <para>A <ulink url="&oracleJeeDocUrl;javax/jms/ConnectionFactory.html">ConnectionFactory</ulink> - allows an application to create a <ulink url="&oracleJeeDocUrl;javax/jms/Connection.html" - >Connection</ulink>.</para> - <para>The application obtains the ConnectionFactory from an <ulink - url="&oracleJdkDocUrl;javax/naming/InitialContext.html">InitialContext</ulink>. The + <para>A <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/ConnectionFactory.html">ConnectionFactory</link> + allows an application to create a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Connection.html">Connection</link>.</para> + <para>The application obtains the ConnectionFactory from an <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJdkDocUrl;javax/naming/InitialContext.html">InitialContext</link>. The InitialContext is itself obtained from an InitialContextFactory. </para> <para>The Qpid JMS client provides a single implementation of the InitialContextFactory in class <literal>org.apache.qpid.jndi.PropertiesFileInitialContextFactory</literal>. This - implementation is backed by a <ulink url="&oracleJdkDocUrl;java/util/Properties.html" - >Properties</ulink> object which can of course be loaded from an external properties file, + implementation is backed by a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJdkDocUrl;java/util/Properties.html">Properties</link> object which can of course be loaded from an external properties file, or created programatically.</para> - <para>The examples in the previous chapter illustrated the Java code required to <link - linkend="JMS-Client-0-8-Examples-PTP">create the InitialContext</link> and an <link - linkend="JMS-Client-0-8-Examples-PTP-PropertiesFile">example properties file</link>.</para> + <para>The examples in the previous chapter illustrated the Java code required to <link linkend="JMS-Client-0-8-Examples-PTP">create the InitialContext</link> and an <link linkend="JMS-Client-0-8-Examples-PTP-PropertiesFile">example properties file</link>.</para> <para>The Qpid JMS client also provides an alternate connection factory implementation providing a connection pool. This can be useful when utilsing frameworks such as Spring. <xref linkend="JMS-Client-0-8-Appendix-PooledConnecytionFactory"/>.</para> @@ -78,7 +67,7 @@ </figure> <para>Note that the Qpid Broker does not present a JNDI interface to the application.</para> </section> - <section id="JMS-Client-0-8-Client-Understanding-Connection"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Connection"> <title>Connection</title> <para>A Connection represents an open communication channel between application and Broker.</para> @@ -90,15 +79,14 @@ expensive operation. It is recommended that the same connection is used for a series of message interactions. Patterns utilising a connection per message should not be used. </para> <para>The underlying TCP/IP connection remains open for the lifetime of the JMS connection. It - is closed when the application calls <ulink - url="&oracleJeeDocUrl;javax/jms/Connection.html#close()">Connection#close()</ulink>, but it + is closed when the application calls <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Connection.html#close()">Connection#close()</link>, but it can also be closed if the connection is closed from the Broker side (via a Management operation or broker shutdown or running into conditions which AMQP specifications treats as errors and mandates closing the connection). The JMS connection will also be closed if the underlying TCP/IP connection is broken.</para> <para>Qpid connections have failover and heartbeating capabilities. They support SSL and client-auth. These are described in the sub-sections that follow.</para> - <section id="JMS-Client-0-8-Client-Understanding-Connection-Failover"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Connection-Failover"> <title>Failover</title> <para>Qpid connections support a failover feature. This is the ability to automatically re-establish a failed connection, either to the same Broker, or the next Broker in the @@ -107,36 +95,25 @@ After a successful failover, any existing Connection, Session, MessageConsumer and MessageProducer objects held by the application remain valid.</para> <para>If a failover occurs during the scope of a JMS Transaction, any work performed by that - transaction is lost. The application is made aware of this loss by way of the <ulink - url="&oracleJeeDocUrl;javax/jms/TransactionRolledBackException.html" - >TransactionRolledBackException</ulink> from the <ulink - url="&oracleJeeDocUrl;javax/jms/Session.html#commit">Session#commit()</ulink> call. + transaction is lost. The application is made aware of this loss by way of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/TransactionRolledBackException.html">TransactionRolledBackException</link> from the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Session.html#commit">Session#commit()</link> call. Applications utilising failover must be prepared to catch this exception and respond by either repeating the work of the transaction, or by propagating a rollback to the originating system.</para> <para>If, after all retries are exhausted, failover has failed to reconnect the application, - the Connection's <ulink url="&oracleJeeDocUrl;javax/jms/ExceptionListener.html" - >ExceptionListener</ulink> will receive a JMSException with a linked exception of <ulink - url="JMS-Client-0-8-Appendix-Exceptions-AMQDisconnectedException" - >AMQDisconnectedException</ulink>. Any further use of the JMS objects (Connection, Session - etc), will results in a <ulink url="&oracleJeeDocUrl;javax/jms/IllegalStateException.html" - >IllegalStateException</ulink>.</para> + the Connection's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">ExceptionListener</link> will receive a JMSException with a linked exception of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="JMS-Client-0-8-Appendix-Exceptions-AMQDisconnectedException">AMQDisconnectedException</link>. Any further use of the JMS objects (Connection, Session + etc), will results in a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/IllegalStateException.html">IllegalStateException</link>.</para> <para>Configure failover using the Connection URL. Here's an example Connection URL utilising - failover between two brokers. Note the use of the broker options <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-Retries" - ><literal>retries</literal></link> and <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-ConnectDelay" - ><literal>connectdelay</literal></link> to control the number of connection attempts to + failover between two brokers. Note the use of the broker options <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-Retries"><literal>retries</literal></link> and <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-ConnectDelay"><literal>connectdelay</literal></link> to control the number of connection attempts to each individual broker, and the delay between each connection attempt. Also note the use of the <emphasis>failover option</emphasis> <literal>cyclecount</literal> to control the number of times the failover mechanism will traverse the brokerlist.</para> <example> <title>Connection URL configured for failover</title> - <screen><![CDATA[ + <screen> amqp://username:password@clientid/test - ?brokerlist='tcp://localhost:15672?retries='10'&connectdelay='1000';tcp://localhost:25672?retries='10'&connectdelay='1000'' - &failover='roundrobin?cyclecount='20'']]> + ?brokerlist='tcp://localhost:15672?retries='10'&connectdelay='1000';tcp://localhost:25672?retries='10'&connectdelay='1000'' + &failover='roundrobin?cyclecount='20'' </screen> </example> <para>For full details see <xref linkend="JMS-Client-0-8-Connection-URL"/></para> @@ -145,15 +122,15 @@ amqp://username:password@clientid/test is not desired it can be switched off by setting a failover option to <literal>nofailover</literal> as in the example below <example> <title>Connection URL configured with nofailover</title> - <screen><![CDATA[ + <screen> amqp://username:password@clientid/test - ?brokerlist='tcp://localhost:15672?failover='nofailover']]> + ?brokerlist='tcp://localhost:15672?failover='nofailover' </screen> </example> </para> </note> </section> - <section id="JMS-Client-0-8-Client-Understanding-Connection-Heartbeating"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Connection-Heartbeating"> <title>Heartbeating</title> <para>Qpid connections support heartbeating. When enabled, the Qpid JMS client and Broker exchange a heartbeat during periods of inactivity. This allows both peers to discover if the @@ -166,25 +143,18 @@ amqp://username:password@clientid/test health of the higher level tiers of application, for this reason, applications may implement an application level heartbeat either in addition to, or instead of the heartbeat.</para> <para>If the client ever fails to receive two consecutive heartbeats, the Connection will be - automatically closed and the Connection's <ulink - url="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">ExceptionListener</ulink> will + automatically closed and the Connection's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">ExceptionListener</link> will receive a JMSException with a linked exception of AMQDisconnectedException. Any further use - of the JMS objects (Connection, Session etc), will results in a <ulink - url="&oracleJeeDocUrl;javax/jms/IllegalStateException.html" - >IllegalStateException</ulink>.</para> - <para>To enable heartbeating either use a Connection URL including the broker option <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-Heartbeat" - ><literal>heartbeat</literal></link>, or use the system property <link - linkend="JMS-Client-0-8-System-Properties-Heartbeat" - ><literal>qpid.heartbeat</literal></link>. </para> + of the JMS objects (Connection, Session etc), will results in a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/IllegalStateException.html">IllegalStateException</link>.</para> + <para>To enable heartbeating either use a Connection URL including the broker option <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-Heartbeat"><literal>heartbeat</literal></link>, or use the system property <link linkend="JMS-Client-0-8-System-Properties-Heartbeat"><literal>qpid.heartbeat</literal></link>. </para> <example> <title>Connection URL configured for heartbeating</title> - <screen><![CDATA[ -amqp://guest:guest@clientid/?brokerlist='localhost:5672?heartbeat='5'']]> + <screen> +amqp://guest:guest@clientid/?brokerlist='localhost:5672?heartbeat='5'' </screen> </example> </section> - <section id="JMS-Client-0-8-Client-Understanding-Connection-SSL"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Connection-SSL"> <title>SSL</title> <para>The Qpid JMS client supports connections encrypted using Secure Socket Layer (SSL) and SSL-Client Authentication. SSL is configured using Connection URL. To use SSL, SSL must be @@ -196,56 +166,44 @@ amqp://guest:guest@clientid/?brokerlist= is trusted by the JVM.</para> <example> <title>Connection URL configured for SSL - CA trusted by JVM</title> - <screen><![CDATA[ -amqp://guest:guest@clientid/?brokerlist='localhost:5671'&ssl='true']]> + <screen> +amqp://guest:guest@clientid/?brokerlist='localhost:5671'&ssl='true' </screen> </example> </listitem> <listitem> <para>SSL when the Broker is secured by a certificate that is signed by a CA which is NOT trusted by the JVM (such as when a organisation is using a private CA, or self-signed - certificates are in use). For this case, we use <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-TrustStore" - ><literal>trust_store</literal></link> and <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-TrustStorePassword" - ><literal>trust_store_password</literal></link> to specify a path a truststore file + certificates are in use). For this case, we use <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-TrustStore"><literal>trust_store</literal></link> and <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-TrustStorePassword"><literal>trust_store_password</literal></link> to specify a path a truststore file (containing the certificate of the private-CA) and the truststore password.</para> <example> <title>Connection URL configured for SSL - CA not trusted by JVM</title> - <screen><![CDATA[ -amqp://guest:guest@clientid/?brokerlist='localhost:5671?trust_store='/path/to/acme_org_ca.ts'&trust_store_password='secret''&ssl='true']]> + <screen> +amqp://guest:guest@clientid/?brokerlist='localhost:5671?trust_store='/path/to/acme_org_ca.ts'&trust_store_password='secret''&ssl='true' </screen> </example> </listitem> <listitem> - <para>SSL with SSL client-auth. For this case, we use <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-KeyStore" - ><literal>key_store</literal></link> and <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-KeyStorePassword" - ><literal>key_store_password</literal></link> to specify a path a keystore file + <para>SSL with SSL client-auth. For this case, we use <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-KeyStore"><literal>key_store</literal></link> and <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-KeyStorePassword"><literal>key_store_password</literal></link> to specify a path a keystore file (containing the certificate of the client) and the keystore password.</para> <example> <title>Connection URL configured for SSL - SSL client-auth</title> - <screen><![CDATA[ -amqp://guest:guest@clientid/?brokerlist='localhost:5671?key_store='/path/to/app1_client_cert.ks'&key_store_password='secret''&ssl='true']]> + <screen> +amqp://guest:guest@clientid/?brokerlist='localhost:5671?key_store='/path/to/app1_client_cert.ks'&key_store_password='secret''&ssl='true' </screen> </example> - <para>Alternatively we can use <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-ClientCertPath" - ><literal>client_cert_path</literal></link> and <link - linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-ClientCertPrivKeyPath" - ><literal>client_cert_priv_key_ath</literal></link> to specify a path to a certificate file (in PEM or DER format) + <para>Alternatively we can use <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-ClientCertPath"><literal>client_cert_path</literal></link> and <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-ClientCertPrivKeyPath"><literal>client_cert_priv_key_ath</literal></link> to specify a path to a certificate file (in PEM or DER format) and the private key information (again in either PEM or DER format) respectively.</para> <example> <title>Connection URL configured for SSL - SSL client-auth (2)</title> - <screen><![CDATA[ -amqp://guest:guest@clientid/?brokerlist='localhost:5671?client_cert_path='/path/to/app1_client.crt'&client_cert_priv_key_path='/path/to/app1_client.key''&ssl='true']]> + <screen> +amqp://guest:guest@clientid/?brokerlist='localhost:5671?client_cert_path='/path/to/app1_client.crt'&client_cert_priv_key_path='/path/to/app1_client.key''&ssl='true' </screen> </example> </listitem> </itemizedlist> </section> - <section id="JMS-Client-0-8-Client-Understanding-Connection-MessageCompression"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Connection-MessageCompression"> <title>Message Compression</title> <para>The client has the ability to transparently compress message payloads on outgoing messages and decompress them on incoming messages. In some environments and with some @@ -253,17 +211,10 @@ amqp://guest:guest@clientid/?brokerlist= transmitted over the connection.</para> <para>In order to make use of message compression, the Broker must enable the feature too, otherwise the compression options will be ignored.</para> - <para> To enable message compression on the client use the connection url property <link - linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-CompressMessages" - ><literal>compressMessages</literal></link> (or JVM wide using the system property <link - linkend="JMS-Client-0-8-System-Properties-ConnectionCompressMessages" - ><literal>qpid.connection_compress_messages</literal></link>)</para> + <para> To enable message compression on the client use the connection url property <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-CompressMessages"><literal>compressMessages</literal></link> (or JVM wide using the system property <link linkend="JMS-Client-0-8-System-Properties-ConnectionCompressMessages"><literal>qpid.connection_compress_messages</literal></link>)</para> <para>It is also possible to control the threshold at which the client will begin to compress - message payloads. See connection url property <link - linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-MessageCompressionThresholdSize" - ><literal>messageCompressionThresholdSize</literal></link> (or JVM wide using the system - property <link linkend="JMS-Client-0-8-System-Properties-MessageCompressionThresholdSize" - ><literal>qpid.message_compression_threshold_size</literal></link>)</para> + message payloads. See connection url property <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-MessageCompressionThresholdSize"><literal>messageCompressionThresholdSize</literal></link> (or JVM wide using the system + property <link linkend="JMS-Client-0-8-System-Properties-MessageCompressionThresholdSize"><literal>qpid.message_compression_threshold_size</literal></link>)</para> <note> <para>The Broker, where necessary, takes care of compressing/decompressing messages of the fly so that clients using message compression can exchange messages with clients not @@ -271,7 +222,7 @@ amqp://guest:guest@clientid/?brokerlist= </note> </section> </section> - <section id="JMS-Client-0-8-Client-Understanding-Session"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Session"> <title>Session</title> <para>A Session object is a single-threaded context for producing and consuming messages.</para> <para>Session objects are created from the Connection. Whilst Session objects are relatively @@ -280,22 +231,18 @@ amqp://guest:guest@clientid/?brokerlist= negotiated when the connection is made. It defaults to 256.</para> <para>Qpid JMS Sessions have the ability to prefetch messages to improve consumer performance. This feature is described next.</para> - <section id="JMS-Client-0-8-Client-Understanding-Session-Prefecth"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Session-Prefecth"> <title>Prefetch</title> <para>Prefetch specifies how many messages the client will optimistically cache for delivery to a consumer. This is a useful parameter to tune that can improve the throughput of an application. The prefetch buffer is scoped per <emphasis>Session</emphasis>.</para> <para>The size of the prefetch buffer can be tuned per Connection using the connection url - option <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Maxprefetch" - ><literal>maxprefetch</literal></link> (or JVM wide using the system property <link - linkend="JMS-Client-0-8-System-Properties-Maxprefetch" - ><literal>max_prefetch</literal></link>). By default, prefetch defaults to 500.</para> + option <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Maxprefetch"><literal>maxprefetch</literal></link> (or JVM wide using the system property <link linkend="JMS-Client-0-8-System-Properties-Maxprefetch"><literal>max_prefetch</literal></link>). By default, prefetch defaults to 500.</para> <para>There are situations when you may wish to consider reducing the size of prefetch:</para> <para> <orderedlist> <listitem> - <para>When using a <ulink url="http://www.eaipatterns.com/CompetingConsumers.html" - >Competing Consumers</ulink> pattern, prefetch can give the appearance of unequal + <para>When using a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.eaipatterns.com/CompetingConsumers.html">Competing Consumers</link> pattern, prefetch can give the appearance of unequal division of work. This will be apparent on startup when the queue has messages. The first consumer started will cache prefetch size number of messages, possibly leaving the other consumers with no initial work.</para> @@ -321,9 +268,7 @@ amqp://guest:guest@clientid/?brokerlist= patterns to result in consumer starvation and an application level deadlock. For example, if prefetch is 100, and 100 hundred messages arrive suitable for consumer A, those messages will be prefetched by the session, entirely filling the prefetch buffer. Now if the - application performs a blocking <ulink - url="&oracleJeeDocUrl;javax/jms/MessageConsumer.html#receive()" - >MessageConsumer#receive()</ulink> for Consumer B on the same Session, the application + application performs a blocking <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/MessageConsumer.html#receive()">MessageConsumer#receive()</link> for Consumer B on the same Session, the application will hang indefinitely as even if messages suitable for B arrive at the Broker. Those messages can never be sent to the Session as no space is available in prefetch. </para> <note> @@ -343,7 +288,7 @@ amqp://guest:guest@clientid/?brokerlist= </note> <para> Settings maxprefetch to 0 ( either globally via JVM system property - <link linkend="JMS-Client-0-8-System-Properties-Maxprefetch" ><literal>max_prefetch</literal></link> + <link linkend="JMS-Client-0-8-System-Properties-Maxprefetch"><literal>max_prefetch</literal></link> or on a connection level as a connection option <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Maxprefetch"><literal>maxprefetch</literal></link> ) switches off the pre-fetching functionality. With maxprefetch=0 messages are fetched one by one without caching on the client. @@ -365,41 +310,35 @@ amqp://guest:guest@clientid/?brokerlist= does not exhibit the same problem. </para> </note> </section> - <section id="JMS-Client-0-8-Client-Understanding-Session-TemporaryQueues"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Session-TemporaryQueues"> <title>TemporaryQueues</title> <para>Qpid implements JMS temporary queues as AMQP auto-delete queues. The life cycle of these queues deviates from the JMS specification.</para> <para>AMQP auto-delete queues are deleted either when the <emphasis>last</emphasis> Consumer closes, or the Connection is closed. If no Consumer is ever attached to the queue, the queue will remain until the Connection is closed.</para> - <para>This deviation has no practical impact on the implementation of the <ulink - url="http://www.eaipatterns.com/RequestReply.html">request/reply messaging pattern</ulink> + <para>This deviation has no practical impact on the implementation of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.eaipatterns.com/RequestReply.html">request/reply messaging pattern</link> utilising a per-request temporary reply queue. The reply to queue is deleted as the application closes the Consumer awaiting the response. </para> <para>Temporary queues are exposed to Management in the same way as normal queues. Temporary queue names take the form string <literal>TempQueue</literal> followed by a random UUID.</para> - <para>Note that <ulink url="&oracleJeeDocUrl;javax/jms/TemporaryQueue.html#delete()" - >TemporaryQueue#delete()</ulink> merely marks the queue as deleted on within the JMS + <para>Note that <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/TemporaryQueue.html#delete()">TemporaryQueue#delete()</link> merely marks the queue as deleted on within the JMS client (and prevents further use of the queue from the application), however, the Queue will remain on the Broker until the Consumer (or Connection) is closed.</para> </section> - <section id="JMS-Client-0-8-Client-Understanding-Session-CreateQueue"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Session-CreateQueue"> <title>CreateQueue</title> - <para>In the Qpid JMS client, <ulink - url="&oracleJeeDocUrl;javax/jms/Session.html#createQueue(java.lang.String)" - >Session#createQueue()</ulink> accepts either a queue name, or a Binding URL. If only name + <para>In the Qpid JMS client, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Session.html#createQueue(java.lang.String)">Session#createQueue()</link> accepts either a queue name, or a Binding URL. If only name is specified the destination will be resolved into binding URL: direct://amq.direct//<queue name>?routingkey='<queue name>'&durable='true'. </para> <para>Calling Session#createQueue() has no effect on the Broker.</para> <para>Reiterating the advice from the JMS javadoc, it is suggested that this method is not generally used. Instead, application should lookup Destinations declared within JNDI.</para> </section> - <section id="JMS-Client-0-8-Client-Understanding-Session-CreateTopic"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Session-CreateTopic"> <title>CreateTopic</title> - <para>In the Qpid JMS client, <ulink - url="&oracleJeeDocUrl;javax/jms/Session.html#createTopic(java.lang.String)" - >Session#createTopic()</ulink> accepts either a topic name, or a Binding URL. If only name + <para>In the Qpid JMS client, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Session.html#createTopic(java.lang.String)">Session#createTopic()</link> accepts either a topic name, or a Binding URL. If only name is specified the destination will be resolved into binding URL: topic://amq.topic//<topic name>?routingkey='<topic name>'.</para> <para>Calling Session#createTopic() has no effect on the Broker.</para> @@ -407,122 +346,98 @@ amqp://guest:guest@clientid/?brokerlist= generally used. Instead, application should lookup Destinations declared within JNDI.</para> </section> </section> - <section id="JMS-Client-0-8-Client-Understanding-MessageProducer"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageProducer"> <title>MessageProducer</title> <para>A MessageProducer sends a message an <emphasis>Exchange</emphasis>. It is the Exchange (within the Broker) that routes the message to zero or more queue(s). Routing is performed according to rules expressed as <emphasis>bindings</emphasis> between the exchange and queues and a <emphasis>routing key</emphasis> included with each message.</para> <para>To understand how this mechanism is used to deliver messages to queues and topics, see - <ulink url="&qpidJavaBrokerBook;Java-Broker-Concepts-Exchanges.html">Exchanges</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&qpidJavaBrokerBook;Java-Broker-Concepts-Exchanges.html">Exchanges</link> within the Java Broker book.</para> <para>It is important to understand that when synchronous publish is not exlicitly enabled, - <ulink url="&oracleJeeDocUrl;javax/jms/MessageProducer.html#send(javax.jms.Message)" - >MessageProducer#send()</ulink> is <emphasis>asynchronous</emphasis> in nature. When #send() + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/MessageProducer.html#send(javax.jms.Message)">MessageProducer#send()</link> is <emphasis>asynchronous</emphasis> in nature. When #send() returns to the application, the application cannot be certain if the Broker has received the message. The Qpid JMS client may not have yet started to send the message, the message could residing in a TCP/IP buffer, or the messages could be in some intermediate buffer within the Broker. If the application requires certainty the message has been received by the Broker, a - <ulink url="&oracleJeeDocUrl;javax/jms/Session.html#SESSION_TRANSACTED">transactional - session</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Session.html#SESSION_TRANSACTED">transactional + session</link> <emphasis>must</emphasis> be used, or synchronous publishing must be enabled using either the <link linkend="JMS-Client-0-8-System-Properties-SyncPublish">system property</link> or the <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-SyncPublish">connection URL option</link>.</para> <para>Qpid JMS MessageProducers have a number of features above that required by JMS. These are described in the sub-sections that follow.</para> - <section id="JMS-Client-0-8-Client-Understanding-MessageProducer-MandatoryMessage"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageProducer-MandatoryMessage"> <title>Mandatory Messages</title> <para>With this feature, publishing a message with a routing key for which no binding exists on the exchange will result in the message being returned to the publisher's connection.</para> <para>The Message is returned to the application in an asynchronous fashion via the - Connection's <ulink url="&oracleJeeDocUrl;javax/jms/ExceptionListener.html" - >ExceptionListener</ulink>. When a message is returned, it will be invoked with a - JMSException whose linked exception is an <ulink - url="JMS-Client-0-8-Appendix-Exceptions-AMQNoRouteException">AMQNoRouteException</ulink>. + Connection's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">ExceptionListener</link>. When a message is returned, it will be invoked with a + JMSException whose linked exception is an <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="JMS-Client-0-8-Appendix-Exceptions-AMQNoRouteException">AMQNoRouteException</link>. The returned message is available to the application by calling AMQNoRouteException#getUndeliveredMessage(). The ExceptionListener will be invoked exactly once for each returned message.</para> <para>If synchronous publishing has been enabled, and a mandatory message is returned, the - <ulink url="&oracleJeeDocUrl;javax/jms/MessageProducer.html#send(javax.jms.Message)" - >MessageProducer#send()</ulink> method will throw a JMSException. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/MessageProducer.html#send(javax.jms.Message)">MessageProducer#send()</link> method will throw a JMSException. </para> <para>The mandatory message feature is turned <emphasis>on</emphasis> by default for Queue destinations and <emphasis>off</emphasis> for Topic destinations. This can be overridden - using system properties <link linkend="JMS-Client-0-8-System-Properties-DefaultMandatory" - ><literal>qpid.default_mandatory</literal></link> and <link - linkend="JMS-Client-0-8-System-Properties-DefaultMandatoryTopic" - ><literal>qpid.default_mandatory_topic</literal></link> for Queues and Topics + using system properties <link linkend="JMS-Client-0-8-System-Properties-DefaultMandatory"><literal>qpid.default_mandatory</literal></link> and <link linkend="JMS-Client-0-8-System-Properties-DefaultMandatoryTopic"><literal>qpid.default_mandatory_topic</literal></link> for Queues and Topics respectively.</para> <note> - <para>If this the mandatory flag is not set, the Broker will treat <ulink - url="&qpidJavaBrokerBook;Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage" - >the messages as unroutable</ulink>.</para> + <para>If this the mandatory flag is not set, the Broker will treat <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&qpidJavaBrokerBook;Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage">the messages as unroutable</link>.</para> </note> </section> - <section id="JMS-Client-0-8-Client-Understanding-MessageProducer-CloseWhenNoRoute"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageProducer-CloseWhenNoRoute"> <title>Close When No Route</title> <para>With this feature, if a mandatory message is published with a routing key for which no binding exists on the exchange the Broker will close the connection. This client feature requires support for the corresponding feature by the Broker.</para> - <para>To enable or disable from the client, use the Connection URL option <link - linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-CloseWhenNoRoute" - ><literal>closeWhenNoRoute</literal></link>.</para> - <para>See <ulink url="&qpidJavaBrokerBook;Java-Broker-Runtime-Close-Connection-When-No-Route.html"> - Closing client connections on unroutable mandatory messages</ulink> within the Java Broker + <para>To enable or disable from the client, use the Connection URL option <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-CloseWhenNoRoute"><literal>closeWhenNoRoute</literal></link>.</para> + <para>See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&qpidJavaBrokerBook;Java-Broker-Runtime-Close-Connection-When-No-Route.html"> + Closing client connections on unroutable mandatory messages</link> within the Java Broker book for full details of the functioning of this feature.</para> </section> - <section id="JMS-Client-0-8-Client-Understanding-MessageProducer-ImmediateMessage"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageProducer-ImmediateMessage"> <title>Immediate Messages</title> - <para>This feature is defined in <ulink url="&amqpSrc;">AMQP specifications</ulink>.</para> + <para>This feature is defined in <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&amqpSrc;">AMQP specifications</link>.</para> <para>When this feature is enabled, when publishing a message the Broker ensures that a Consumer is attached to queue. If there is no Consumer attached to the queue, the message is returned to the publisher's connection. The Message is returned to the application in an - asynchronous fashion using the Connection's <ulink - url="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">ExceptionListener</ulink>.</para> + asynchronous fashion using the Connection's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/ExceptionListener.html">ExceptionListener</link>.</para> <para>The ExceptionListener will be invoked with a JMSException whose linked exception is an - <ulink url="JMS-Client-0-8-Appendix-Exceptions-AMQNoConsumersException" - >AMQNoConsumersException</ulink>. The returned message is available to the application by + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="JMS-Client-0-8-Appendix-Exceptions-AMQNoConsumersException">AMQNoConsumersException</link>. The returned message is available to the application by calling AMQNoConsumersException#getUndeliveredMessage(). The ExceptionListener will be invoked exactly once for each returned message.</para> <para>If synchronous publishing has been enabled, and an immediate message is returned, the - <ulink url="&oracleJeeDocUrl;javax/jms/MessageProducer.html#send(javax.jms.Message)" - >MessageProducer#send()</ulink> method will throw a JMSException. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/MessageProducer.html#send(javax.jms.Message)">MessageProducer#send()</link> method will throw a JMSException. </para> <para>The immediate message feature is turned <emphasis>off</emphasis> by default. It can be - enabled with system property <link - linkend="JMS-Client-0-8-System-Properties-DefaultImmediate" - ><literal>qpid.default_immediate</literal></link>.</para> + enabled with system property <link linkend="JMS-Client-0-8-System-Properties-DefaultImmediate"><literal>qpid.default_immediate</literal></link>.</para> </section> - <section id="JMS-Client-0-8-Client-Understanding-MessageProducer-FlowControl"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageProducer-FlowControl"> <title>Flow Control</title> <para>With this feature, if a message is sent to a queue that is overflow, the producer's session is blocked until the queue becomes underfull, or a timeout expires. This client feature requires support for the corresponding feature by the Broker.</para> - <para>To control the timeout use System property <link - linkend="JMS-Client-0-8-System-Properties-FlowControlWaitFailure" - ><literal>qpid.flow_control_wait_failure</literal></link>. To control the frequency with - which warnings are logged whilst a Session is blocked, use System property <link - linkend="JMS-Client-0-8-System-Properties-FlowControlWaitNotifyPeriod" - ><literal>qpid.flow_control_wait_notify_period</literal></link></para> - <para>See <ulink - url="&qpidJavaBrokerBook;Java-Broker-Runtime-Disk-Space-Management.html#Qpid-Producer-Flow-Control" - > Producer Flow Control</ulink> within the Java Broker book for full details of the + <para>To control the timeout use System property <link linkend="JMS-Client-0-8-System-Properties-FlowControlWaitFailure"><literal>qpid.flow_control_wait_failure</literal></link>. To control the frequency with + which warnings are logged whilst a Session is blocked, use System property <link linkend="JMS-Client-0-8-System-Properties-FlowControlWaitNotifyPeriod"><literal>qpid.flow_control_wait_notify_period</literal></link></para> + <para>See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&qpidJavaBrokerBook;Java-Broker-Runtime-Disk-Space-Management.html#Qpid-Producer-Flow-Control"> Producer Flow Control</link> within the Java Broker book for full details of the functioning of this feature.</para> </section> </section> - <section id="JMS-Client-0-8-Client-Understanding-MessageConsumer"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageConsumer"> <title>MessageConsumer</title> <para>A MessageConsumer receives messages from a Queue or Topic.</para> <para>MessageConsumer objects are created from the Session.</para> <para>Qpid JMS MessageConsumers have a number of features above that required by JMS. These are described in the sub-sections that follow.</para> - <section id="JMS-Client-0-8-Client-Understanding-MessageConsumer-ConsumerSideEffect"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageConsumer-ConsumerSideEffect"> <title>Consumers have Exchange/Queue Declaration and Binding Side Effect</title> - <para>By default, calling <ulink - url="&oracleJeeDocUrl;javax/jms/Session.html#createConsumer(javax.jms.Destination)" - >Session#createConsumer()</ulink> will cause:</para> + <para>By default, calling <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Session.html#createConsumer(javax.jms.Destination)">Session#createConsumer()</link> will cause:</para> <orderedlist> <listitem> <para>If the exchange does not exist on the Broker, it will be created. The exchange is @@ -539,14 +454,9 @@ amqp://guest:guest@clientid/?brokerlist= </listitem> </orderedlist> <para>The exchange declare, queue declare and bind side effects can be suppressed using system - properties <link linkend="JMS-Client-0-8-System-Properties-DeclareExchanges" - ><literal>qpid.declare_exchanges</literal></link>, <link - linkend="JMS-Client-0-8-System-Properties-DeclareQueues" - ><literal>qpid.declare_queues</literal></link> and <link - linkend="JMS-Client-0-8-System-Properties-BindQueues" - ><literal>qpid.bind_queues</literal></link>.</para> + properties <link linkend="JMS-Client-0-8-System-Properties-DeclareExchanges"><literal>qpid.declare_exchanges</literal></link>, <link linkend="JMS-Client-0-8-System-Properties-DeclareQueues"><literal>qpid.declare_queues</literal></link> and <link linkend="JMS-Client-0-8-System-Properties-BindQueues"><literal>qpid.bind_queues</literal></link>.</para> </section> - <section id="JMS-Client-0-8-Client-Understanding-MessageConsumer-TopicSubscriptions"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageConsumer-TopicSubscriptions"> <title>Topic Subscriptions</title> <para>The Qpid JMS client implements each subscription to a Topic as separate queue on the Broker. From the perspective of the JMS application this implementational detail is @@ -557,12 +467,8 @@ amqp://guest:guest@clientid/?brokerlist= <programlisting> clientid: + subscriptionId </programlisting> - <para>where <literal>subscriptionId</literal> is that passed to the <ulink - url="&oracleJeeDocUrl;javax/jms/Session.html#createDurableSubscriber(javax.jms.Topic,%20java.lang.String)" - >Session#createDurableSubscriber(javax.jms.Topic,java.lang.String)</ulink></para> - <para>Calling <ulink - url="&oracleJeeDocUrl;javax/jms/Session.html#unsubscribe(java.lang.String)" - >Session#unsubscribe(java.lang.String)</ulink> deletes the underlying queue.</para> + <para>where <literal>subscriptionId</literal> is that passed to the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Session.html#createDurableSubscriber(javax.jms.Topic,%20java.lang.String)">Session#createDurableSubscriber(javax.jms.Topic,java.lang.String)</link></para> + <para>Calling <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&oracleJeeDocUrl;javax/jms/Session.html#unsubscribe(java.lang.String)">Session#unsubscribe(java.lang.String)</link> deletes the underlying queue.</para> <para>Non-durable topic subscriptions use a <emphasis>non-durable</emphasis>, <emphasis>exclusive</emphasis> and <emphasis>auto-delete</emphasis> queue named as follows:</para> @@ -575,21 +481,17 @@ amqp://guest:guest@clientid/?brokerlist= <para>Closing the consumer (or closing the connection) will delete the underlying queue.</para> </section> - <section id="JMS-Client-0-8-Client-Understanding-MessageConsumer-MaximumDeliveryCount"> + <section xml:id="JMS-Client-0-8-Client-Understanding-MessageConsumer-MaximumDeliveryCount"> <title>Maximum Delivery Count</title> <para>With this feature, the Broker keeps track of a number of times a message has been delivered to a consumer. If the count ever exceeds a threshold value, the Broker moves the message to a dead letter queue (DLQ). This is used to prevent poison messages preventing a system's operation. This client feature requires support for the corresponding feature by the Broker.</para> - <para>When using this feature, the application must either set system property <link - linkend="JMS-Client-0-8-System-Properties-RejectBehaviour">qpid.reject.behaviour</link> or - the Binding URL option <link linkend="JMS-Client-0-8-Binding-URL-Options-RejectBehaviour" - ><literal>rejectbehaviour</literal></link> to the value + <para>When using this feature, the application must either set system property <link linkend="JMS-Client-0-8-System-Properties-RejectBehaviour">qpid.reject.behaviour</link> or + the Binding URL option <link linkend="JMS-Client-0-8-Binding-URL-Options-RejectBehaviour"><literal>rejectbehaviour</literal></link> to the value <literal>server</literal>.</para> - <para>See <ulink - url="&qpidJavaBrokerBook;Java-Broker-Runtime-Handling-Undeliverable-Messages.html#Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count" - > Handling Undeliverable Messages</ulink> within the Java Broker book for full details of + <para>See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&qpidJavaBrokerBook;Java-Broker-Runtime-Handling-Undeliverable-Messages.html#Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"> Handling Undeliverable Messages</link> within the Java Broker book for full details of the functioning of this feature.</para> <note> <para>The optional JMS message header <literal>JMSXDeliveryCount</literal> is @@ -597,12 +499,11 @@ amqp://guest:guest@clientid/?brokerlist= </note> </section> </section> - <section id="JMS-Client-0-8-Client-Understanding-Destinations"> + <section xml:id="JMS-Client-0-8-Client-Understanding-Destinations"> <title>Destinations</title> <para>A Destination is either a Queue or Topic. In the Qpid JMS client a Destination encapsulates a Binding URL. In simple terms, the Binding URL comprises of an exchange, queue - and a routing key. Binding URLs are described fully by <xref - linkend="JMS-Client-0-8-Binding-URL"/>. </para> + and a routing key. Binding URLs are described fully by <xref linkend="JMS-Client-0-8-Binding-URL"/>. </para> <para>In many cases, applications do not need to deal directly with Binding URLs, instead they can refer to JMS administered objects declared in the JNDI properties file with the <literal>queue.</literal> and <literal>topic.</literal> prefix to create Queues and Topics --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
