You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2013/12/31 12:42:40 UTC

svn commit: r1554404 - /qpid/trunk/qpid/doc/book/src/jms-client-0-8/

Author: kwall
Date: Tue Dec 31 11:42:40 2013
New Revision: 1554404

URL: http://svn.apache.org/r1554404
Log:
QPID-5374: [Documentation] Added JMS pub/sub example.

Added:
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Examples.xml
Removed:
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Hello-World-Example.xml
Modified:
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Appendix-Maven.xml
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Book.xml
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Document-Scope-And-Intended-Audience.xml
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Getting-And-Dependencies.xml
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml
    qpid/trunk/qpid/doc/book/src/jms-client-0-8/commonEntities.xml

Modified: qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Appendix-Maven.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Appendix-Maven.xml?rev=1554404&r1=1554403&r2=1554404&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Appendix-Maven.xml (original)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Appendix-Maven.xml Tue Dec 31 11:42:40 2013
@@ -29,8 +29,8 @@
 <appendix id="JMS-Client-0-8-Appendix-Maven">
   <title>Minimal Maven POM</title>
   <para> The following is a minimal Maven POM required to use the Qpid Client. It is suitable for
-    use with the <link linkend="JMS-Client-0-8-Hello-World-Example">examples</link> included in this
-    book</para>
+    use with the <link linkend="JMS-Client-0-8-Examples">examples</link> included in this
+    book.</para>
 
   <example>
     <title>Minimal Maven POM </title>

Modified: qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Book.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Book.xml?rev=1554404&r1=1554403&r2=1554404&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Book.xml (original)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Book.xml Tue Dec 31 11:42:40 2013
@@ -26,7 +26,7 @@
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="JMS-Client-Introduction.xml"/>
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="JMS-Client-Document-Scope-And-Intended-Audience.xml"/>
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="JMS-Client-Getting-And-Dependencies.xml"/>
-    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="JMS-Client-Hello-World-Example.xml"/>
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="JMS-Client-Examples.xml"/>
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="JMS-Client-Understanding.xml"/>
     <!-- TODO:
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="JMS-Client-JMS-Extensions.xml"/>

Modified: qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Document-Scope-And-Intended-Audience.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Document-Scope-And-Intended-Audience.xml?rev=1554404&r1=1554403&r2=1554404&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Document-Scope-And-Intended-Audience.xml (original)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Document-Scope-And-Intended-Audience.xml Tue Dec 31 11:42:40 2013
@@ -40,7 +40,7 @@
   <para>
     The document covers some specific implementation details of JMS connections, sessions, consumers and producers
     in <xref linkend="JMS-Client-0-8-Client-Understanding"/>. It also demonstrates how to write a simple
-    <emphasis>Hello World</emphasis> application using Qpid JMS Client in <xref linkend="JMS-Client-0-8-Hello-World-Example"/>. 
+    point to point and simple publish/subscribe application using Qpid JMS Client in <xref linkend="JMS-Client-0-8-Examples"/>. 
   </para>
 
   <para>The Qpid JMS Client supports various configuration options which can be set via JVM system

Added: qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Examples.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Examples.xml?rev=1554404&view=auto
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Examples.xml (added)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Examples.xml Tue Dec 31 11:42:40 2013
@@ -0,0 +1,297 @@
+<?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
+ 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="JMS-Client-0-8-Examples">
+	<title>Examples</title>
+
+	<para>The following programs shows how to send and receive messages using the Qpid JMS client.
+		The first program illustrates a <emphasis>point to point</emphasis> example, the second, a
+		pubish/subscribe example. </para>
+	<para>Both examples show the use JNDI to obtain connection factory and destination objects which
+		the application needs. In this way the configuration is kept separate from the application
+		code itself.</para>
+	<para>The example code will be straightforward for anyone familiar with Java JMS. Readers in
+		need of an introduction are directed towards <ulink url="&oracleJmsTutorial;">Oracle's JMS
+			tutorial</ulink>.</para>
+	<section id="JMS-Client-0-8-Examples-PTP">
+		<title>Point to point example</title>
+		<para>In this example, we illustrate point to point messaging. We create a JNDI context
+			using a properties file, use the context to lookup a connection factory, create and
+			start a connection, create a session, and lookup a destination (a queue) from the JNDI
+			context. Then we create a producer and a consumer, send a message with the producer and
+			receive it with the consumer.</para>
+
+		<example id="JMS-Client-0-8-Examples-PTP-Java">
+			<title>JMS Example - Point to Point Messaging</title>
+			<programlisting lang="java">
+import javax.jms.*;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+public class Hello {
+
+    public Hello() {
+    }
+
+    public static void main(String[] args) throws Exception {
+        Hello hello = new Hello();
+        hello.runTest();
+    }
+
+    private void runTest() throws Exception {
+      Properties properties = new Properties();
+      properties.load(this.getClass().getResourceAsStream("helloworld.properties"));  <co id="ptp-java-properties" linkends="callout-ptp-properties"/>
+      Context context = new InitialContext(properties);   <co id="ptp-java-context" linkends="callout-ptp-context"/>
+
+      ConnectionFactory connectionFactory
+          = (ConnectionFactory) context.lookup("qpidConnectionFactory"); <co id="ptp-java-connection-factory" linkends="callout-ptp-connection-factory"/>
+      Connection connection = connectionFactory.createConnection();  <co id="ptp-java-connection" linkends="callout-ptp-connection"/>
+      connection.start();  <co id="ptp-java-start" linkends="callout-ptp-start"/>
+
+      Session session = connection.createSession(true, Session.SESSION_TRANSACTED);<co id="ptp-java-session" linkends="callout-ptp-session"/>
+      Queue queue = (Queue) context.lookup("myqueue");  <co id="ptp-java-destination" linkends="callout-ptp-destination"/>
+
+      MessageConsumer messageConsumer = session.createConsumer(queue);  <co id="ptp-java-consumer" linkends="callout-ptp-consumer"/>
+      MessageProducer messageProducer = session.createProducer(queue);  <co id="ptp-java-producer" linkends="callout-ptp-producer"/>
+
+      TextMessage message = session.createTextMessage("Hello world!");        <co id="ptp-java-send" linkends="callout-ptp-send"/>
+      messageProducer.send(message);
+      session.commit();
+
+      message = (TextMessage)messageConsumer.receive();    <co id="ptp-java-receive" linkends="callout-ptp-receive"/>
+      session.commit();
+      System.out.println(message.getText());
+
+      connection.close();  <co id="ptp-java-close" linkends="callout-ptp-close"/>
+      context.close();   <co id="ptp-java-jndi-close" linkends="callout-ptp-jndi-close"/>
+    }
+}
+	</programlisting>
+		</example>
+
+		<calloutlist>
+			<callout id="callout-ptp-properties" arearefs="ptp-java-properties">
+				<para>Loads the JNDI properties file, which specifies the connection factory, queues
+					and topics. See <xref linkend="JMS-Client-0-8-JNDI-Properties-Format"/> for
+					details.</para>
+			</callout>
+			<callout id="callout-ptp-context" arearefs="ptp-java-context">
+				<para>Creates the JNDI initial context.</para>
+			</callout>
+			<callout id="callout-ptp-connection-factory" arearefs="ptp-java-connection-factory">
+				<para>Looks up a JMS connection factory for Qpid.</para>
+			</callout>
+			<callout id="callout-ptp-connection" arearefs="ptp-java-connection">
+				<para>Creates a JMS connection. Creating the JMS connections establishes the
+					connection to the Broker.</para>
+			</callout>
+			<callout id="callout-ptp-start" arearefs="ptp-java-start">
+				<para>Starts the connection, required for the consumption of messages.</para>
+			</callout>
+			<callout id="callout-ptp-session" arearefs="ptp-java-session">
+				<para>Creates a transactional session.</para>
+			</callout>
+			<callout id="callout-ptp-destination" arearefs="ptp-java-destination">
+				<para>Looks up a destination for the queue with JNDI name myqueue.</para>
+			</callout>
+			<callout id="callout-ptp-consumer" arearefs="ptp-java-consumer">
+				<para>Creates a consumer that reads messages from the queue<footnote>
+						<para>Creating consumer will automatically create the queue on the Broker
+							and bind it to an exchange. Specifically, in this case as the
+								<literal>queue.</literal> form is used in the JNDI properties the
+							effect will be to create a queue called <literal>queue1</literal> on the
+							Broker, and create a binding between the <literal>amq.direct</literal>
+							exchange and this queue using the queue's name. This process is
+							described in detail in <xref
+								linkend="JMS-Client-0-8-Client-Understanding-MessageConsumer-ConsumerSideEffect"
+							/></para>
+					</footnote>.</para>
+			</callout>
+			<callout id="callout-ptp-producer" arearefs="ptp-java-producer">
+				<para>Creates a producer that sends messages to the queue.</para>
+			</callout>
+			<callout id="callout-ptp-send" arearefs="ptp-java-send">
+				<para>Creates a new TextMessages, publishes the messages and commits the
+					session.</para>
+			</callout>
+			<callout id="callout-ptp-receive" arearefs="ptp-java-receive">
+				<para>Reads the next available message (awaiting indefinitely if necessary) and
+					commits the session.</para>
+			</callout>
+			<callout id="callout-ptp-close" arearefs="ptp-java-close">
+				<para>Closes the Connection. All sessions owned by the Connection along with their
+					MessageConsumers and MessageProducers are automatically closed. The connection
+					to the Broker is closed as this point.</para>
+			</callout>
+			<callout id="callout-ptp-jndi-close" arearefs="ptp-java-jndi-close">
+				<para>Closes the JNDI context.</para>
+			</callout>
+		</calloutlist>
+
+		<para>The contents of the <literal>helloworld.properties</literal> file are shown
+			below.</para>
+
+		<example id="JMS-Client-0-8-Examples-PTP-PropertiesFile">
+			<title>JMS Example - Point to Point Messaging - JNDI Properties</title>
+			<programlisting>
+java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+connectionfactory.qpidConnectionFactory = amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672' <co id="ptp-properties-connectionfactory" linkends="callout-ptp-properties-connectionfactory"/>
+queue.myqueue = queue1 <co id="ptp-properties-destination" linkends="callout-ptp-properties-destination"/>
+	</programlisting>
+		</example>
+
+		<calloutlist>
+			<callout id="callout-ptp-properties-connectionfactory"
+				arearefs="ptp-properties-connectionfactory">
+				<para>Defines a connection factory from which Connections can be created. The syntax
+					of a ConnectionURL is given in <xref
+						linkend="JMS-Client-0-8-JNDI-Properties-Format"/>.</para>
+			</callout>
+			<callout id="callout-ptp-properties-destination" arearefs="ptp-properties-destination">
+				<para>Defines a queue for which MessageProducers and/or MessageConsumers send and
+					receive messages. The format of these entries is described in <xref
+						linkend="JMS-Client-0-8-JNDI-Properties-Format-Queue"/>.</para>
+			</callout>
+		</calloutlist>
+	</section>
+	<section id="JMS-Client-0-8-Examples-PubSub">
+		<title>Publish/subscribe example</title>
+		<para>In this second example, we illustrate publish/subscribe messaging. Again, we create a
+			JNDI context using a properties file, use the context to lookup a connection factory,
+			create and start a connection, create a session, and lookup a destination (a topic) from
+			the JNDI context. Then we create a producer and two durable subscribers , send a message
+			with the producer. Both subscribers receive the same message.</para>
+
+		<example id="JMS-Client-0-8-Examples-PubSub-Java">
+			<title>JMS Example - Publish/subscribe Messaging</title>
+			<programlisting lang="java">
+import javax.jms.*;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import java.util.Properties;
+
+public class StocksExample {
+
+    public StocksExample() {
+    }
+
+    public static void main(String[] args) throws Exception {
+      StocksExample stocks = new StocksExample();
+      stocks.runTest();
+    }
+
+    private void runTest() throws Exception {
+      Properties properties = new Properties();
+      properties.load(this.getClass().getResourceAsStream("stocks.properties"));
+      Context context = new InitialContext(properties);
+
+      ConnectionFactory connectionFactory
+          = (ConnectionFactory) context.lookup("qpidConnectionFactory");
+      Connection connection = connectionFactory.createConnection();
+      connection.start();
+
+      Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+      Topic priceTopic = (Topic) context.lookup("myprices"); <co id="pubsub-java-destination" linkends="callout-pubsub-destination"/>
+
+      MessageConsumer subscriber1 = session.createDurableSubscriber(priceTopic, "sub1");  <co id="pubsub-java-subscribers" linkends="callout-pubsub-subscribers"/>
+      MessageConsumer subscriber2 = session.createDurableSubscriber(priceTopic, "sub2" /*, "price > 150", false*/ );
+      MessageProducer messageProducer = session.createProducer(priceTopic);
+
+      Message message = session.createMessage();
+      message.setStringProperty("instrument", "IBM");
+      message.setStringProperty("price", "100");
+      messageProducer.send(message);
+      session.commit();
+
+      message = subscriber1.receive(1000);
+      session.commit();
+      System.out.println("Subscriber 1 received : " + message);
+
+      message = subscriber2.receive(1000);
+      session.commit();
+      System.out.println("Subscriber 2 received : " + message);
+
+      session.unsubscribe("sub1"); <co id="pubsub-java-unsubscribe" linkends="callout-pubsub-unsubscribe"/>
+      session.unsubscribe("sub2");
+      connection.close();
+      context.close();
+    }
+}
+	</programlisting>
+		</example>
+
+		<calloutlist>
+			<callout id="callout-pubsub-destination" arearefs="pubsub-java-destination">
+				<para>Looks up a destination for the topic with JNDI name myprices.</para>
+			</callout>
+			<callout id="callout-pubsub-subscribers" arearefs="pubsub-java-subscribers">
+				<para>Creates two durable subscribers, <literal>sub1</literal> and
+						<literal>sub2</literal>. Durable subscriptions retain messages for the
+					client even when the client is disconnected, until the subscription is
+					unsubscribed. Subscription 2 has a (commented out) message selector argument so
+					you can conveniently experiement with the effect of those. <footnote>
+						<para>Each durable subscription is implemented as a queue on the Broker. See
+								<xref
+								linkend="JMS-Client-0-8-Client-Understanding-MessageConsumer-TopicSubscriptions"
+							/> for details.</para>
+					</footnote></para>
+			</callout>
+			<callout id="callout-pubsub-unsubscribe" arearefs="pubsub-java-unsubscribe">
+				<para>Unsubscribes the two durable subscribers, permanently removing the knowledge
+					of the subscriptions from the system. An application would normally
+						<emphasis>NOT</emphasis> do this. The typical use-case for durable
+					subsciption is one where the subscription exists over an extended period of
+					time.</para>
+			</callout>
+		</calloutlist>
+
+		<para>The contents of the <literal>stocks.properties</literal> file are shown below.</para>
+
+		<example id="JMS-Client-0-8-Examples-PubSub-PropertiesFile">
+			<title>JMS Example - Publish/subscribe Messaging - JNDI Properties</title>
+			<programlisting>
+java.naming.factory.initial = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+connectionfactory.qpidConnectionFactory = amqp://guest:guest@clientid/?brokerlist='tcp://localhost:5672'
+topic.myprices = prices <co id="pubsub-properties-destination" linkends="callout-pubsub-properties-destination"/>
+	</programlisting>
+		</example>
+
+		<calloutlist>
+			<callout id="callout-pubsub-properties-destination"
+				arearefs="pubsub-properties-destination">
+				<para>Defines a topic for which MessageProducers and/or MessageConsumers send and
+					receive messages. The format of this entry is described in <xref
+						linkend="JMS-Client-0-8-JNDI-Properties-Format-Topic"/>.</para>
+			</callout>
+		</calloutlist>
+	</section>
+
+
+</chapter>

Modified: qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Getting-And-Dependencies.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Getting-And-Dependencies.xml?rev=1554404&r1=1554403&r2=1554404&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Getting-And-Dependencies.xml (original)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Getting-And-Dependencies.xml Tue Dec 31 11:42:40 2013
@@ -28,7 +28,7 @@
 
 <chapter id="JMS-Client-0-8-JMS-Getting-And-Dependencies">
   <title>Getting the Client And Dependencies</title>
-  <section>
+  <section id="JMS-Client-0-8-JMS-Getting-And-Dependencies-Getting">
     <title>Getting the Client</title>
     <para>The Qpid JMS client is available as a bundle or from &qpidMavenRepoDesc;.</para>
     <para>The bundle (a .tar.gz) includes the Qpid JMS client itself (formed by two JAR: qpid-client
@@ -47,7 +47,7 @@
     ]]></screen>
     <para><xref linkend="JMS-Client-0-8-Appendix-Maven"/> illustrates a minimal Maven POM required to use the Qpid Client.</para>
   </section>
-  <section>
+  <section id="JMS-Client-0-8-JMS-Getting-And-Dependencies-Dependencies">
     <title>Dependencies</title>
     <para>The Qpid JMS client has minimal set of external dependencies. </para>
     <para> It requires: <itemizedlist>

Modified: qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml?rev=1554404&r1=1554403&r2=1554404&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml (original)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-JNDI-Properties-Format.xml Tue Dec 31 11:42:40 2013
@@ -43,7 +43,7 @@ destination.<jndi name>=<binding url>
   <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-Hello-World-Example"/></para>
+    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">

Modified: qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml?rev=1554404&r1=1554403&r2=1554404&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml (original)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/JMS-Client-Understanding.xml Tue Dec 31 11:42:40 2013
@@ -62,9 +62,9 @@
       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, or
       created programatically.</para>
-    <para>The Hello World example in the previous chapter illustrated the Java code required to
-        <link linkend="callout-java-properties">create the InitialContext</link> and an <link
-        linkend="JMS-Client-0-8-Hello-World-Example-PropertiesFile">example properties
+    <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>Note that the Qpid Broker does not present a JNDI interface to the application.</para>
     <figure>
@@ -449,8 +449,8 @@ amqp://guest:guest@clientid/?brokerlist=
           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#unsubscriber(java.lang.String)"
-          >Session#unsubscriber(java.lang.String)</ulink> deletes the underlying queue.</para>
+          url="&oracleJeeDocUrl;javax/jms/Session.html#unsubscribe(java.lang.String)"
+          >Session#unsubscribe(java.lang.String)</ulink> 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>

Modified: qpid/trunk/qpid/doc/book/src/jms-client-0-8/commonEntities.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/doc/book/src/jms-client-0-8/commonEntities.xml?rev=1554404&r1=1554403&r2=1554404&view=diff
==============================================================================
--- qpid/trunk/qpid/doc/book/src/jms-client-0-8/commonEntities.xml (original)
+++ qpid/trunk/qpid/doc/book/src/jms-client-0-8/commonEntities.xml Tue Dec 31 11:42:40 2013
@@ -37,6 +37,8 @@
 <!ENTITY oracleJmsSpec "http://docs.oracle.com/cd/E19957-01/816-5904-10/816-5904-10.pdf">
 <!ENTITY oracleJdkDocUrl "http://docs.oracle.com/javase/6/docs/api/">
 <!ENTITY oracleJeeDocUrl "http://docs.oracle.com/javaee/6/api/">
+<!ENTITY oracleJmsTutorial "http://docs.oracle.com/javaee/6/tutorial/doc/bncdq.html">
+
 
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org