You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jo...@apache.org on 2011/04/28 18:49:56 UTC

svn commit: r1097544 [19/20] - in /qpid/site/docs/books/0.10: ./ AMQP-Messaging-Broker-CPP-Book/ AMQP-Messaging-Broker-CPP-Book/html-single/ AMQP-Messaging-Broker-CPP-Book/html-single/images/ AMQP-Messaging-Broker-CPP-Book/html-single/images/jmx_consol...

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s02.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s02.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s02.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,212 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3.2. Apache Qpid JNDI Properties for AMQP Messaging</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch03.html" title="Chapter 3. Using the Qpid JMS client"><link rel="prev" href="ch03.html" title="Chapter 3. Using the Qpid JMS client"><link rel="next" href="ch03s03.html" title="3.3. Java JMS Message Properties"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.2. Apache Qpid JNDI Properties for AMQP Messaging</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using the Qpid JMS client</th><td width="20%" align="right"> <a accesskey="n" hr
 ef="ch03s03.html">Next</a></td></tr></table><hr></div><div class="section" title="3.2. Apache Qpid JNDI Properties for AMQP Messaging"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="QpidJNDI"></a>3.2. Apache Qpid JNDI Properties for AMQP Messaging</h2></div></div></div><p>
+	Apache Qpid defines JNDI properties that can be used to specify JMS Connections and Destinations. Here is a typical JNDI properties file:
+      </p><div class="example"><a name="id2742064"></a><p class="title"><b>Example 3.3. JNDI Properties File</b></p><div class="example-contents"><pre class="programlisting">
+java.naming.factory.initial
+  = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+
+# connectionfactory.[jndiname] = [ConnectionURL]
+connectionfactory.qpidConnectionfactory
+  = amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'
+# destination.[jndiname] = [address_string]
+destination.topicExchange = amq.topic
+</pre></div></div><br class="example-break"><p>The following sections describe the JNDI properties that Qpid uses.</p><div class="section" title="3.2.1. JNDI Properties for Apache Qpid"><div class="titlepage"><div><div><h3 class="title"><a name="id2742086"></a>3.2.1. JNDI Properties for Apache Qpid</h3></div></div></div><p>
+	  Apache Qpid supports the properties shown in the following table:
+        </p><div class="table"><a name="id2742096"></a><p class="title"><b>Table 3.1. JNDI Properties supported by Apache Qpid</b></p><div class="table-contents"><table summary="JNDI Properties supported by Apache Qpid" border="1"><colgroup><col><col></colgroup><thead><tr><th>
+		  Property
+	        </th><th>
+		  Purpose
+	        </th></tr></thead><tbody><tr><td>
+		  connectionfactory.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    The Connection URL that the connection factory uses to perform connections.
+		  </p>
+	        </td></tr><tr><td>
+		  queue.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    A JMS queue, which is implemented as an amq.direct exchange in Apache Qpid.
+		  </p>
+	        </td></tr><tr><td>
+		  topic.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    A JMS topic, which is implemented as an amq.topic exchange in Apache Qpid.
+		  </p>
+	        </td></tr><tr><td>
+		  destination.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    Can be used for defining all amq destinations,
+		    queues, topics and header matching, using an
+		    address string.
+
+		    <sup>[<a name="id2742180" href="#ftn.id2742180" class="footnote">a</a>]</sup>
+		  </p>
+	        </td></tr></tbody><tbody class="footnotes"><tr><td colspan="2"><div class="footnote"><p><sup>[<a name="ftn.id2742180" href="#id2742180" class="para">a</a>] </sup>Binding URLs, which were used in
+		    earlier versions of the Qpid Java JMS client, can
+		    still be used instead of address
+		    strings.</p></div></td></tr></tbody></table></div></div><br class="table-break"></div><div class="section" title="3.2.2. Connection URLs"><div class="titlepage"><div><div><h3 class="title"><a name="section-jms-connection-url"></a>3.2.2. Connection URLs</h3></div></div></div><p>
+	  In JNDI properties, a Connection URL specifies properties for a connection. The format for a Connection URL is:
+        </p><pre class="programlisting">amqp://[&lt;user&gt;:&lt;pass&gt;@][&lt;clientid&gt;]&lt;virtualhost&gt;[?&lt;option&gt;='&lt;value&gt;'[&amp;&lt;option&gt;='&lt;value&gt;']]
+        </pre><p>
+	  For instance, the following Connection URL specifies a user name, a password, a client ID, a virtual host ("test"), a broker list with a single broker, and a TCP host with the host name <span class="quote">&#8220;<span class="quote">localhost</span>&#8221;</span> using port 5672:
+        </p><pre class="programlisting">amqp://username:password@clientid/test?brokerlist='tcp://localhost:5672'
+        </pre><p>
+	  Apache Qpid supports the following properties in Connection URLs:
+        </p><div class="table"><a name="id2742238"></a><p class="title"><b>Table 3.2. Connection URL Properties</b></p><div class="table-contents"><table summary="Connection URL Properties" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>
+		  Option
+	        </th><th>
+		  Type
+	        </th><th>
+		  Description
+	        </th></tr></thead><tbody><tr><td>
+		  brokerlist
+	        </td><td>
+		  see below
+	        </td><td>
+		  The broker to use for this connection. In the current release, precisely one broker must be specified.
+	        </td></tr><tr><td>
+		  maxprefetch
+	        </td><td>
+		  --
+	        </td><td>
+		  The maximum number of pre-fetched messages per destination.
+	        </td></tr><tr><td>
+		  sync_publish
+	        </td><td>
+           {'persistent' | 'all'}
+	        </td><td>
+          A sync command is sent after every persistent message to guarantee that it has been received; if the value is 'persistent', this is done only for persistent messages.
+	        </td></tr><tr><td>
+		  sync_ack
+	        </td><td>
+           Boolean
+	        </td><td>
+          A sync command is sent after every acknowledgement to guarantee that it has been received.
+	        </td></tr><tr><td>
+		  use_legacy_map_msg_format
+	        </td><td>
+          Boolean
+	        </td><td>
+          If you are using JMS Map messages and deploying a new client with any JMS client older than 0.8 release, you must set this to true to ensure the older clients can understand the map message encoding.
+	        </td></tr><tr><td>
+		  failover
+	        </td><td>
+           {'roundrobin' | 'failover_exchange'}
+	        </td><td>
+          If roundrobin is selected it will try each broker given in the broker list.
+          If failover_exchange is selected it connects to the initial broker given in the broker URL and will receive membership updates via the failover exchange.
+	        </td></tr></tbody></table></div></div><br class="table-break"><p>
+	  Broker lists are specified using a URL in this format:
+        </p><pre class="programlisting">brokerlist=&lt;transport&gt;://&lt;host&gt;[:&lt;port&gt;](?&lt;param&gt;=&lt;value&gt;)?(&amp;&lt;param&gt;=&lt;value&gt;)*</pre><p>
+	  For instance, this is a typical broker list:
+        </p><pre class="programlisting">brokerlist='tcp://localhost:5672'
+        </pre><p>
+	  A broker list can contain more than one broker address; if so, the connection is made to the first broker in the list that is available. In general, it is better to use the failover exchange when using multiple brokers, since it allows applications to fail over if a broker goes down.
+	</p><div class="example"><a name="id2742400"></a><p class="title"><b>Example 3.4. Broker Lists</b></p><div class="example-contents"><p>A broker list can specify properties to be used when connecting to the broker, such as security options. This broker list specifies options for a Kerberos connection using GSSAPI:</p><pre class="programlisting">
+amqp://guest:guest@test/test?sync_ack='true'
+    &amp;brokerlist='tcp://ip1:5672?sasl_mechs='GSSAPI'
+	</pre><p>This broker list specifies SSL options:</p><pre class="programlisting">
+amqp://guest:guest@test/test?sync_ack='true'
+   &amp;brokerlist='tcp://ip1:5672?ssl='true'&amp;ssl_cert_alias='cert1'
+	</pre></div></div><br class="example-break"><p>The following broker list options are supported.</p><div class="table"><a name="id2742435"></a><p class="title"><b>Table 3.3. Broker List Options</b></p><div class="table-contents"><table summary="Broker List Options" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>
+		  Option
+	        </th><th>
+		  Type
+	        </th><th>
+		  Description
+	        </th></tr></thead><tbody><tr><td>
+		  heartbeat
+	        </td><td>
+		  integer
+	        </td><td>
+		  frequency of heartbeat messages (in seconds)
+	        </td></tr><tr><td>
+		  sasl_mechs
+	        </td><td>
+		  --
+	        </td><td>
+		  For secure applications, we suggest CRAM-MD5,
+		  DIGEST-MD5, or GSSAPI. The ANONYMOUS method is not
+		  secure. The PLAIN method is secure only when used
+		  together with SSL. For Kerberos, sasl_mechs must be
+		  set to GSSAPI, sasl_protocol must be set to the
+		  principal for the qpidd broker, e.g. qpidd/, and
+		  sasl_server must be set to the host for the SASL
+		  server, e.g. sasl.com.  SASL External is supported
+		  using SSL certification, e.g.
+		  <code class="literal">ssl='true'&amp;sasl_mechs='EXTERNAL'</code>
+	        </td></tr><tr><td>
+		  sasl_encryption
+	        </td><td>
+          Boolean
+	        </td><td>
+          If <code class="literal">sasl_encryption='true'</code>, the JMS client attempts to negotiate a security layer with the broker using GSSAPI to encrypt the connection. Note that for this to happen, GSSAPI must be selected as the sasl_mech.
+	        </td></tr><tr><td>
+		  ssl
+	        </td><td>
+		  Boolean
+	        </td><td>
+		  If <code class="literal">ssl='true'</code>, the JMS client will encrypt the connection using SSL.
+	        </td></tr><tr><td>
+		  tcp_nodelay
+	        </td><td>
+		  Boolean
+	        </td><td>
+		  If <code class="literal">tcp_nodelay='true'</code>, TCP packet
+		  batching is disabled.
+	        </td></tr><tr><td>
+		  sasl_protocol
+	        </td><td>
+		  --
+	        </td><td>
+		  Used only for
+		  Kerberos. <code class="literal">sasl_protocol</code> must be
+		  set to the principal for the qpidd broker,
+		  e.g. <code class="literal">qpidd/</code>
+	        </td></tr><tr><td>
+		  sasl_server
+	        </td><td>
+		  --
+	        </td><td>
+		  For Kerberos, sasl_mechs must be set to GSSAPI,
+		  sasl_server must be set to the host for the SASL
+		  server, e.g. <code class="literal">sasl.com</code>.
+	        </td></tr><tr><td>
+		  trust_store
+	        </td><td>
+		  --
+	        </td><td>
+		  path to Keberos trust store
+	        </td></tr><tr><td>
+		  trust_store_password
+	        </td><td>
+	        </td><td>
+		  Kerberos trust store password
+	        </td></tr><tr><td>
+		  key_store
+	        </td><td>
+	        </td><td>
+		  path to Kerberos key store
+	        </td></tr><tr><td>
+		  key_store_password
+	        </td><td>
+		  --
+	        </td><td>
+		  Kerberos key store password
+	        </td></tr><tr><td>
+		  ssl_verify_hostname
+	        </td><td>
+		  Boolean
+	        </td><td>
+		  When using SSL you can enable hostname verification
+		  by using "ssl_verify_hostname=true" in the broker
+		  URL.
+	        </td></tr><tr><td>
+		  ssl_cert_alias
+	        </td><td>
+
+	        </td><td>
+          If multiple certificates are present in the keystore, the alias will be used to extract the correct certificate.
+	        </td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. Using the Qpid JMS client </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 3.3. Java JMS Message Properties</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s03.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s03.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s03.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s03.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,8 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3.3. Java JMS Message Properties</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch03.html" title="Chapter 3. Using the Qpid JMS client"><link rel="prev" href="ch03s02.html" title="3.2. Apache Qpid JNDI Properties for AMQP Messaging"><link rel="next" href="ch03s04.html" title="3.4. JMS MapMessage Types"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.3. Java JMS Message Properties</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using the Qpid JMS client</th><td width="20%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a
 ></td></tr></table><hr></div><div class="section" title="3.3. Java JMS Message Properties"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2742706"></a>3.3. Java JMS Message Properties</h2></div></div></div><p>The following table shows how Qpid Messaging API message
+        properties are mapped to AMQP 0-10 message properties and
+        delivery properties. In this table <code class="varname">msg</code>
+        refers to the Message class defined in the Qpid Messaging API,
+        <code class="varname">mp</code> refers to an AMQP 0-10
+        <code class="varname">message-properties</code> struct, and
+        <code class="varname">dp</code> refers to an AMQP 0-10
+        <code class="varname">delivery-properties</code> struct.</p><div class="table"><a name="id2742736"></a><p class="title"><b>Table 3.4. Java JMS Mapping to AMQP 0-10 Message Properties</b></p><div class="table-contents"><table summary="Java JMS Mapping to AMQP 0-10 Message Properties" border="1"><colgroup><col><col></colgroup><thead><tr><th>Java JMS Message Property</th><th>AMQP 0-10 Property<sup>[<a name="id2742756" href="#ftn.id2742756" class="footnote">a</a>]</sup></th></tr></thead><tbody><tr><td>JMSMessageID</td><td>mp.message_id</td></tr><tr><td>qpid.subject<sup>[<a name="id2742789" href="#ftn.id2742789" class="footnote">b</a>]</sup></td><td>mp.application_headers["qpid.subject"]</td></tr><tr><td>JMSXUserID</td><td>mp.user_id</td></tr><tr><td>JMSReplyTo</td><td>mp.reply_to<sup>[<a name="id2742814" href="#ftn.id2742814" class="footnote">c</a>]</sup></td></tr><tr><td>JMSCorrelationID</td><td>mp.correlation_id</td></tr><tr><td>JMSDeliveryMode</td><td>dp.delivery_mo
 de</td></tr><tr><td>JMSPriority</td><td>dp.priority</td></tr><tr><td>JMSExpiration</td><td>dp.ttl<sup>[<a name="id2742853" href="#ftn.id2742853" class="footnote">d</a>]</sup></td></tr><tr><td>JMSRedelivered</td><td>dp.redelivered</td></tr><tr><td>JMS Properties</td><td>mp.application_headers</td></tr><tr><td>JMSType</td><td>mp.content_type</td></tr></tbody><tbody class="footnotes"><tr><td colspan="2"><div class="footnote"><p><sup>[<a name="ftn.id2742756" href="#id2742756" class="para">a</a>] </sup>In these entries, <code class="literal">mp</code> refers to an AMQP message property, and <code class="literal">dp</code> refers to an AMQP delivery property.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2742789" href="#id2742789" class="para">b</a>] </sup>This is a custom JMS property, set automatically by the Java JMS client implementation.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2742814" href="#id2742814" class="para">c</a>] </sup>The reply_to is convert
 ed from the protocol representation into an address.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2742853" href="#id2742853" class="para">d</a>] </sup>JMSExpiration = dp.ttl + currentTime</p></div></td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.2. Apache Qpid JNDI Properties for AMQP Messaging </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 3.4. JMS MapMessage Types</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s04.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s04.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s04.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s04.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,51 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3.4. JMS MapMessage Types</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch03.html" title="Chapter 3. Using the Qpid JMS client"><link rel="prev" href="ch03s03.html" title="3.3. Java JMS Message Properties"><link rel="next" href="ch03s05.html" title="3.5. JMS Client Logging"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.4. JMS MapMessage Types</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s03.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using the Qpid JMS client</th><td width="20%" align="right"> <a accesskey="n" href="ch03s05.html">Next</a></td></tr></table><hr></div><div c
 lass="section" title="3.4. JMS MapMessage Types"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="section-JMS-MapMessage"></a>3.4. JMS MapMessage Types</h2></div></div></div><p>Qpid supports the Java JMS <code class="classname">MapMessage</code> interface, which provides support for maps in messages. The following code shows how to send a <code class="classname">MapMessage</code> in Java JMS.</p><div class="example"><a name="id2742907"></a><p class="title"><b>Example 3.5. Sending a Java JMS MapMessage</b></p><div class="example-contents"><pre class="programlisting">
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.jms.Connection;
+import javax.jms.Destination;
+import javax.jms.MapMessage;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+
+import org.apache.qpid.client.AMQAnyDestination;
+import org.apache.qpid.client.AMQConnection;
+
+import edu.emory.mathcs.backport.java.util.Arrays;
+
+// !!! SNIP !!!
+
+MessageProducer producer = session.createProducer(queue);
+
+MapMessage m = session.createMapMessage();
+m.setIntProperty("Id", 987654321);
+m.setStringProperty("name", "Widget");
+m.setDoubleProperty("price", 0.99);
+
+List&lt;String&gt; colors = new ArrayList&lt;String&gt;();
+colors.add("red");
+colors.add("green");
+colors.add("white");
+m.setObject("colours", colors);
+
+Map&lt;String,Double&gt; dimensions = new HashMap&lt;String,Double&gt;();
+dimensions.put("length",10.2);
+dimensions.put("width",5.1);
+dimensions.put("depth",2.0);
+m.setObject("dimensions",dimensions);
+
+List&lt;List&lt;Integer&gt;&gt; parts = new ArrayList&lt;List&lt;Integer&gt;&gt;();
+parts.add(Arrays.asList(new Integer[] {1,2,5}));
+parts.add(Arrays.asList(new Integer[] {8,2,5}));
+m.setObject("parts", parts);
+
+Map&lt;String,Object&gt; specs = new HashMap&lt;String,Object&gt;();
+specs.put("colours", colors);
+specs.put("dimensions", dimensions);
+specs.put("parts", parts);
+m.setObject("specs",specs);
+
+producer.send(m);
+      </pre></div></div><br class="example-break"><p>The following table shows the datatypes that can be sent in a <code class="classname">MapMessage</code>, and the corresponding datatypes that will be received by clients in Python or C++.</p><div class="table"><a name="table-Java-Maps"></a><p class="title"><b>Table 3.5. Java Datatypes in Maps</b></p><div class="table-contents"><table summary="Java Datatypes in Maps" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Java Datatype</th><th>&#8594; Python</th><th>&#8594; C++</th></tr></thead><tbody><tr><td>boolean</td><td>bool</td><td>bool</td></tr><tr><td>short</td><td>int | long</td><td>int16</td></tr><tr><td>int</td><td>int | long</td><td>int32</td></tr><tr><td>long</td><td>int | long</td><td>int64</td></tr><tr><td>float</td><td>float</td><td>float</td></tr><tr><td>double</td><td>float</td><td>double</td></tr><tr><td>java.lang.String</td><td>unicode</td><td>std::string</td></tr><tr><td>java.util.UUID</td><td>u
 uid</td><td>qpid::types::Uuid</td></tr><tr><td>java.util.Map<sup>[<a name="id2743054" href="#ftn.id2743054" class="footnote">a</a>]</sup></td><td>dict</td><td>Variant::Map</td></tr><tr><td>java.util.List</td><td>list</td><td>Variant::List</td></tr></tbody><tbody class="footnotes"><tr><td colspan="3"><div class="footnote"><p><sup>[<a name="ftn.id2743054" href="#id2743054" class="para">a</a>] </sup>In Qpid, maps can nest. This goes beyond the functionality required by the JMS specification.</p></div></td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.3. Java JMS Message Properties </td><td width
 ="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 3.5. JMS Client Logging</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s05.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s05.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s05.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s05.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,9 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3.5. JMS Client Logging</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch03.html" title="Chapter 3. Using the Qpid JMS client"><link rel="prev" href="ch03s04.html" title="3.4. JMS MapMessage Types"><link rel="next" href="ch03s06.html" title="3.6. Configuring the JMS Client"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.5. JMS Client Logging</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s04.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using the Qpid JMS client</th><td width="20%" align="right"> <a accesskey="n" href="ch03s06.html">Next</a></td></tr></table><hr></div><div clas
 s="section" title="3.5. JMS Client Logging"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="section-JMS-Logging"></a>3.5. JMS Client Logging</h2></div></div></div><p>The JMS Client logging is handled using the Simple Logging Facade for Java (<a class="ulink" href="http://www.slf4j.org/" target="_top">SLF4J</a>). As the name implies, slf4j is a facade that delegates to other logging systems like log4j or JDK 1.4 logging. For more information on how to configure slf4j for specific logging systems, please consult the slf4j documentation.</p><p>When using the log4j binding, please set the log level for org.apache.qpid explicitly. Otherwise log4j will default to DEBUG which will degrade performance considerably due to excessive logging. The recommended logging level for production is <code class="literal">WARN</code>.</p><p>The following example shows the logging properties used to configure client logging for slf4j using the log4j binding. These
  properties can be placed in a log4j.properties file and placed in the <code class="varname">CLASSPATH</code>, or they can be set explicitly using the <code class="literal">-Dlog4j.configuration</code> property.</p><div class="example"><a name="id2743127"></a><p class="title"><b>Example 3.6. log4j Logging Properties</b></p><div class="example-contents"><pre class="programlisting">
+log4j.logger.org.apache.qpid=WARN, console
+log4j.additivity.org.apache.qpid=false
+
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.Threshold=all
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%t %d %p [%c{4}] %m%n
+</pre></div></div><br class="example-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.4. JMS MapMessage Types </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 3.6. Configuring the JMS Client</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s06.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s06.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s06.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch03s06.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,20 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>3.6. Configuring the JMS Client</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch03.html" title="Chapter 3. Using the Qpid JMS client"><link rel="prev" href="ch03s05.html" title="3.5. JMS Client Logging"><link rel="next" href="ch04.html" title="Chapter 4. Using the Qpid WCF client"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.6. Configuring the JMS Client</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s05.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using the Qpid JMS client</th><td width="20%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr></table><hr><
 /div><div class="section" title="3.6. Configuring the JMS Client"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2743138"></a>3.6. Configuring the JMS Client</h2></div></div></div><p>The Qpid JMS Client allows several configuration options to customize it's behaviour at different levels of granualarity.</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+            JVM level using JVM arguments : Configuration that affects all connections, sessions, consumers and producers created within that JVM.
+	      </p><p>Ex. <code class="varname">-Dmax_prefetch=1000</code> property specifies the message credits to use.</p></li><li class="listitem"><p>
+            Connection level using Connection/Broker properties : Affects the respective connection and sessions, consumers and produces created by that connection.
+	      </p><p>Ex. <code class="varname">amqp://guest:guest@test/test?max_prefetch='1000'
+    &amp;brokerlist='tcp://localhost:5672'
+</code> property specifies the message credits to use. This overrides any value specified via the JVM argument <code class="varname">max_prefetch</code>.</p><p>Please refer to the <a class="xref" href="ch03s02.html#section-jms-connection-url" title="3.2.2. Connection URLs">Section 3.2.2, &#8220;Connection URLs&#8221;</a> section for a complete list of all properties and how to use them.</p></li><li class="listitem"><p>
+            Destination level using Addressing options : Affects the producer(s) and consumer(s) created using the respective destination.
+	      </p><p>Ex. <code class="varname">my-queue; {create: always, link:{capacity: 10}}</code>, where <code class="varname">capacity</code> option specifies the message credits to use. This overrides any connection level configuration.</p><p>Please refer to the <a class="xref" href="ch02s04.html" title="2.4. Addresses">Section 2.4, &#8220;Addresses&#8221;</a> section for a complete understanding of addressing and it's various options.</p></li></ul></div><p>Some of these config options are available at all three levels (Ex. <code class="varname">max_prefetch</code>), while others are available only at JVM or connection level.</p><div class="section" title="3.6.1. Qpid JVM Arguments"><div class="titlepage"><div><div><h3 class="title"><a name="id2743246"></a>3.6.1. Qpid JVM Arguments</h3></div></div></div><div class="table"><a name="id2743251"></a><p class="title"><b>Table 3.6. Config Options For Connection Behaviour</b></p><div class="table-contents"><table summary="Conf
 ig Options For Connection Behaviour" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>qpid.amqp.version</td><td>string</td><td>0-10</td><td>Sets the AMQP version to be used - currently supports one of {0-8,0-9,0-91,0-10}</td></tr><tr><td>qpid.heartbeat</td><td>int</td><td>120 (secs)</td><td>The heartbeat interval in seconds. Two consective misssed heartbeats will result in the connection timing out.<p>This could also be set per connection as well (see connection paramters).</p></td></tr><tr><td>ignore_setclientID</td><td>boolean</td><td>false</td><td>If a client ID is specified in the connection URL it's used or else an ID is generated. If an ID is specified after it's been set Qpid will throw an exception. <p>Setting this property to 'true' will disable that check and allow you to set a client ID of your choice later on.</p></td></tr></tbody></table></div><
 /div><br class="table-break"><div class="table"><a name="id2743348"></a><p class="title"><b>Table 3.7. Config Options For Session Behaviour</b></p><div class="table-contents"><table summary="Config Options For Session Behaviour" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>qpid.session.command_limit</td><td>int</td><td>65536</td><td>Limits the # of unacked commands</td></tr><tr><td>qpid.session.byte_limit</td><td>int</td><td>1048576</td><td>Limits the # of unacked commands in terms of bytes</td></tr><tr><td>qpid.use_legacy_map_message</td><td>boolean</td><td>false</td><td><p>If set will use the old map message encoding. By default the Map messages are encoded using the 0-10 map encoding.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a 
 name="id2743439"></a><p class="title"><b>Table 3.8. Config Options For Consumer Behaviour</b></p><div class="table-contents"><table summary="Config Options For Consumer Behaviour" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>max_prefetch</td><td>int</td><td>500</td><td>Maximum number of messages to credits. <p>This could also be set per connection (see connection paramters) or per destination (see the <code class="varname">capacity</code> option under link properties in addressing).</p></td></tr><tr><td>qpid.session.max_ack_delay</td><td>long</td><td>1000 (ms)</td><td><p>Timer interval to flush message acks in buffer when using AUTO_ACK and DUPS_OK.</p> <p>When using the above ack modes, message acks are batched and sent if one of the following conditions are met (which ever happens first).
+                            </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>When the ack timer fires.</p></li><li class="listitem"><p>if un_acked_msg_count &gt; max_prefetch/2.</p></li></ul></div><p>
+                        </p>
+                        <p>The ack timer can be disabled by setting it to 0.</p>
+                  </td></tr><tr><td>sync_ack</td><td>boolean</td><td>false</td><td><p>If set, each message will be acknowledged synchronously. When using AUTO_ACK mode, you need to set this to "true", in order to get the correct behaviour as described by the JMS spec.</p><p>This is set to false by default for performance reasons, therefore by default AUTO_ACK behaves similar to DUPS_OK.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id2743569"></a><p class="title"><b>Table 3.9. Config Options For Producer Behaviour</b></p><div class="table-contents"><table summary="Config Options For Producer Behaviour" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>sync_publish</td><td>string</td><td>"" (disabled)</td><td><p>If one of {persistent
 |all} is set then persistent messages or all messages will be sent synchronously.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id2743626"></a><p class="title"><b>Table 3.10. Config Options For Threading</b></p><div class="table-contents"><table summary="Config Options For Threading" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>qpid.thread_factory</td><td>string</td><td>org.apache.qpid.thread.DefaultThreadFactory</td><td><p>Specifies the thread factory to use.</p><p>If using a real time JVM, you need to set the above property to <code class="varname">org.apache.qpid.thread.RealtimeThreadFactory</code>.</p></td></tr><tr><td>qpid.rt_thread_priority</td><td>int</td><td>20</td><td><p>Specifies the priority (1-99) for Real time thre
 ads created by the real time thread factory.</p></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id2743706"></a><p class="title"><b>Table 3.11. Config Options For I/O</b></p><div class="table-contents"><table summary="Config Options For I/O" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>qpid.transport</td><td>string</td><td>org.apache.qpid.transport.network.io.IoNetworkTransport</td><td><p>The transport implementation to be used.</p><p>A user could specify an alternative transport mechanism that implements the <code class="varname">org.apache.qpid.transport.network.NetworkTransport</code> interface.</p></td></tr><tr><td>amqj.tcp_nodelay</td><td>boolean</td><td>false</td><td><p>Sets the TCP_NODELAY property of the underlying socket.</p><p>This could also be set per connection as well (see connection paramters).</p
 ></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id2743788"></a><p class="title"><b>Table 3.12. Config Options For Security</b></p><div class="table-contents"><table summary="Config Options For Security" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>qpid.sasl_mechs</td><td>string</td><td>PLAIN</td><td><p>The SASL mechanism to be used. More than one could be specified as a comma separated list.</p><p>We currently support the following mechanisms {PLAIN | GSSAPI | EXTERNAL}.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr><tr><td>qpid.sasl_protocol</td><td>string</td><td>AMQP</td><td><p>When using GSSAPI as the SASL mechanism, <code class="varname">sasl_protocol</code> must be set to the principal for the qpidd broker, e.g. <code class="varname">qpidd</code>.</p><p>This
  could also be set per connection as well (see connection paramters).</p></td></tr><tr><td>qpid.sasl_server_name</td><td>string</td><td>localhost</td><td><p>When using GSSAPI as the SASL mechanism, <code class="varname">sasl_server</code> must be set to the host for the SASL server, e.g. <code class="varname">example.com</code>.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id2743905"></a><p class="title"><b>Table 3.13. Config Options For Security - Standard JVM properties needed when using GSSAPI as the SASL mechanism.<sup>[<a name="id2743911" href="#ftn.id2743911" class="footnote">13</a>]</sup></b></p><div class="table-contents"><table summary="Config Options For Security - Standard JVM properties needed when using GSSAPI as the SASL mechanism.Please refer to the Java security documentation for a complete understanding of the above properties." b
 order="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>javax.security.auth.useSubjectCredsOnly</td><td>boolean</td><td>true</td><td><p>If set to 'false', forces the SASL GASSPI client to obtain the kerberos credentials explicitly instead of obtaining from the "subject" that owns the current thread.</p></td></tr><tr><td>java.security.auth.login.config</td><td>string</td><td> </td><td><p>Specifies the jass configuration file.</p><p><code class="varname">Ex-Djava.security.auth.login.config=myjas.conf</code>
+</p><p>Here is the sample myjas.conf JASS configuration file: </p><pre class="programlisting">
+
+    com.sun.security.jgss.initiate {
+        com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;
+    };
+
+</pre></td></tr></tbody><tbody class="footnotes"><tr><td colspan="4"><div class="footnote"><p><sup>[<a name="ftn.id2743911" href="#id2743911" class="para">13</a>] </sup>Please refer to the Java security documentation for a complete understanding of the above properties.</p></div></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id2743999"></a><p class="title"><b>Table 3.14. Config Options For Security - Using SSL for securing connections or using EXTERNAL as the SASL mechanism.</b></p><div class="table-contents"><table summary="Config Options For Security - Using SSL for securing connections or using EXTERNAL as the SASL mechanism." border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>qpid.ssl_timeout</td><td>long</td><td>60000</td><td><p>Timeout value used by the Java SSL engine when waiting on operations.</p></td></tr>
 <tr><td>qpid.ssl.keyStoreCertType</td><td>string</td><td>SunX509</td><td><p>The certificate type.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr><tr><td>qpid.ssl.trustStoreCertType</td><td>string</td><td>SunX509</td><td><p>The certificate type.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="id2744094"></a><p class="title"><b>Table 3.15. Config Options For Security - Standard JVM properties needed when Using SSL for securing connections or using EXTERNAL as the SASL mechanism.<sup>[<a name="id2744101" href="#ftn.id2744101" class="footnote">14</a>]</sup></b></p><div class="table-contents"><table summary="Config Options For Security - Standard JVM properties needed when Using SSL for securing connections or using EXTERNAL as the SASL mechanism.Qpid allows you to have per connection key and trust stores if r
 equired. If specified per connection, the JVM arguments are ignored." border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Property Name</th><th>Type</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td>javax.net.ssl.keyStore</td><td>string</td><td>jvm default</td><td><p>Specifies the key store path.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr><tr><td>javax.net.ssl.keyStorePassword</td><td>string</td><td>jvm default</td><td><p>Specifies the key store password.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr><tr><td>javax.net.ssl.trustStore</td><td>string</td><td>jvm default</td><td><p>Specifies the trust store path.</p><p>This could also be set per connection as well (see connection paramters).</p></td></tr><tr><td>javax.net.ssl.trustStorePassword</td><td>string</td><td>jvm default</td><td><p>Specifies the trust store password.</p><p>This could als
 o be set per connection as well (see connection paramters).</p></td></tr></tbody><tbody class="footnotes"><tr><td colspan="4"><div class="footnote"><p><sup>[<a name="ftn.id2744101" href="#id2744101" class="para">14</a>] </sup>Qpid allows you to have per connection key and trust stores if required. If specified per connection, the JVM arguments are ignored.</p></div></td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.5. JMS Client Logging </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Using the Qpi
 d WCF client</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,226 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 4. Using the Qpid WCF client</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="index.html" title="Programming in Apache Qpid"><link rel="prev" href="ch03s06.html" title="3.6. Configuring the JMS Client"><link rel="next" href="ch04s02.html" title="4.2. Endpoints"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Using the Qpid WCF client</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s06.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch04s02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 4.
  Using the Qpid WCF client"><div class="titlepage"><div><div><h2 class="title"><a name="QpidWCF"></a>Chapter 4. Using the Qpid WCF client</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch04.html#id2744233">4.1. XML and Binary Bindings</a></span></dt><dt><span class="section"><a href="ch04s02.html">4.2. Endpoints</a></span></dt><dt><span class="section"><a href="ch04s03.html">4.3. Message Headers</a></span></dt><dt><span class="section"><a href="ch04s04.html">4.4. Security</a></span></dt><dt><span class="section"><a href="ch04s05.html">4.5. Transactions</a></span></dt></dl></div><div class="section" title="4.1. XML and Binary Bindings"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2744233"></a>4.1. XML and Binary Bindings</h2></div></div></div><p>The Qpid WCF client provides two bindings, each with support for
+      Windows .NET transactions.</p><p>The AmqpBinding is suitable for communication between two WCF
+      applications.  By default it uses the WCF binary .NET XML encoder
+      (BinaryMessageEncodingBindingElement) for efficient message
+      transmission, but it can also use the text and Message Transmission
+      Optimization Mechanism (MTOM) encoders.  Here is a traditional service
+      model sample program using the AmqpBinding.  It assumes that the queue
+      "hello_service_node" has been created and configured on the AMQP
+      broker.</p><div class="example"><a name="id2744255"></a><p class="title"><b>Example 4.1. Traditional service model "Hello world!" example</b></p><div class="example-contents"><pre class="programlisting">
+namespace Apache.Qpid.Documentation.HelloService
+{
+  using System;
+  using System.ServiceModel;
+  using System.ServiceModel.Channels;
+  using System.Threading;
+  using Apache.Qpid.Channel;
+
+  [ServiceContract]
+  public interface IHelloService
+  {
+    [OperationContract(IsOneWay = true, Action = "*")]
+    void SayHello(string greeting);
+  }
+
+  public class HelloService : IHelloService
+  {
+    private static int greetingCount;
+
+    public static int GreetingCount
+    {
+      get { return greetingCount; }
+    }
+
+    public void SayHello(string greeting)
+    {
+      Console.WriteLine("Service received: " + greeting);
+      greetingCount++;
+    }</pre><pre class="programlisting">
+    static void Main(string[] args)
+    {
+      try
+      {
+        AmqpBinding amqpBinding = new AmqpBinding();
+        amqpBinding.BrokerHost = "localhost";
+        amqpBinding.BrokerPort = 5672;
+
+        ServiceHost serviceHost = new ServiceHost(typeof(HelloService));
+        serviceHost.AddServiceEndpoint(typeof(IHelloService),
+          amqpBinding, "amqp:hello_service_node");
+        serviceHost.Open();
+
+        // Send the service a test greeting
+        Uri amqpClientUri=new Uri("amqp:amq.direct?routingkey=hello_service_node");
+        EndpointAddress clientEndpoint = new EndpointAddress(amqpClientUri);
+        ChannelFactory&lt;IHelloService&gt; channelFactory =
+          new ChannelFactory&lt;IHelloService&gt;(amqpBinding, clientEndpoint);
+        IHelloService clientProxy = channelFactory.CreateChannel();
+
+        clientProxy.SayHello("Greetings from WCF client");
+
+        // wait for service to process the greeting
+        while (HelloService.GreetingCount == 0)
+        {
+          Thread.Sleep(100);
+        }
+        channelFactory.Close();
+        serviceHost.Close();
+      }
+      catch (Exception e)
+      {
+        Console.WriteLine("Exception: {0}", e);
+      }
+    }
+  }
+}
+      </pre></div></div><br class="example-break"><p>The second binding, AmqpBinaryBinding, is suitable for WCF
+      applications that need to inter-operate with non-WCF clients or that
+      wish to have direct access to the raw wire representation of the
+      message body.  It relies on a custom encoder to read and write raw
+      (binary) content which operates similarly to the ByteStream encoder
+      (introduced in .NET 4.0).  The encoder presents an abstract XML
+      infoset view of the raw message content on input.  On output, the
+      encoder does the reverse and peels away the XML infoset layer exposing
+      the raw content to the wire representation of the message body.  The
+      application must do the inverse of what the encoder does to allow the
+      XML infoset wrapper to cancel properly.  This is demonstrated in the
+      following sample code (using the channel programming model) which
+      directly manipulates or provides callbacks to the WCF message readers
+      and writers when the content is consumed.  In contrast to the
+      AmqpBinding sample where the simple greeting is encapsulated in a
+      compressed SOAP envelope, the wire representation of the message
+      contains the raw content and is identical and fully interoperable with
+      the Qpid C++ "Hello world!"  example.</p><div class="example"><a name="id2744277"></a><p class="title"><b>Example 4.2. Binary  "Hello world!" example using the channel model</b></p><div class="example-contents"><pre class="programlisting">
+namespace Apache.Qpid.Samples.Channel.HelloWorld
+{
+  using System;
+  using System.ServiceModel;
+  using System.ServiceModel.Channels;
+  using System.ServiceModel.Description;
+  using System.Text;
+  using System.Xml;
+  using Apache.Qpid.Channel;
+
+  public class HelloWorld
+  {
+    static void Main(string[] args)
+    {
+      String broker = "localhost";
+      int port = 5672;
+      String target = "amq.topic";
+      String source = "my_topic_node";
+
+      if (args.Length &gt; 0)
+      {
+        broker = args[0];
+      }
+
+      if (args.Length &gt; 1)
+      {
+        port = int.Parse(args[1]);
+      }
+
+      if (args.Length &gt; 2)
+      {
+        target = args[2];
+      }
+
+      if (args.Length &gt; 3)
+      {
+        source = args[3];
+      }
+
+      AmqpBinaryBinding binding = new AmqpBinaryBinding();
+      binding.BrokerHost = broker;
+      binding.BrokerPort = port;
+
+      IChannelFactory&lt;IInputChannel&gt; receiverFactory = binding.BuildChannelFactory&lt;IInputChannel&gt;();
+      receiverFactory.Open();
+      IInputChannel receiver = receiverFactory.CreateChannel(new EndpointAddress("amqp:" + source));
+      receiver.Open();
+
+      IChannelFactory&lt;IOutputChannel&gt; senderFactory = binding.BuildChannelFactory&lt;IOutputChannel&gt;();
+      senderFactory.Open();
+      IOutputChannel sender = senderFactory.CreateChannel(new EndpointAddress("amqp:" + target));
+      sender.Open();
+
+      sender.Send(Message.CreateMessage(MessageVersion.None, "", new HelloWorldBinaryBodyWriter()));
+
+      Message message = receiver.Receive();
+      XmlDictionaryReader reader = message.GetReaderAtBodyContents();
+      while (!reader.HasValue)
+      {
+        reader.Read();
+      }
+
+      byte[] binaryContent = reader.ReadContentAsBase64();
+      string text = Encoding.UTF8.GetString(binaryContent);
+
+      Console.WriteLine(text);
+
+      senderFactory.Close();
+      receiverFactory.Close();
+    }
+  }
+
+  public class HelloWorldBinaryBodyWriter : BodyWriter
+  {
+    public HelloWorldBinaryBodyWriter() : base (true) {}
+
+    protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
+    {
+      byte[] binaryContent = Encoding.UTF8.GetBytes("Hello world!");
+
+      // wrap the content:
+      writer.WriteStartElement("Binary");
+      writer.WriteBase64(binaryContent, 0, binaryContent.Length);
+    }
+  }
+}
+</pre></div></div><br class="example-break"><p>Bindings define ChannelFactories and ChannelListeners associated with
+      an AMQP Broker.  WCF will frequently automatically create and manage
+      the life cycle of a these and the resulting IChannel objects used in
+      message transfer.  The binding parameters that can be set are:</p><div class="table"><a name="id2744314"></a><p class="title"><b>Table 4.1. WCF Binding Parameters</b></p><div class="table-contents"><table summary="WCF Binding Parameters" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Parameter</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>
+		BrokerHost
+	      </td><td>
+		localhost
+	      </td><td>
+		The broker's server name.  Currently the WCF channel
+		only supports connections with a single broker.
+		Failover to multiple brokers will be provided in the
+		future.
+	      </td></tr><tr><td>
+		BrokerPort
+	      </td><td>
+		5672
+	      </td><td>
+		The port the broker is listening on.
+	      </td></tr><tr><td>
+		PrefetchLimit
+	      </td><td>
+		0
+	      </td><td>
+		The number of messages to prefetch from the amqp
+		broker before the application actually consumes them.
+		Increasing this number can dramatically increase the
+		read performance in some circumstances.
+	      </td></tr><tr><td>
+		Shared
+	      </td><td>
+		false
+	      </td><td>
+		Indicates if separate channels to the same broker can
+		share an underlying AMQP tcp connection (provided they
+		also share the same authentication credentials).
+	      </td></tr><tr><td>
+		TransferMode
+	      </td><td>
+		buffered
+	      </td><td>
+		Indicates whether the channel's encoder uses the WCF
+		BufferManager cache to temporarily store message
+		content during the encoding/decoding phase.  For small
+		to medium sized SOAP based messages, buffered is
+		usually the preferred choice.  For binary messages,
+		streamed TransferMode is the more efficient mode.
+	      </td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s06.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch04s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.6. Configuring the JMS Client </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 4.2. Endpoints</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s02.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s02.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s02.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,11 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>4.2. Endpoints</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch04.html" title="Chapter 4. Using the Qpid WCF client"><link rel="prev" href="ch04.html" title="Chapter 4. Using the Qpid WCF client"><link rel="next" href="ch04s03.html" title="4.3. Message Headers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.2. Endpoints</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Using the Qpid WCF client</th><td width="20%" align="right"> <a accesskey="n" href="ch04s03.html">Next</a></td></tr></table><hr></div><div class="section" title="4.2.
  Endpoints"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2744550"></a>4.2. Endpoints</h2></div></div></div><p>In Qpid 0.6 the WCF Endpoints map to simple AMQP 0-10
+      exchanges (IOutputChannel) or AMQP 0-10 queues (IInputChannel).
+      The format for an IOutputChannel is</p><pre class="programlisting">
+  "amqp:amq.direct" or "amqp:my_exchange?routingkey=my_routing_key"
+</pre><p>and for an IInputChannel is</p><pre class="programlisting">
+  "amqp:my_queue"
+</pre><p>The routing key is in fact a default value associated with
+      the particular channel.  Outgoing messages can always have their
+      routing key uniquely set.</p><p>If the respective queue or exchange doesn't exist, an exception
+      is thrown when opening the channel.  Queues and exchanges can be
+      created and configured using qpid-config.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. Using the Qpid WCF client </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 4.3. Message Headers</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s03.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s03.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s03.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s03.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,19 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>4.3. Message Headers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch04.html" title="Chapter 4. Using the Qpid WCF client"><link rel="prev" href="ch04s02.html" title="4.2. Endpoints"><link rel="next" href="ch04s04.html" title="4.4. Security"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.3. Message Headers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s02.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Using the Qpid WCF client</th><td width="20%" align="right"> <a accesskey="n" href="ch04s04.html">Next</a></td></tr></table><hr></div><div class="section" title="4.3. Message He
 aders"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2744591"></a>4.3. Message Headers</h2></div></div></div><p>AMQP specific message headers can be set on or retrieved
+      from the ServiceModel.Channels.Message using the AmqpProperties
+      type.</p><p>For example, on output:</p><pre class="programlisting">
+AmqpProperties props = new AmqpProperties();
+props.Durable = true;
+props.PropertyMap.Add("my_custom_header", new AmqpString("a custom value"));
+Message msg = Message.CreateMessage(args);
+msg.Properties.Add("AmqpProperties", amqpProperties);
+outputChannel.Send(msg);
+</pre><p>On input the headers can be accessed from the Message or extracted
+      from the operation context</p><pre class="programlisting">
+public void SayHello(string greeting)
+{
+  AmqpProperties props = (AmqpProperties) OperationContext.
+  Current.IncomingMessageProperties["AmqpProperties"];
+  AmqpString extra = (AmqpString) props.PropertyMap["my_custom_header"];
+  Console.WriteLine("Service received: {0} and {1}", greeting, extra);
+}
+</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.2. Endpoints </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 4.4. Security</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s04.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s04.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s04.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s04.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,21 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>4.4. Security</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch04.html" title="Chapter 4. Using the Qpid WCF client"><link rel="prev" href="ch04s03.html" title="4.3. Message Headers"><link rel="next" href="ch04s05.html" title="4.5. Transactions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.4. Security</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s03.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Using the Qpid WCF client</th><td width="20%" align="right"> <a accesskey="n" href="ch04s05.html">Next</a></td></tr></table><hr></div><div class="section" title="4.4. Security"><div
  class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2744626"></a>4.4. Security</h2></div></div></div><p>To engage TLS/SSL:</p><pre class="programlisting">
+binding.Security.Mode = AmqpSecurityMode.Transport;
+binding.Security.Transport.UseSSL = true;
+binding.BrokerPort = 5671;
+</pre><p>Currently the WCF client only provides SASL PLAIN (i.e. username and
+      password) authentication.  To provide a username and password, you can
+      set the DefaultAmqpCredential value in the binding.  This value can be
+      overridden or set for a binding's channel factories and listeners,
+      either by setting the ClientCredentials as a binding parameter, or by
+      using an AmqpCredential as a binding parameter.  The search order for
+      credentials is the AmqpCredential binding parameter, followed by the
+      ClientCredentials (unless IgnoreEndpointClientCredentials has been
+      set), and finally defaulting to the DefaultAmqpCredential of the
+      binding itself.  Here is a sample using ClientCredentials:</p><pre class="programlisting">
+ClientCredentials credentials = new ClientCredentials();
+credentials.UserName.UserName = "guest";
+credentials.UserName.Password = "guest";
+bindingParameters = new BindingParameterCollection();
+bindingParameters.Add(credentials);
+readerFactory = binding.BuildChannelFactory&lt;IInputChannel&gt;(bindingParameters);
+</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.3. Message Headers </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 4.5. Transactions</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s05.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s05.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s05.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch04s05.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,43 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>4.5. Transactions</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch04.html" title="Chapter 4. Using the Qpid WCF client"><link rel="prev" href="ch04s04.html" title="4.4. Security"><link rel="next" href="ch05.html" title="Chapter 5. The .NET Binding for the C++ Messaging Client"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.5. Transactions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s04.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Using the Qpid WCF client</th><td width="20%" align="right"> <a accesskey="n" href="ch05.html">Next</a></td></tr></table><hr></div><div class="s
 ection" title="4.5. Transactions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2744682"></a>4.5. Transactions</h2></div></div></div><p>The WCF channel provides a transaction resource manager
+      module and a recovery module that together provide distributed
+      transaction support with one-phase optimization.  Some
+      configuration is required on Windows machines to enable
+      transaction support (see your installation notes or top level
+      ReadMe.txt file for instructions).  Once properly configured,
+      the Qpid WCF channel acts as any other System.Transactions aware
+      resource, capable of participating in explicit or implicit
+      transactions.</p><p>Server code:</p><pre class="programlisting">
+[OperationBehavior(TransactionScopeRequired = true,
+                   TransactionAutoComplete = true)]
+
+public void SayHello(string greeting)
+{
+  // increment ExactlyOnceReceived counter on DB
+
+  // Success: transaction auto completes:
+}
+</pre><p>Because this operation involves two transaction resources, the
+      database and the AMQP message broker, this operates as a full two
+      phase commit transaction managed by the Distributed Transaction
+      Coordinator service.  If the transaction proceeds without error,
+      both ExactlyOnceReceived is incremented in the database and the AMQP
+      message is consumed from the broker.  Otherwise, ExactlyOnceReceived is
+      unchanged and AMQP message is returned to its queue on the broker.</p><p>For the client code a few changes are made to the non-transacted
+      example.  For "exactly once" semantics, we set the AMQP "Durable"
+      message property and enclose the transacted activities in a
+      TransactionScope:</p><pre class="programlisting">
+AmqpProperties myDefaults = new AmqpProperties();
+myDefaults.Durable = true;
+amqpBinding.DefaultMessageProperties = myDefaults;
+ChannelFactory&lt;IHelloService&gt; channelFactory =
+new ChannelFactory&lt;IHelloService&gt;(amqpBinding, clientEndpoint);
+IHelloService clientProxy = channelFactory.CreateChannel();
+
+using (TransactionScope ts = new TransactionScope())
+{
+   AmqpProperties amqpProperties = new AmqpProperties();
+   clientProxy.SayHello("Greetings from WCF client");
+   // increment ExactlyOnceSent counter on DB
+   ts.Complete();
+}
+</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.4. Security </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. The .NET Binding for the C++ Messaging Client</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,41 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 5. The .NET Binding for the C++ Messaging Client</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="index.html" title="Programming in Apache Qpid"><link rel="prev" href="ch04s05.html" title="4.5. Transactions"><link rel="next" href="ch05s02.html" title="5.2. .NET Binding for the C++ Messaging Client Examples"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. The .NET Binding for the C++ Messaging Client</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s05.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch05s02.html">Next</a>
 </td></tr></table><hr></div><div class="chapter" title="Chapter 5. The .NET Binding for the C++ Messaging Client"><div class="titlepage"><div><div><h2 class="title"><a name="id2744744"></a>Chapter 5. The .NET Binding for the C++ Messaging Client</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch05.html#id2744767">5.1. .NET Binding for the C++ Messaging Client Component Architecture</a></span></dt><dt><span class="section"><a href="ch05s02.html">5.2. .NET Binding for the C++ Messaging Client Examples</a></span></dt><dt><span class="section"><a href="ch05s03.html">5.3. .NET Binding Class Mapping to Underlying C++ Messaging API</a></span></dt><dd><dl><dt><span class="section"><a href="ch05s03.html#id2745354">5.3.1. .NET Binding for the C++ Messaging API Class: Address</a></span></dt><dt><span class="section"><a href="ch05s03.html#id2745965">5.3.2. .NET Binding for the C++ Messaging API Class: Connection</a></span>
 </dt><dt><span class="section"><a href="ch05s03.html#id2746615">5.3.3. .NET Binding for the C++ Messaging API Class: Duration</a></span></dt><dt><span class="section"><a href="ch05s03.html#id2747043">5.3.4. .NET Binding for the C++ Messaging API Class: FailoverUpdates</a></span></dt><dt><span class="section"><a href="ch05s03.html#id2747225">5.3.5. .NET Binding for the C++ Messaging API Class: Message</a></span></dt><dt><span class="section"><a href="ch05s03.html#id2748428">5.3.6. .NET Binding for the C++ Messaging API Class: Receiver</a></span></dt><dt><span class="section"><a href="ch05s03.html#id2749078">5.3.7. .NET Binding for the C++ Messaging API Class: Sender</a></span></dt><dt><span class="section"><a href="ch05s03.html#id2749561">5.3.8. .NET Binding for the C++ Messaging API Class: Session</a></span></dt><dt><span class="section"><a href="ch05s03.html#id2750531">5.3.9. .NET Binding Class: SessionReceiver</a></span></dt></dl></dd></dl></div><p>
+      The .NET Binding for the C++ Qpid Messaging Client is a library that gives
+      any .NET program access to Qpid C++ Messaging objects and methods.
+    </p><div class="section" title="5.1. .NET Binding for the C++ Messaging Client Component Architecture"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2744767"></a>5.1. .NET Binding for the C++ Messaging Client Component Architecture</h2></div></div></div><pre class="programlisting">
+                      +----------------------------+
+                      | Dotnet examples            |
+                      | Managed C#                 |
+                      +------+---------------+-----+
+                             |               |
+                             V               |
+        +---------------------------+        |
+        | .NET Managed Callback     |        |
+        | org.apache.qpid.messaging.|        |
+        | sessionreceiver.dll       |        |
+        +----------------------+----+        |
+                               |             |
+managed                        V             V
+(.NET)                 +--------------------------------+
+:::::::::::::::::::::::| .NET Binding Library           |::::::::::::
+unmanaged              | org.apache.qpid.messaging.dll  |
+(Native Win32/64)      +---------------+----------------+
+                                       |
+                                       |
+      +----------------+               |
+      | Native examples|               |
+      | Unmanaged C++  |               |
+      +--------+-------+               |
+               |                       |
+               V                       V
+          +----------------------------------+
+          | QPID Messaging C++ Libraries     |
+          | qpid*.dll qmf*.dll               |
+          +--------+--------------+----------+
+</pre><p>This diagram illustrates the code and library components of the binding
+and the hierarchical relationships between them.</p><div class="table"><a name="table-Dotnet-Binding-Component-Architecture"></a><p class="title"><b>Table 5.1. .NET Binding for the C++ Messaging Client Component Architecture</b></p><div class="table-contents"><table summary=".NET Binding for the C++ Messaging Client Component Architecture" border="1"><colgroup><col><col></colgroup><thead><tr><th>Component Name</th><th>Component Function</th></tr></thead><tbody><tr><td>QPID Messaging C++ Libraries</td><td>The QPID Messaging C++ core run time system</td></tr><tr><td>Unmanaged C++ Example Source Programs</td><td>Ordinary C++ programs that illustrate using qpid/cpp Messaging directly
+		in a native Windows environment.</td></tr><tr><td>.NET Messaging Binding Library</td><td>The .NET Messaging Binding library provides interoprability between
+		managed .NET programs and the unmanaged, native Qpid Messaging C++ core
+		run time system. .NET programs create a Reference to this library thereby
+		exposing all of the native C++ Messaging functionality to programs
+		written in any .NET language.</td></tr><tr><td>.NET Messaging Managed Callback Library</td><td>An extension of the .NET Messaging Binding Library that provides message
+		callbacks in a managed .NET environment.</td></tr><tr><td>Managed C# .NET Example Source Programs</td><td>Various C# example programs that illustrate using .NET Binding for C++ Messaging in the .NET environment.</td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s05.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch05s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.5. Transactions </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 5.2. .NET Binding for the C++ Messaging Client Examples</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05s02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05s02.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05s02.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch05s02.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,18 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>5.2. .NET Binding for the C++ Messaging Client Examples</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch05.html" title="Chapter 5. The .NET Binding for the C++ Messaging Client"><link rel="prev" href="ch05.html" title="Chapter 5. The .NET Binding for the C++ Messaging Client"><link rel="next" href="ch05s03.html" title="5.3. .NET Binding Class Mapping to Underlying C++ Messaging API"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">5.2. .NET Binding for the C++ Messaging Client Examples</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch05.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Th
 e .NET Binding for the C++ Messaging Client</th><td width="20%" align="right"> <a accesskey="n" href="ch05s03.html">Next</a></td></tr></table><hr></div><div class="section" title="5.2. .NET Binding for the C++ Messaging Client Examples"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2744902"></a>5.2. .NET Binding for the C++ Messaging Client Examples</h2></div></div></div><p>This chapter describes the various sample programs that
+      are available to illustrate common Qpid Messaging usage.</p><div class="table"><a name="table-Dotnet-Binding-Example-Client-Server"></a><p class="title"><b>Table 5.2. Example : Client - Server</b></p><div class="table-contents"><table summary="Example : Client - Server" border="1"><colgroup><col><col></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.server</td><td>Creates a Receiver and listens for messages.
+		Upon message reception the message content is converted to upper case
+		and forwarded to the received message's ReplyTo address.</td></tr><tr><td>csharp.example.client</td><td>Sends a series of messages to the Server and prints the original message
+		content and the received message content.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-Dotnet-Binding-Example-MapSender-MapReceiver"></a><p class="title"><b>Table 5.3. Example : Map Sender &#8211; Map Receiver</b></p><div class="table-contents"><table summary="Example : Map Sender &#8211; Map Receiver" border="1"><colgroup><col><col></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.map.receiver</td><td>Creates a Receiver and listens for a map message.
+		Upon message reception the message is decoded and displayed on the console.</td></tr><tr><td>csharp.map.sender</td><td>Creates a map message and sends it to map.receiver.
+		The map message contains values for every supported .NET Messaging
+		Binding data type.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-Dotnet-Binding-Example-Spout-Drain"></a><p class="title"><b>Table 5.4. Example : Spout - Drain</b></p><div class="table-contents"><table summary="Example : Spout - Drain" border="1"><colgroup><col><col></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.spout</td><td>Spout is a more complex example of code that generates a series of messages
+		and sends them to peer program Drain. Flexible command line arguments allow
+		the user to specify a variety of message and program options.</td></tr><tr><td>csharp.example.drain</td><td>Drain is a more complex example of code that receives a series of messages
+		and displays their contents on the console.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-Dotnet-Binding-Example-CallbackSender-CallbackReceiver"></a><p class="title"><b>Table 5.5. Example : Map Callback Sender &#8211; Map Callback Receiver</b></p><div class="table-contents"><table summary="Example : Map Callback Sender &#8211; Map Callback Receiver" border="1"><colgroup><col><col></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.map.callback.receiver</td><td>Creates a Receiver and listens for a map message.
+		Upon message reception the message is decoded and displayed on the console.
+		This example illustrates the use of the C# managed code callback mechanism
+		provided by .NET Messaging Binding Managed Callback Library.</td></tr><tr><td>csharp.map.callback.sender</td><td>Creates a map message and sends it to map_receiver.
+		The map message contains values for every supported .NET Messaging
+		Binding data type.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-Dotnet-Binding-Example-DeclareQueues"></a><p class="title"><b>Table 5.6. Example - Declare Queues</b></p><div class="table-contents"><table summary="Example - Declare Queues" border="1"><colgroup><col><col></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.declare_queues</td><td>A program to illustrate creating objects on a broker.
+		This program creates a queue used by spout and drain.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-Dotnet-Binding-Example-DirectSender-DirectReceiver"></a><p class="title"><b>Table 5.7. Example: Direct Sender - Direct Receiver</b></p><div class="table-contents"><table summary="Example: Direct Sender - Direct Receiver" border="1"><colgroup><col><col></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.direct.receiver</td><td>Creates a Receiver and listens for a messages.
+		Upon message reception the message is decoded and displayed on the console.</td></tr><tr><td>csharp.direct.sender</td><td> Creates a series of messages and sends them to csharp.direct.receiver.</td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-Dotnet-Binding-Example-Helloworld"></a><p class="title"><b>Table 5.8. Example: Hello World</b></p><div class="table-contents"><table summary="Example: Hello World" border="1"><colgroup><col><col></colgroup><thead><tr><th>Example Name</th><th>Example Description</th></tr></thead><tbody><tr><td>csharp.example.helloworld</td><td>A program to send a message and to receive the same message.</td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td wid
 th="40%" align="right"> <a accesskey="n" href="ch05s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. The .NET Binding for the C++ Messaging Client </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 5.3. .NET Binding Class Mapping to Underlying C++ Messaging API</td></tr></table></div></body></html>



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