This is an automated email from the ASF dual-hosted git repository.

robbie pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/qpid-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 3517028  Update site content for qpid-jms 1.1.0
3517028 is described below

commit 3517028cdae16b51012ffc08e4a6bbdbbdc34857
Author: Robbie Gemmell <rob...@apache.org>
AuthorDate: Fri Jul 9 18:01:02 2021 +0100

    Update site content for qpid-jms 1.1.0
---
 content/components/jms/index.html                  |   8 +-
 content/dashboard.html                             |   2 +-
 content/documentation.html                         |   4 +-
 content/download.html                              |   6 +-
 content/maven.html                                 |   2 +-
 content/releases/index.html                        |   3 +-
 content/releases/qpid-jms-0.37.0/index.html        |   2 +-
 content/releases/qpid-jms-0.38.0/index.html        |   2 +-
 content/releases/qpid-jms-0.39.0/index.html        |   2 +-
 content/releases/qpid-jms-0.40.0/index.html        |   2 +-
 content/releases/qpid-jms-0.41.0/index.html        |   2 +-
 content/releases/qpid-jms-0.42.0/index.html        |   2 +-
 content/releases/qpid-jms-0.43.0/index.html        |   2 +-
 content/releases/qpid-jms-0.44.0/index.html        |   2 +-
 content/releases/qpid-jms-0.45.0/index.html        |   2 +-
 content/releases/qpid-jms-0.46.0/index.html        |   2 +-
 content/releases/qpid-jms-0.47.0/index.html        |   2 +-
 content/releases/qpid-jms-0.48.0/index.html        |   2 +-
 content/releases/qpid-jms-0.49.0/index.html        |   2 +-
 content/releases/qpid-jms-0.50.0/index.html        |   2 +-
 content/releases/qpid-jms-0.51.0/index.html        |   2 +-
 content/releases/qpid-jms-0.52.0/index.html        |   2 +-
 content/releases/qpid-jms-0.53.0/index.html        |   2 +-
 content/releases/qpid-jms-0.54.0/index.html        |   2 +-
 content/releases/qpid-jms-0.55.0/index.html        |   2 +-
 content/releases/qpid-jms-0.56.0/index.html        |   2 +-
 content/releases/qpid-jms-0.57.0/index.html        |   2 +-
 content/releases/qpid-jms-0.58.0/index.html        |   2 +-
 content/releases/qpid-jms-0.59.0/index.html        |   2 +-
 content/releases/qpid-jms-1.0.0/index.html         |   2 +-
 .../qpid-jms-1.1.0/building.html}                  |  91 ++--
 content/releases/qpid-jms-1.1.0/docs/index.html    | 584 +++++++++++++++++++++
 .../{qpid-jms-1.0.0 => qpid-jms-1.1.0}/index.html  |  24 +-
 .../release-notes.html}                            |  72 +--
 input/_transom_config.py                           |   2 +-
 input/releases/index.md                            |   3 +-
 input/releases/qpid-jms-1.1.0/building.md          |  46 ++
 input/releases/qpid-jms-1.1.0/docs/index.md        | 386 ++++++++++++++
 input/releases/qpid-jms-1.1.0/index.md             |  68 +++
 input/releases/qpid-jms-1.1.0/release-notes.md     |  38 ++
 40 files changed, 1219 insertions(+), 168 deletions(-)

diff --git a/content/components/jms/index.html 
b/content/components/jms/index.html
index 3674118..0ebe40d 100644
--- a/content/components/jms/index.html
+++ b/content/components/jms/index.html
@@ -147,9 +147,9 @@ API</li>
 
 <ul>
 <li><a 
href="http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html";>API 
reference</a></li>
-<li><a 
href="https://github.com/apache/qpid-jms/tree/1.0.0/qpid-jms-examples";>Examples</a></li>
-<li><a href="/releases/qpid-jms-1.0.0/docs/index.html">Configuration</a></li>
-<li><a href="/releases/qpid-jms-1.0.0/building.html">Building Qpid JMS</a></li>
+<li><a 
href="https://github.com/apache/qpid-jms/tree/1.1.0/qpid-jms-examples";>Examples</a></li>
+<li><a href="/releases/qpid-jms-1.1.0/docs/index.html">Configuration</a></li>
+<li><a href="/releases/qpid-jms-1.1.0/building.html">Building Qpid JMS</a></li>
 </ul>
 
 </div>
@@ -163,7 +163,7 @@ API</li>
 <h2 id="releases">Releases</h2>
 
 <ul>
-<li><a href="/releases/qpid-jms-1.0.0">Qpid JMS 1.0.0</a></li>
+<li><a href="/releases/qpid-jms-1.1.0">Qpid JMS 1.1.0</a></li>
 <li><a href="/releases/index.html#past-releases">Past releases</a></li>
 </ul>
 
diff --git a/content/dashboard.html b/content/dashboard.html
index 3504e54..c66831d 100644
--- a/content/dashboard.html
+++ b/content/dashboard.html
@@ -169,7 +169,7 @@ 
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
 </tr>
 <tr>
   <td><a href="/components/jms/index.html">Qpid JMS</a></td>
-  <td><a href="/releases/qpid-jms-1.0.0">1.0.0</a></td>
+  <td><a href="/releases/qpid-jms-1.1.0">1.1.0</a></td>
   <td><a href="https://issues.apache.org/jira/projects/QPIDJMS";>Summary</a> 
&#x2022; <a 
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+and+resolution+is+null";>Open
 issues</a> &#x2022; <a 
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS";>All 
issues</a> &#x2022; <a 
href="https://issues.apache.org/jira/secure/CreateIssue!default.jspa?pid=12314524";>Create
 issue</a></td>
   <td><a 
href="https://builds.apache.org/blue/organizations/jenkins/Qpid%2FQpid-JMS-Test-JDK11/activity";><img
 src="https://builds.apache.org/buildStatus/icon?job=Qpid/Qpid-JMS-Test-JDK11"; 
height="20"/></a> <a href="https://travis-ci.com/github/apache/qpid-jms";><img 
src="https://travis-ci.com/apache/qpid-jms.svg?branch=main"; height="20"/></a> 
<a 
href="https://builds.apache.org/blue/organizations/jenkins/Qpid%2FQpid-JMS-Test-JDK11-Windows/activity";><img
 src="https://builds.apache.org/build [...]
   <td><a href="https://gitbox.apache.org/repos/asf/qpid-jms.git";>Git</a> 
&#x2022; <a href="https://github.com/apache/qpid-jms";>GitHub</a></td>
diff --git a/content/documentation.html b/content/documentation.html
index ff11b8e..809f09e 100644
--- a/content/documentation.html
+++ b/content/documentation.html
@@ -147,9 +147,9 @@ You can find older versions with our
 
 <ul>
 <li><a href="/components/jms/index.html">Overview</a></li>
-<li><a href="/releases/qpid-jms-1.0.0/docs/index.html">Configuration</a></li>
+<li><a href="/releases/qpid-jms-1.1.0/docs/index.html">Configuration</a></li>
 <li><a 
href="http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html";>API 
reference</a></li>
-<li><a 
href="https://github.com/apache/qpid-jms/tree/1.0.0/qpid-jms-examples";>Examples</a></li>
+<li><a 
href="https://github.com/apache/qpid-jms/tree/1.1.0/qpid-jms-examples";>Examples</a></li>
 </ul>
 
 </section>
diff --git a/content/download.html b/content/download.html
index 25a8e1e..cd98bb6 100644
--- a/content/download.html
+++ b/content/download.html
@@ -153,9 +153,9 @@ 
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
 </tr>
 <tr>
   <td><a href="/components/jms/index.html">Qpid JMS</a> (AMQP 1.0)</td>
-  <td>1.0.0</td>
-  <td><a 
href="https://www.apache.org/dyn/closer.lua?filename=qpid/jms/1.0.0/apache-qpid-jms-1.0.0-src.tar.gz&amp;action=download";>Source</a>
 (<a 
href="https://downloads.apache.org/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-src.tar.gz.asc";>ASC</a>,
 <a 
href="https://downloads.apache.org/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-src.tar.gz.sha512";>SHA512</a>),
  <a 
href="https://www.apache.org/dyn/closer.lua?filename=qpid/jms/1.0.0/apache-qpid-jms-1.0.0-bin.tar.gz&amp;action=download";>Binary</a>
  (<a  [...]
-  <td><a href="/releases/qpid-jms-1.0.0/index.html">Release Page</a>, <a 
href="maven.html">Maven</a></td>
+  <td>1.1.0</td>
+  <td><a 
href="https://www.apache.org/dyn/closer.lua?filename=qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz&amp;action=download";>Source</a>
 (<a 
href="https://downloads.apache.org/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz.asc";>ASC</a>,
 <a 
href="https://downloads.apache.org/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz.sha512";>SHA512</a>),
  <a 
href="https://www.apache.org/dyn/closer.lua?filename=qpid/jms/1.1.0/apache-qpid-jms-1.1.0-bin.tar.gz&amp;action=download";>Binary</a>
  (<a  [...]
+  <td><a href="/releases/qpid-jms-1.1.0/index.html">Release Page</a>, <a 
href="maven.html">Maven</a></td>
 </tr>
 <tr>
   <td>&#160;</td>
diff --git a/content/maven.html b/content/maven.html
index f98caa8..2b06752 100644
--- a/content/maven.html
+++ b/content/maven.html
@@ -124,7 +124,7 @@ 
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
 <span class="nt">&lt;dependency&gt;</span>
   <span class="nt">&lt;groupId&gt;</span>org.apache.qpid<span 
class="nt">&lt;/groupId&gt;</span>
   <span class="nt">&lt;artifactId&gt;</span>qpid-jms-client<span 
class="nt">&lt;/artifactId&gt;</span>
-  <span class="nt">&lt;version&gt;</span>1.0.0<span 
class="nt">&lt;/version&gt;</span>
+  <span class="nt">&lt;version&gt;</span>1.1.0<span 
class="nt">&lt;/version&gt;</span>
 <span class="nt">&lt;/dependency&gt;</span>
 </pre></div>
 
diff --git a/content/releases/index.html b/content/releases/index.html
index ed429fa..a3cd25b 100644
--- a/content/releases/index.html
+++ b/content/releases/index.html
@@ -126,11 +126,11 @@ the
 <div class="two-column">
 
 <ul>
+<li><a href="qpid-jms-1.1.0/index.html">Qpid JMS 1.1.0</a>, July 2021</li>
 <li><a href="qpid-dispatch-1.16.1/index.html">Qpid Dispatch 1.16.1</a>, July 
2021</li>
 <li><a href="qpid-proton-0.35.0/index.html">Qpid Proton 0.35.0</a>, July 
2021</li>
 <li><a href="qpid-broker-j-8.0.5/index.html">Qpid Broker-J 8.0.5</a>, June 
2021</li>
 <li><a href="qpid-protonj2-1.0.0-M2/index.html">Qpid ProtonJ2 1.0.0-M2</a>, 
May 2021</li>
-<li><a href="qpid-jms-1.0.0/index.html">Qpid JMS 1.0.0</a>, May 2021</li>
 <li><a href="qpid-jms-0.59.0/index.html">Qpid JMS 0.59.0</a>, May 2021</li>
 <li><a href="qpid-broker-j-7.1.12/index.html">Qpid Broker-J 7.1.12</a>, 
February 2021</li>
 <li><a href="qpid-proton-j-0.33.8/index.html">Qpid Proton-J 0.33.8</a>, 
November 2020</li>
@@ -147,6 +147,7 @@ the
 <div class="two-column">
 
 <ul>
+<li><a href="qpid-jms-1.0.0/index.html">Qpid JMS 1.0.0</a>, May 2021</li>
 <li><a href="qpid-dispatch-1.16.0/index.html">Qpid Dispatch 1.16.0</a>, May 
2021</li>
 <li><a href="qpid-protonj2-1.0.0-M1/index.html">Qpid ProtonJ2 1.0.0-M1</a>, 
May 2021</li>
 <li><a href="qpid-proton-0.34.0/index.html">Qpid Proton 0.34.0</a>, April 
2021</li>
diff --git a/content/releases/qpid-jms-0.37.0/index.html 
b/content/releases/qpid-jms-0.37.0/index.html
index 47a2a1f..5828473 100644
--- a/content/releases/qpid-jms-0.37.0/index.html
+++ b/content/releases/qpid-jms-0.37.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.37.0" === "1.0.0") {
+      if ("0.37.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.38.0/index.html 
b/content/releases/qpid-jms-0.38.0/index.html
index 06267f8..5f71af7 100644
--- a/content/releases/qpid-jms-0.38.0/index.html
+++ b/content/releases/qpid-jms-0.38.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.38.0" === "1.0.0") {
+      if ("0.38.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.39.0/index.html 
b/content/releases/qpid-jms-0.39.0/index.html
index b0583df..499aa78 100644
--- a/content/releases/qpid-jms-0.39.0/index.html
+++ b/content/releases/qpid-jms-0.39.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.39.0" === "1.0.0") {
+      if ("0.39.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.40.0/index.html 
b/content/releases/qpid-jms-0.40.0/index.html
index 73f9984..6a9bef4 100644
--- a/content/releases/qpid-jms-0.40.0/index.html
+++ b/content/releases/qpid-jms-0.40.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.40.0" === "1.0.0") {
+      if ("0.40.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.41.0/index.html 
b/content/releases/qpid-jms-0.41.0/index.html
index d464c87..9059491 100644
--- a/content/releases/qpid-jms-0.41.0/index.html
+++ b/content/releases/qpid-jms-0.41.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.41.0" === "1.0.0") {
+      if ("0.41.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.42.0/index.html 
b/content/releases/qpid-jms-0.42.0/index.html
index 2ed20ed..95fac98 100644
--- a/content/releases/qpid-jms-0.42.0/index.html
+++ b/content/releases/qpid-jms-0.42.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.42.0" === "1.0.0") {
+      if ("0.42.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.43.0/index.html 
b/content/releases/qpid-jms-0.43.0/index.html
index 484f69a..d7f1f85 100644
--- a/content/releases/qpid-jms-0.43.0/index.html
+++ b/content/releases/qpid-jms-0.43.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.43.0" === "1.0.0") {
+      if ("0.43.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.44.0/index.html 
b/content/releases/qpid-jms-0.44.0/index.html
index b4bbdd2..a53f50a 100644
--- a/content/releases/qpid-jms-0.44.0/index.html
+++ b/content/releases/qpid-jms-0.44.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.44.0" === "1.0.0") {
+      if ("0.44.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.45.0/index.html 
b/content/releases/qpid-jms-0.45.0/index.html
index 9fcd5a7..78f0bf3 100644
--- a/content/releases/qpid-jms-0.45.0/index.html
+++ b/content/releases/qpid-jms-0.45.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.45.0" === "1.0.0") {
+      if ("0.45.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.46.0/index.html 
b/content/releases/qpid-jms-0.46.0/index.html
index d317fb3..987f1c7 100644
--- a/content/releases/qpid-jms-0.46.0/index.html
+++ b/content/releases/qpid-jms-0.46.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.46.0" === "1.0.0") {
+      if ("0.46.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.47.0/index.html 
b/content/releases/qpid-jms-0.47.0/index.html
index 0f2dfa3..ffe7d11 100644
--- a/content/releases/qpid-jms-0.47.0/index.html
+++ b/content/releases/qpid-jms-0.47.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.47.0" === "1.0.0") {
+      if ("0.47.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.48.0/index.html 
b/content/releases/qpid-jms-0.48.0/index.html
index e63e973..6b4933e 100644
--- a/content/releases/qpid-jms-0.48.0/index.html
+++ b/content/releases/qpid-jms-0.48.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.48.0" === "1.0.0") {
+      if ("0.48.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.49.0/index.html 
b/content/releases/qpid-jms-0.49.0/index.html
index 3094533..a2b68cb 100644
--- a/content/releases/qpid-jms-0.49.0/index.html
+++ b/content/releases/qpid-jms-0.49.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.49.0" === "1.0.0") {
+      if ("0.49.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.50.0/index.html 
b/content/releases/qpid-jms-0.50.0/index.html
index 9a525ff..42b38a9 100644
--- a/content/releases/qpid-jms-0.50.0/index.html
+++ b/content/releases/qpid-jms-0.50.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.50.0" === "1.0.0") {
+      if ("0.50.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.51.0/index.html 
b/content/releases/qpid-jms-0.51.0/index.html
index f96925d..748b4c8 100644
--- a/content/releases/qpid-jms-0.51.0/index.html
+++ b/content/releases/qpid-jms-0.51.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.51.0" === "1.0.0") {
+      if ("0.51.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.52.0/index.html 
b/content/releases/qpid-jms-0.52.0/index.html
index 093ad61..50d96a4 100644
--- a/content/releases/qpid-jms-0.52.0/index.html
+++ b/content/releases/qpid-jms-0.52.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.52.0" === "1.0.0") {
+      if ("0.52.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.53.0/index.html 
b/content/releases/qpid-jms-0.53.0/index.html
index 6fbd45f..bca7cbf 100644
--- a/content/releases/qpid-jms-0.53.0/index.html
+++ b/content/releases/qpid-jms-0.53.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.53.0" === "1.0.0") {
+      if ("0.53.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.54.0/index.html 
b/content/releases/qpid-jms-0.54.0/index.html
index ae41256..76b55a0 100644
--- a/content/releases/qpid-jms-0.54.0/index.html
+++ b/content/releases/qpid-jms-0.54.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.54.0" === "1.0.0") {
+      if ("0.54.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.55.0/index.html 
b/content/releases/qpid-jms-0.55.0/index.html
index c84e6ca..7a748c1 100644
--- a/content/releases/qpid-jms-0.55.0/index.html
+++ b/content/releases/qpid-jms-0.55.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.55.0" === "1.0.0") {
+      if ("0.55.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.56.0/index.html 
b/content/releases/qpid-jms-0.56.0/index.html
index 150369a..7ff6390 100644
--- a/content/releases/qpid-jms-0.56.0/index.html
+++ b/content/releases/qpid-jms-0.56.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.56.0" === "1.0.0") {
+      if ("0.56.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.57.0/index.html 
b/content/releases/qpid-jms-0.57.0/index.html
index 4c497b6..ea01136 100644
--- a/content/releases/qpid-jms-0.57.0/index.html
+++ b/content/releases/qpid-jms-0.57.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.57.0" === "1.0.0") {
+      if ("0.57.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.58.0/index.html 
b/content/releases/qpid-jms-0.58.0/index.html
index 8a78d71..67661e7 100644
--- a/content/releases/qpid-jms-0.58.0/index.html
+++ b/content/releases/qpid-jms-0.58.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.58.0" === "1.0.0") {
+      if ("0.58.0" === "1.1.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.59.0/index.html 
b/content/releases/qpid-jms-0.59.0/index.html
index 3544cfa..74feeb1 100644
--- a/content/releases/qpid-jms-0.59.0/index.html
+++ b/content/releases/qpid-jms-0.59.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("0.59.0" === "1.0.0") || "0.59.0" === "0.59.0") {
+      if ("0.59.0" === "1.1.0") || "0.59.0" === "0.59.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-1.0.0/index.html 
b/content/releases/qpid-jms-1.0.0/index.html
index bc11d1d..7b84426 100644
--- a/content/releases/qpid-jms-1.0.0/index.html
+++ b/content/releases/qpid-jms-1.0.0/index.html
@@ -175,7 +175,7 @@ files you download.</p>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.0.0" === "1.0.0") || "1.0.0" === "0.59.0") {
+      if ("1.0.0" === "1.1.0") || "1.0.0" === "0.59.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/components/jms/index.html 
b/content/releases/qpid-jms-1.1.0/building.html
similarity index 70%
copy from content/components/jms/index.html
copy to content/releases/qpid-jms-1.1.0/building.html
index 3674118..97c17f2 100644
--- a/content/components/jms/index.html
+++ b/content/releases/qpid-jms-1.1.0/building.html
@@ -111,86 +111,59 @@ 
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
       </div>
 
       <div id="-middle" class="panel">
-        <ul id="-path-navigation"><li><a 
href="/index.html">Home</a></li><li><a 
href="/components/index.html">Components</a></li><li>Qpid JMS</li></ul>
+        <ul id="-path-navigation"><li><a 
href="/index.html">Home</a></li><li><a 
href="/releases/index.html">Releases</a></li><li><a 
href="/releases/qpid-jms-1.1.0/index.html">Qpid JMS 1.1.0</a></li><li>Qpid 
JMS</li></ul>
 
         <div id="-middle-content">
-          <div id="-left-column">
+          <h1 id="qpid-jms">Qpid JMS</h1>
 
-<h1 id="qpid-jms">Qpid JMS</h1>
+<p><a href="https://qpid.apache.org/components/jms/";>Qpid JMS</a> is a JMS 2.0 
client that uses
+the AMQP 1.0 protocol, enabling it to interact with various AMQP 1.0 
servers.</p>
 
-<div class="feature">
+<p>Below are some quick pointers you might find useful.</p>
 
-<h2 id="jms-with-the-strength-of-amqp">JMS with the strength of AMQP</h2>
+<h2 id="building-the-code">Building the code</h2>
 
-<p>Qpid JMS is an AMQP 1.0 <a 
href="http://en.wikipedia.org/wiki/Java_Message_Service";>Java Message 
Service</a> 2.0 client built
-using <a href="/proton/index.html">Qpid Proton</a>.</p>
+<p>The project requires Maven 3. Some example commands follow.</p>
 
-<p>Qpid also provides an alternate JMS client supporting
-<a href="amqp-0-x.html">earlier AMQP versions</a>.</p>
+<p>Clean previous builds output and install all modules to local repository 
without
+running the tests:</p>
 
-</div>
+<pre><code>mvn clean install -DskipTests
+</code></pre>
 
-<h2 id="features">Features</h2>
+<p>Install all modules to the local repository after running all the tests:</p>
 
-<ul>
-<li><a 
href="https://jcp.org/aboutJava/communityprocess/mrel/jsr343/index.html";>JMS 
2.0</a>
-API</li>
-<li>Secure communication via SSL and SASL </li>
-<li>Producer flow control</li>
-<li>Failover</li>
-<li>Pure-Java implementation</li>
-</ul>
+<pre><code>mvn clean install
+</code></pre>
 
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a 
href="http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html";>API 
reference</a></li>
-<li><a 
href="https://github.com/apache/qpid-jms/tree/1.0.0/qpid-jms-examples";>Examples</a></li>
-<li><a href="/releases/qpid-jms-1.0.0/docs/index.html">Configuration</a></li>
-<li><a href="/releases/qpid-jms-1.0.0/building.html">Building Qpid JMS</a></li>
-</ul>
-
-</div>
+<p>Perform a subset tests on the packaged release artifacts without
+installing:</p>
 
-<p>For details about the AMQP 0-x JMS client, look <a 
href="amqp-0-x.html">here</a>.</p>
+<pre><code>mvn clean verify -Dtest=TestNamePattern*
+</code></pre>
 
-</div>
+<p>Execute the tests and produce code coverage report:</p>
 
-<div id="-right-column" class="right-column-adjusted">
+<pre><code>mvn clean test jacoco:report
+</code></pre>
 
-<h2 id="releases">Releases</h2>
+<h2 id="examples">Examples</h2>
 
-<ul>
-<li><a href="/releases/qpid-jms-1.0.0">Qpid JMS 1.0.0</a></li>
-<li><a href="/releases/index.html#past-releases">Past releases</a></li>
-</ul>
+<p>First build and install all the modules as detailed above (if running 
against
+a source checkout/release, rather than against released binaries) and then
+consult the README in the qpid-jms-examples module itself.</p>
 
-<h2 id="issues">Issues</h2>
-
-<ul>
-<li><a 
href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12314524&amp;issuetype=1&amp;priority=3&amp;summary=[Enter%20a%20brief%20description]";>Report
 a bug</a></li>
-<li><a 
href="https://issues.apache.org/jira/secure/CreateIssue.jspa?pid=12314524&amp;issuetype=4&amp;priority=3";>Request
 an improvement</a></li>
-<li><form id="-jira-goto-form">Go to issue <input name="jira" 
value="QPIDJMS-"/></form></li>
-<li><a href="https://issues.apache.org/jira/browse/QPIDJMS";>JIRA project 
page</a></li>
-</ul>
-
-<h2 id="source-code">Source code</h2>
+<h2 id="documentation">Documentation</h2>
 
-<ul>
-<li><a href="https://github.com/apache/qpid-jms";>Browse via GitHub</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-jms.git";>Git clone 
URL</a></li>
-</ul>
+<p>Documentation source can be found in the qpid-jms-docs module, with a 
published
+version available on the <a 
href="https://qpid.apache.org/components/jms/";>website</a>.</p>
 
-<h2 id="resources">Resources</h2>
+<h2 id="distribution-assemblies">Distribution assemblies</h2>
 
-<ul>
-<li><a href="security.html">Security</a></li>
-<li><a href="amqp-0-x.html">AMQP 0-x JMS Client</a></li>
-</ul>
+<p>After building the modules, src and binary distribution assemblies can be 
found at:</p>
 
-</div>
+<pre><code>apache-qpid-jms/target
+</code></pre>
 
 
           <hr/>
diff --git a/content/releases/qpid-jms-1.1.0/docs/index.html 
b/content/releases/qpid-jms-1.1.0/docs/index.html
new file mode 100644
index 0000000..90e3257
--- /dev/null
+++ b/content/releases/qpid-jms-1.1.0/docs/index.html
@@ -0,0 +1,584 @@
+<!DOCTYPE html>
+<!--
+ -
+ - 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.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en">
+  <head>
+    <title>Client configuration - Apache Qpid&#8482;</title>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+    <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+    <script type="text/javascript">var _deferredFunctions = [];</script>
+    <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+    <!--[if lte IE 8]>
+      <link rel="stylesheet" href="/ie.css" type="text/css"/>
+      <script type="text/javascript" src="/html5shiv.js"></script>
+    <![endif]-->
+
+    <!-- Redirects for `go get` and godoc.org -->
+    <meta name="go-import"
+          content="qpid.apache.org git 
https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+    <meta name="go-source"
+          content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+  </head>
+  <body>
+    <div id="-content">
+      <div id="-top" class="panel">
+        <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+        <a id="-search-link"><img width="22" height="16" src="" 
alt="Search"/></a>
+
+        <ul id="-global-navigation">
+          <li><a id="-logotype" href="/index.html">Apache 
Qpid<sup>&#8482;</sup></a></li>
+          <li><a href="/documentation.html">Documentation</a></li>
+          <li><a href="/download.html">Download</a></li>
+          <li><a href="/discussion.html">Discussion</a></li>
+        </ul>
+      </div>
+
+      <div id="-menu" class="panel" style="display: none;">
+        <div class="flex">
+          <section>
+            <h3>Project</h3>
+
+            <ul>
+              <li><a href="/overview.html">Overview</a></li>
+              <li><a href="/components/index.html">Components</a></li>
+              <li><a href="/releases/index.html">Releases</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Messaging APIs</h3>
+
+            <ul>
+              <li><a href="/proton/index.html">Qpid Proton</a></li>
+              <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+              <li><a href="/components/messaging-api/index.html">Qpid 
Messaging API</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Servers and tools</h3>
+
+            <ul>
+              <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+              <li><a href="/components/cpp-broker/index.html">C++ 
broker</a></li>
+              <li><a href="/components/dispatch-router/index.html">Dispatch 
router</a></li>
+            </ul>
+          </section>
+
+          <section>
+            <h3>Resources</h3>
+
+            <ul>
+              <li><a href="/dashboard.html">Dashboard</a></li>
+              <li><a 
href="https://cwiki.apache.org/confluence/display/qpid/Index";>Wiki</a></li>
+              <li><a href="/resources.html">More resources</a></li>
+            </ul>
+          </section>
+        </div>
+      </div>
+
+      <div id="-search" class="panel" style="display: none;">
+        <form action="http://www.google.com/search"; method="get">
+          <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+          <input type="text" name="q" maxlength="255" autofocus="autofocus" 
tabindex="1"/>
+          <button type="submit">Search</button>
+          <a href="/search.html">More ways to search</a>
+        </form>
+      </div>
+
+      <div id="-middle" class="panel">
+        <ul id="-path-navigation"><li><a 
href="/index.html">Home</a></li><li><a 
href="/releases/index.html">Releases</a></li><li><a 
href="/releases/qpid-jms-1.1.0/index.html">Qpid JMS 1.1.0</a></li><li>Client 
configuration</li></ul>
+
+        <div id="-middle-content">
+          <h1 id="client-configuration">Client configuration</h1>
+
+<p>This file details various configuration options for the client, such as how 
to configure and create a JNDI InitialContext, the syntax for its related 
configuration, and various URI options that can be set when defining a 
ConnectionFactory.</p>
+
+<h2 id="configuring-a-jndi-initialcontext">Configuring a JNDI 
InitialContext</h2>
+
+<p>Applications use a JNDI InitialContext, itself obtained from an 
InitialContextFactory, to look up JMS objects such as ConnectionFactory. The 
Qpid JMS client provides an implementation of the InitialContextFactory in 
class <em>org.apache.qpid.jms.jndi.JmsInitialContextFactory</em>. This may be 
configured and used in three main ways:</p>
+
+<ol>
+<li><p>Via jndi.properties file on the Java Classpath.</p>
+
+<p>By including a file named jndi.properties on the Classpath and setting the 
<em>java.naming.factory.initial</em> property
+to value <em>org.apache.qpid.jms.jndi.JmsInitialContextFactory</em>, the Qpid 
InitialContextFactory implementation will
+be discovered when instantiating InitialContext object.</p>
+
+<pre><code>javax.naming.Context ctx = new javax.naming.InitialContext();
+</code></pre>
+
+<p>The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured using
+properties (the syntax for which is detailed below) either directly within the 
jndi.properties file,
+or in a separate file which is referenced in jndi.properties using the 
<em>java.naming.provider.url</em> property.</p></li>
+<li><p>Via system properties.</p>
+
+<p>By setting the <em>java.naming.factory.initial</em> system property to 
value <em>org.apache.qpid.jms.jndi.JmsInitialContextFactory</em>,
+the Qpid InitialContextFactory implementation will be discovered when 
instantiating InitialContext object.</p>
+
+<pre><code> javax.naming.Context ctx = new javax.naming.InitialContext();
+</code></pre>
+
+<p>The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured as properties in
+a file, which is passed using the <em>java.naming.provider.url</em> system 
property. The syntax for these properties is detailed
+below.</p></li>
+<li><p>Programmatically using an environment Hashtable.</p>
+
+<p>The InitialContext may also be configured directly by passing an 
environment during creation:</p>
+
+<pre><code>Hashtable&lt;Object, Object&gt; env = new Hashtable&lt;Object, 
Object&gt;();
+env.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.qpid.jms.jndi.JmsInitialContextFactory");
+javax.naming.Context context = new javax.naming.InitialContext(env);
+</code></pre>
+
+<p>The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured as properties
+(the syntax for which is detailed below), either directly within the 
environment Hashtable, or in a
+separate file which is referenced using the <em>java.naming.provider.url</em> 
property within the environment Hashtable.</p></li>
+</ol>
+
+<p>The property syntax used in the properties file or environment Hashtable is 
as follows:</p>
+
+<ul>
+<li>To define a ConnectionFactory, use format: 
<em>connectionfactory.&lt;lookup-name&gt; = &lt;connection-uri&gt;</em></li>
+<li>To define a Queue, use format: <em>queue.&lt;lookup-name&gt; = 
&lt;queue-name&gt;</em></li>
+<li>To define a Topic use format: <em>topic.&lt;lookup-name&gt; = 
&lt;topic-name&gt;</em></li>
+</ul>
+
+<p>The property values which which constitute the connection URI, queue name, 
or topic name can also utilise simple <em>${variable}</em> or 
<em>${variable:-default}</em> expansion, with these resolved in order from 
system properties, environment variables, or the properties file / environment 
Hashtable. For more details of the Connection URI, see the next section.</p>
+
+<p>As an example, consider the following properties used to define a 
ConnectionFactory, Queue, and Topic:</p>
+
+<pre><code>connectionfactory.myFactoryLookup = amqp://localhost:5672
+queue.myQueueLookup = queueA
+topic.myTopicLookup = topicA
+</code></pre>
+
+<p>These objects could then be looked up from a Context as follows:</p>
+
+<pre><code>ConnectionFactory factory = (ConnectionFactory) 
context.lookup("myFactoryLookup");
+Queue queue = (Queue) context.lookup("myQueueLookup");
+Topic topic = (Topic) context.lookup("myTopicLookup");
+</code></pre>
+
+<h2 id="connection-uri">Connection URI</h2>
+
+<p>The basic format of the clients Connection URI is as follows:</p>
+
+<pre><code>  amqp[s]://hostname:port[?option=value[&amp;option2=value...]]
+</code></pre>
+
+<p>or for WebSocket connections:</p>
+
+<pre><code> 
amqpws[s]://hostname:port[/path][?option=value[&amp;option2=value...]]
+</code></pre>
+
+<p>Where the <em>amqps</em> and <em>amqpwss</em> scheme is specified to use 
SSL/TLS, the hostname segment from the URI can be used by the JVM for the
+TLS SNI (Server Name Indication) extension in order to communicate the desired 
server hostname during a TLS handshake.
+The SNI extension will be automatically included if a Fully Qualified name 
(e.g myhost.mydomain) is specified, but not
+when an unqualified name (e.g myhost) or bare IP address are used.</p>
+
+<p>The client can be configured with a number of different settings using the 
URI while defining the ConnectionFactory, these are detailed in the following 
sections.</p>
+
+<h3 id="jms-configuration-options">JMS Configuration options</h3>
+
+<p>The options apply to the behaviour of the JMS objects such as Connection, 
Session, MessageConsumer and MessageProducer.</p>
+
+<ul>
+<li><strong>jms.username</strong> User name value used to authenticate the 
connection</li>
+<li><strong>jms.password</strong> The password value used to authenticate the 
connection</li>
+<li><strong>jms.clientID</strong> The ClientID value that is applied to the 
connection.</li>
+<li><strong>jms.forceAsyncSend</strong> Configures whether all Messages sent 
from a MessageProducer are sent asynchronously or only those Message that 
qualify such as Messages inside a transaction or non-persistent messages.</li>
+<li><strong>jms.forceSyncSend</strong> Override certain asynchronous send 
conditions and always send messages from a MessageProducer synchronously. Sends 
using a CompletionListener are not affected and are implicitly always 
asynchronous.</li>
+<li><strong>jms.forceAsyncAcks</strong> Causes all Message acknowledgments to 
be sent asynchronously.</li>
+<li><strong>jms.localMessageExpiry</strong> Controls whether MessageConsumer 
instances will locally filter expired Messages or deliver them.  By default 
this value is set to true and expired messages will be filtered.</li>
+<li><strong>jms.localMessagePriority</strong> If enabled prefetched messages 
are reordered locally based on their given Message priority value. Default is 
false.</li>
+<li><strong>jms.validatePropertyNames</strong> If message property names 
should be validated as valid Java identifiers. Default is true.</li>
+<li><strong>jms.validateSelector</strong> Controls whether local validation is 
performed on consumer message selector strings. Default is true.</li>
+<li><strong>jms.receiveLocalOnly</strong> If enabled receive calls with a 
timeout will only check a consumers local message buffer, otherwise the remote 
peer is checked to ensure there are really no messages available if the local 
timeout expires before a message arrives. Default is false, the remote is 
checked.</li>
+<li><strong>jms.receiveNoWaitLocalOnly</strong> If enabled receiveNoWait calls 
will only check a consumers local message buffer, otherwise the remote peer is 
checked to ensure there are really no messages available. Default is false, the 
remote is checked.</li>
+<li><strong>jms.queuePrefix</strong> Optional prefix value added to the name 
of any Queue created from a JMS Session.</li>
+<li><strong>jms.topicPrefix</strong> Optional prefix value added to the name 
of any Topic created from a JMS Session.</li>
+<li><strong>jms.closeTimeout</strong> Timeout value that controls how long the 
client waits on resource closure before returning. By default the client waits 
60 seconds for a normal close completion event.</li>
+<li><strong>jms.connectTimeout</strong> Timeout value that controls how long 
the client waits on Connection establishment before returning with an error. By 
default the client waits 15 seconds for a connection to be established before 
failing.</li>
+<li><strong>jms.sendTimeout</strong> Timeout value that controls how long the 
client waits on completion of a synchronous message send before returning an 
error. By default the client will wait indefinitely for a send to complete.</li>
+<li><strong>jms.requestTimeout</strong> Timeout value that controls how long 
the client waits on completion of various synchronous interactions, such as 
opening a producer or consumer, before returning an error. Does not affect 
synchronous message sends. By default the client will wait indefinitely for a 
request to complete.</li>
+<li><strong>jms.clientIDPrefix</strong> Optional prefix value that is used for 
generated Client ID values when a new Connection is created for the JMS 
ConnectionFactory.  The default prefix is 'ID:'.</li>
+<li><strong>jms.connectionIDPrefix</strong> Optional prefix value that is used 
for generated Connection ID values when a new Connection is created for the JMS 
ConnectionFactory.  This connection ID is used when logging some information 
from the JMS Connection object so a configurable prefix can make breadcrumbing 
the logs easier.  The default prefix is 'ID:'.</li>
+<li><strong>jms.populateJMSXUserID</strong> Controls whether a MessageProducer 
will populate the JMSXUserID value for each sent message using the 
authenticated username from the connection.  This value defaults to false and 
the JMSXUserID for all sent message will not be populated.</li>
+<li><strong>jms.awaitClientID</strong> Controls whether a Connection with no 
ClientID configured in the URI will wait for a ClientID being set 
programatically (or the connection being used otherwise to signal none can be 
set) before sending the AMQP connection Open. Defaults to true.</li>
+<li><strong>jms.useDaemonThread</strong> Controls whether a Connection will 
use a daemon thread for its executor. Defaults to false to ensure a non-daemon 
thread is present by default.</li>
+<li><strong>jms.tracing</strong> Sets the type name of a tracing provider to 
use for the connection(s) created by the factory. Supported values are 
"opentracing" and "noop". Default is unset, effectively noop.</li>
+</ul>
+
+<p>The Prefetch Policy controls how many messages the remote peer can send to 
the client and be held in a prefetch buffer for each consumer instance.</p>
+
+<ul>
+<li><strong>jms.prefetchPolicy.queuePrefetch</strong> defaults to 1000</li>
+<li><strong>jms.prefetchPolicy.topicPrefetch</strong> defaults to 1000</li>
+<li><strong>jms.prefetchPolicy.queueBrowserPrefetch</strong> defaults to 
1000</li>
+<li><strong>jms.prefetchPolicy.durableTopicPrefetch</strong> defaults to 
1000</li>
+<li><strong>jms.prefetchPolicy.all</strong> used to set all prefetch values at 
once.</li>
+</ul>
+
+<p>The Redelivery Policy controls how redelivered messages are handled on the 
client.</p>
+
+<ul>
+<li><strong>jms.redeliveryPolicy.maxRedeliveries</strong> controls when an 
incoming message is rejected based on the number of times it has been 
redelivered, the default value is (-1) disabled.  A value of zero would 
indicate no message redeliveries are accepted, a value of five would allow a 
message to be redelivered five times, etc.</li>
+<li><strong>jms.redeliveryPolicy.outcome</strong> controls the outcome that is 
applied to a message that is being rejected due to it having exceeded the 
configured maxRedeliveries value.  This option is configured on the URI using 
the following set of outcome options:  ACCEPTED, REJECTED, RELEASED, 
MODIFIED_FAILED and MODIFIED_FAILED_UNDELIVERABLE. The default outcome value is 
MODIFIED_FAILED_UNDELIVERABLE.</li>
+</ul>
+
+<p>The MessageID Policy controls the type of the Message ID assigned to 
messages sent from the client.</p>
+
+<ul>
+<li><strong>jms.messageIDPolicy.messageIDType</strong> By default a generated 
String value is used for the MessageID on outgoing messages. Other available 
types are UUID, UUID_STRING, and PREFIXED_UUID_STRING.</li>
+</ul>
+
+<p>The Presettle Policy controls when a producer or consumer instance will be 
configured to use AMQP presettled messaging semantics.</p>
+
+<ul>
+<li><strong>jms.presettlePolicy.presettleAll</strong> when true all producers 
and non-transacted consumers created operate in presettled mode, defaults to 
false.</li>
+<li><strong>jms.presettlePolicy.presettleProducers</strong> when true all 
producers operate in presettled mode, defaults to false.</li>
+<li><strong>jms.presettlePolicy.presettleTopicProducers</strong> when true any 
producer that is sending to a Topic or Temporary Topic destination will operate 
in presettled mode, defaults to false.</li>
+<li><strong>jms.presettlePolicy.presettleQueueProducers</strong> when true any 
producer that is sending to a Queue or Temporary Queue destination will operate 
in presettled mode, defaults to false.</li>
+<li><strong>jms.presettlePolicy.presettleTransactedProducers</strong> when 
true any producer that is created in a transacted Session will operate in 
presettled mode, defaults to false.</li>
+<li><strong>jms.presettlePolicy.presettleConsumers</strong> when true all 
consumers operate in presettled mode, defaults to false.</li>
+<li><strong>jms.presettlePolicy.presettleTopicConsumers</strong> when true any 
consumer that is receiving from a Topic or Temporary Topic destination will 
operate in presettled mode, defaults to false.</li>
+<li><strong>jms.presettlePolicy.presettleQueueConsumers</strong> when true any 
consumer that is receiving from a Queue or Temporary Queue destination will 
operate in presettled mode, defaults to false.</li>
+</ul>
+
+<p>The Deserialization Policy provides a means of controlling which types are 
trusted to be deserialized from the object stream while retrieving the body 
from an incoming JMS ObjectMessage composed of serialized Java Object content. 
By default all types are trusted during attempt to deserialize the body. The 
default Deserialization Policy object provides URI options that allow 
specifying a allow list and a deny list of Java class or package names.</p>
+
+<p><strong>jms.deserializationPolicy.allowList</strong> A comma separated list 
of class/package names that should be allowed when deserializing the contents 
of a JMS ObjectMessage, unless overridden by the deny list. The names in this 
list are not pattern values, the exact class or package name must be 
configured, e.g "java.util.Map" or "java.util". Package matches include 
sub-packages. Default is to allow all.
+<strong>jms.deserializationPolicy.denyList</strong> A comma separated list of 
class/package names that should be rejected when deserializing the contents of 
a JMS ObjectMessage. The names in this list are not pattern values, the exact 
class or package name must be configured, e.g "java.util.Map" or "java.util". 
Package matches include sub-packages. Default is to prevent none.</p>
+
+<h3 id="tcp-transport-configuration-options">TCP Transport Configuration 
options</h3>
+
+<p>When connected to a remote using plain TCP these options configure the 
behaviour of the underlying socket.  These options are appended to the 
connection URI along with the other configuration options, for example:</p>
+
+<pre><code>  
amqp://localhost:5672?jms.clientID=foo&amp;transport.connectTimeout=30000
+</code></pre>
+
+<p>The complete set of TCP Transport options is listed below:</p>
+
+<ul>
+<li><strong>transport.sendBufferSize</strong> default is 64k</li>
+<li><strong>transport.receiveBufferSize</strong> default is 64k</li>
+<li><strong>transport.trafficClass</strong> default is 0</li>
+<li><strong>transport.connectTimeout</strong> default is 60 seconds</li>
+<li><strong>transport.soTimeout</strong> default is -1</li>
+<li><strong>transport.soLinger</strong> default is -1</li>
+<li><strong>transport.tcpKeepAlive</strong> default is false</li>
+<li><strong>transport.tcpNoDelay</strong> default is true</li>
+<li><strong>transport.useEpoll</strong> When true the transport will use the 
native Epoll layer when available instead of the NIO layer, which can improve 
performance. Defaults to true.</li>
+<li><strong>transport.useKQueue</strong> When true the transport will use the 
native KQueue layer when available instead of the NIO layer, which can improve 
performance. Defaults to false.</li>
+</ul>
+
+<h3 id="ssl-transport-configuration-options">SSL Transport Configuration 
options</h3>
+
+<p>The SSL Transport extends the TCP Transport and is enabled using the 
<em>amqps</em> URI scheme.  Because the SSL Transport extends the functionality 
of the TCP based Transport all the TCP Transport options are valid on an SSL 
Transport URI.</p>
+
+<p>A simple SSL/TLS based client URI is shown below:</p>
+
+<pre><code>amqps://myhost.mydomain:5671
+</code></pre>
+
+<p>The complete set of SSL Transport options is listed below:</p>
+
+<ul>
+<li><strong>transport.keyStoreLocation</strong>  default is to read from the 
system property "javax.net.ssl.keyStore"</li>
+<li><strong>transport.keyStorePassword</strong>  default is to read from the 
system property "javax.net.ssl.keyStorePassword"</li>
+<li><strong>transport.trustStoreLocation</strong>  default is to read from the 
system property "javax.net.ssl.trustStore"</li>
+<li><strong>transport.trustStorePassword</strong>  default is to read from the 
system property "javax.net.ssl.trustStorePassword"</li>
+<li><strong>transport.keyStoreType</strong> The type of keyStore being used. 
Default is to read from the system property "javax.net.ssl.keyStoreType" If not 
set then default is "JKS".</li>
+<li><strong>transport.trustStoreType</strong> The type of trustStore being 
used. Default is to read from the system property 
"javax.net.ssl.trustStoreType" If not set then default is "JKS".</li>
+<li><strong>transport.storeType</strong> This will set both the keystoreType 
and trustStoreType to the same value. If not set then the keyStoreType and 
trustStoreType will default to the values specified above.</li>
+<li><strong>transport.contextProtocol</strong> The protocol argument used when 
getting an SSLContext. Default is TLS, or TLSv1.2 if using OpenSSL.</li>
+<li><strong>transport.enabledCipherSuites</strong> The cipher suites to 
enable, comma separated. No default, meaning the context default ciphers are 
used. Any disabled ciphers are removed from this.</li>
+<li><strong>transport.disabledCipherSuites</strong> The cipher suites to 
disable, comma separated. Ciphers listed here are removed from the enabled 
ciphers. No default.</li>
+<li><strong>transport.enabledProtocols</strong> The protocols to enable, comma 
separated. No default, meaning the context default protocols are used. Any 
disabled protocols are removed from this.</li>
+<li><strong>transport.disabledProtocols</strong> The protocols to disable, 
comma separated. Protocols listed here are removed from the enabled protocols. 
Default is "SSLv2Hello,SSLv3".</li>
+<li><strong>transport.trustAll</strong> Whether to trust the provided server 
certificate implicitly, regardless of any configured trust store. Defaults to 
false.</li>
+<li><strong>transport.verifyHost</strong> Whether to verify that the hostname 
being connected to matches with the provided server certificate. Defaults to 
true.</li>
+<li><strong>transport.keyAlias</strong> The alias to use when selecting a 
keypair from the keystore if required to send a client certificate to the 
server. No default.</li>
+<li><strong>transport.useOpenSSL</strong> When true the transport will attempt 
to use native OpenSSL libraries for SSL connections if possible based on the 
SSL configuration and available OpenSSL libraries on the classpath.  Refer to 
the section <a href="#enabling-openssl-support">Enabling OpenSSL support</a> 
for more information.</li>
+</ul>
+
+<h3 id="websocket-transport-configuration-options">Websocket Transport 
Configuration options</h3>
+
+<p>The WebSocket (WS) Transport extends the TCP and SSL Transports to provide 
both unsecured and secured Websocket connectivity and is enabled using the 
<em>amqpws</em> and <em>amqpwss</em> URI schemes.  The unsecured WS Transport 
extends the basic TCP transport which means all the normal TCP Transport 
configuration options also apply to the WS Transport. Similarly the WSS 
Transport extends the SSL Transport which means both the TCP and SSL Transport 
options can be applied to configure it.</p>
+
+<p>A simple WS[S] based client URI is shown below:</p>
+
+<pre><code>amqpws[s]://myhost.mydomain:5671/[optional-path]
+</code></pre>
+
+<p>The WS Transport can be configured to add additional HTTP Headers during 
the WebSocket upgrade request using URI options for each HTTP header and value 
to be added, an example is shown below:</p>
+
+<pre><code>amqpws[s]://myhost.mydomain:5671/[optional-path]?transport.ws.httpHeader.&lt;Header&gt;=&lt;Value&gt;
+</code></pre>
+
+<h3 id="amqp-configuration-options">AMQP Configuration options</h3>
+
+<p>These options apply to the behaviour of certain AMQP functionality.</p>
+
+<ul>
+<li><strong>amqp.idleTimeout</strong> The idle timeout in milliseconds after 
which the connection will be failed if the peer sends no AMQP frames. Default 
is 60000.</li>
+<li><strong>amqp.vhost</strong> The vhost to connect to. Used to populate the 
Sasl and Open hostname fields. Default is the main hostname from the Connection 
URI.</li>
+<li><strong>amqp.saslLayer</strong> Controls whether connections should use a 
SASL layer or not. Default is true.</li>
+<li><strong>amqp.saslMechanisms</strong> Which SASL mechanism(s) the client 
should allow selection of, if offered by the server and usable with the 
configured credentials. Comma separated if specifying more than 1 mechanism. 
The clients supported mechanisms are currently EXTERNAL, SCRAM-SHA-256, 
SCRAM-SHA-1, CRAM-MD5, PLAIN, XOAUTH2, ANONYMOUS, and GSSAPI for Kerberos.  
Default is to allow selection from all mechanisms except GSSAPI, which must be 
specified here to enable.</li>
+<li><strong>amqp.maxFrameSize</strong> The connection max-frame-size value in 
bytes. Default is 1048576.</li>
+<li><strong>amqp.drainTimeout</strong> The time in milliseconds that the 
client will wait for a response from the remote when a consumer drain request 
is made. If no response is seen in the allotted timeout period the link will be 
considered failed and the associated consumer will be closed. Default is 
60000.</li>
+<li><strong>amqp.allowNonSecureRedirects</strong> Controls whether an AMQP 
connection will allow for a redirect to an alternative host over a connection 
that is not secure when the existing connection is secure, e.g. redirecting an 
SSL connection to a raw TCP connection.  This value defaults to false.
+<strong>amqp.anonymousFallbackCacheSize</strong> Controls the number of 
underlying per-destination fallback sending links that are cached for an 
anonymous producer to improve performance of sending when a peer doesn't offer 
support for the anonymous relay. By default only one sender link is cached 
which means that sending to multiple destinations will cause the cached sender 
to be closed and new sender to be opened each time the destination changes. 
Increasing the cache size can reduce t [...]
+<strong>amqp.anonymousFallbackCacheTimeout</strong> Controls how long in 
milliseconds an underlying per-destination fallback sender link can remain in 
an anonymous producers cache when inactive before it is automatically closed.  
The default is 30000 milliseconds (30 seconds) and can be set to zero to 
disable the timeouts.</li>
+</ul>
+
+<h3 id="failover-configuration-options">Failover Configuration options</h3>
+
+<p>With failover enabled the client can reconnect to another server 
automatically when connection to the current server is lost for some reason.  
The failover URI is always initiated with the <em>failover</em> prefix and a 
list of URIs for the server(s) is contained inside a set of parentheses. The 
"jms." options are applied to the overall failover URI, outside the 
parentheses, and affect the JMS Connection object for its lifetime.</p>
+
+<p>The URI for failover looks something like the following:</p>
+
+<pre><code>failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&amp;failover.maxReconnectAttempts=20
+</code></pre>
+
+<p>The individual broker details within the parentheses can use the 
"transport." or "amqp." options defined earlier, with these being applied as 
each host is connected to:</p>
+
+<pre><code>failover:(amqp://host1:5672?amqp.option=value,amqp://host2:5672?transport.option=value)?jms.clientID=foo
+</code></pre>
+
+<p>The complete set of configuration options for failover is listed below:</p>
+
+<ul>
+<li><strong>failover.initialReconnectDelay</strong> The amount of time the 
client will wait before the first attempt to reconnect to a remote peer.  The 
default value is zero, meaning the first attempt happens immediately.</li>
+<li><strong>failover.reconnectDelay</strong> Controls the delay between 
successive reconnection attempts, defaults to 10 milliseconds.  If the backoff 
option is not enabled this value remains constant.</li>
+<li><strong>failover.maxReconnectDelay</strong> The maximum time that the 
client will wait before attempting a reconnect.  This value is only used when 
the backoff feature is enabled to ensure that the delay doesn't not grow too 
large.  Defaults to 30 seconds as the max time between connect attempts.</li>
+<li><strong>failover.useReconnectBackOff</strong> Controls whether the time 
between reconnection attempts should grow based on a configured multiplier.  
This option defaults to true.</li>
+<li><strong>failover.reconnectBackOffMultiplier</strong> The multiplier used 
to grow the reconnection delay value, defaults to 2.0d.</li>
+<li><strong>failover.maxReconnectAttempts</strong> The number of reconnection 
attempts allowed before reporting the connection as failed to the client.  The 
default is no limit or (-1).</li>
+<li><strong>failover.startupMaxReconnectAttempts</strong> For a client that 
has never connected to a remote peer before this option control how many 
attempts are made to connect before reporting the connection as failed.  The 
default is to use the value of maxReconnectAttempts.</li>
+<li><strong>failover.warnAfterReconnectAttempts</strong> Controls how often 
the client will log a message indicating that failover reconnection is being 
attempted.  The default is to log every 10 connection attempts.</li>
+<li><strong>failover.randomize</strong> When true the set of failover URIs is 
randomly shuffled prior to attempting to connect to one of them.  This can help 
to distribute client connections more evenly across multiple remote peers.  The 
default value is false.</li>
+<li><strong>failover.amqpOpenServerListAction</strong> Controls how the 
failover transport behaves when the connection Open frame from the remote peer 
provides a list of failover hosts to the client.  This option accepts one of 
three values; REPLACE, ADD, or IGNORE (default is REPLACE).  If REPLACE is 
configured then all failover URIs other than the one for the current server are 
replaced with those provided by the remote peer.  If ADD is configured then the 
URIs provided by the remote a [...]
+</ul>
+
+<p>The failover URI also supports defining 'nested' options as a means of 
specifying AMQP and transport option values applicable to all the individual 
nested broker URI's, which can be useful to avoid repetition. This is 
accomplished using the same "transport." and "amqp." URI options outlined 
earlier for a non-failover broker URI but prefixed with 
<em>failover.nested.</em>. For example, to apply the same value for the 
<em>amqp.vhost</em> option to every broker connected to you might hav [...]
+
+<pre><code>failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&amp;failover.nested.amqp.vhost=myhost
+</code></pre>
+
+<h3 id="discovery-configuration-options">Discovery Configuration options</h3>
+
+<p>The client has an optional Discovery module, which provides a customised 
failover layer where the broker URIs to connect to are not given in the initial 
URI, but discovered as the client operates via associated discovery agents. 
There are currently two discovery agent implementations, a file watcher that 
loads URIs from a file, and a multicast listener that works with ActiveMQ 5 
brokers which have been configured to broadcast their broker addresses for 
listening clients.</p>
+
+<p>The general set of failover related options when using discovery are the 
same as those detailed earlier, with the main prefix updated from 
<em>failover.</em> to <em>discovery.</em>, and with the 'nested' options prefix 
used to supply URI options common to all the discovered broker URIs bring 
updated from <em>failover.nested.</em> to <em>discovery.discovered</em>. For 
example, without the agent URI details, a general discovery URI might look 
like:</p>
+
+<pre><code>discovery:(&lt;agent-uri&gt;)?discovery.maxReconnectAttempts=20&amp;discovery.discovered.jms.clientID=foo
+</code></pre>
+
+<p>To use the file watcher discovery agent, utilise an agent URI of the 
form:</p>
+
+<pre><code>discovery:(file:///path/to/monitored-file?updateInterval=60000)
+</code></pre>
+
+<p>The URI options for the file watcher discovery agent are listed below:</p>
+
+<ul>
+<li><strong>updateInterval</strong> Controls the frequency in milliseconds 
which the file is inspected for change. The default value is 30000.</li>
+</ul>
+
+<p>To use the multicast discovery agent with an ActiveMQ 5 broker, utilise an 
agent URI of the form:</p>
+
+<pre><code>discovery:(multicast://default?group=default)
+</code></pre>
+
+<p>Note that the use of <em>default</em> as the host in the multicast agent 
URI above is a special value (that is substituted by the agent with the default 
"239.255.2.3:6155"). You may change this to specify the actual IP and port in 
use with your multicast configuration.</p>
+
+<p>The URI options for the multicast discovery agent are listed below:</p>
+
+<ul>
+<li><strong>group</strong> Controls which multicast group messages are 
listened for on. The default value is "default".</li>
+</ul>
+
+<h3 id="enabling-openssl-support">Enabling OpenSSL support</h3>
+
+<p>SSL connections can be configured to use a native OpenSSL implementation 
which can provide increased performance. To use this support the transport 
<strong><em>useOpenSSL</em></strong> option must be enabled and the OpenSSL 
support libraries must be configured on the classpath.  The client tests make 
use of an uber jar containing static libraries for multiple platforms based on 
Google's boringssl project libraries.  To include this dependency in your own 
project you might include the  [...]
+
+<pre><code>&lt;dependency&gt;
+  &lt;groupId&gt;io.netty&lt;/groupId&gt;
+  &lt;artifactId&gt;netty-tcnative-boringssl-static&lt;/artifactId&gt;
+  &lt;version&gt;${netty-tcnative-version}&lt;/version&gt;
+&lt;/dependency&gt;
+</code></pre>
+
+<p>The Netty project provides other options to choose from when using OpenSSL 
libraries which are documented on the Netty site.  <a 
href="https://netty.io/wiki/forked-tomcat-native.html";>https://netty.io/wiki/forked-tomcat-native.html</a></p>
+
+<h2 id="logging">Logging</h2>
+
+<p>The client makes use of the SLF4J API, allowing users to select a 
particular logging implementation based on their needs by supplying a SLF4J 
'binding', such as <em>slf4j-log4j</em> in order to use Log4J. More details on 
SLF4J are available from http://www.slf4j.org/.</p>
+
+<p>The client uses Logger names residing within the 
<em>org.apache.qpid.jms</em> hierarchy, which you can use to configure a 
logging implementation based on your needs.</p>
+
+<p>When debugging some issues, it may sometimes be useful to enable additional 
protocol trace logging from the Qpid Proton AMQP 1.0 library. There are two 
options to achieve this:</p>
+
+<ul>
+<li>Set the environment variable (not Java system property) 
<em>PN_TRACE_FRM</em> to <em>true</em>, which will cause Proton to emit frame 
logging to stdout.</li>
+<li>Add the option <em>amqp.traceFrames=true</em> to your connection URI to 
have the client add a protocol tracer to Proton, and configure the 
<em>org.apache.qpid.jms.provider.amqp.FRAMES</em> Logger to <em>TRACE</em> 
level to include the output in your logs.</li>
+</ul>
+
+<h2 id="tracing">Tracing</h2>
+
+<p>The client can perform distributed tracing of message production and 
consumption using an <a href="https://opentracing.io/";>OpenTracing</a> 
implementation.</p>
+
+<p>When tracing is enabled, upon producing messages a Span is created for the 
AMQP delivery process, with the delivery outcome logged on it upon completion. 
When consuming messages, an active Span is created while the onMessage method 
of a MessageListener is called. For synchronous receive calls, a Span is 
created and finished internally while returning a Message. This is also the 
case for any messages expired before delivery or which exceed the configured 
redelivery policy.</p>
+
+<p>There are two ways of enabling this support:</p>
+
+<ol>
+<li><p>Configure the client via URI option to utilise the 
<em>GlobalTracer</em> independently set by the application.</p>
+
+<p>The tracing implementation can be enabled using the <em>jms.tracing</em> 
URI option:</p>
+
+<pre><code>amqp://localhost:5672?jms.tracing=opentracing
+</code></pre>
+
+<p>The application must create a Tracer and register it as the GlobalTracer. 
An overview of doing this would be:</p>
+
+<pre><code>io.opentracing.Tracer tracer = ...;
+io.opentracing.util.GlobalTracer.registerIfAbsent(tracer);
+</code></pre>
+
+<p>If no registration is performed, the GlobalTracer acts as a no-op 
Tracer.</p></li>
+<li><p>Set a JmsTracer instance to use directly on the JmsConnectionFactory 
object.</p>
+
+<pre><code>io.opentracing.Tracer tracer = ...;
+org.apache.qpid.jms.tracing.JmsTracer jmsTracer =
+        
org.apache.qpid.jms.tracing.opentracing.OpenTracingTracerFactory.create(tracer);
+
+JmsConnectionFactory connectionFactory = ...;
+connectionFactory.setTracer(jmsTracer);
+</code></pre>
+
+<p>This method of enabling tracing overrides the URI configuration option if 
also set.</p></li>
+</ol>
+
+<p>In order to perform tracing a suitable OpenTracing implementation must be 
provided by the application (along with the io.opentracing:opentracing-api and 
io.opentracing:opentracing-util dependencies, should the tracing implementation 
not provide them).</p>
+
+<p>An example distributed tracing system would be <a 
href="https://www.jaegertracing.io/";>Jaeger</a>. The related application 
dependency to utilise it would be:</p>
+
+<pre><code>&lt;dependency&gt;
+  &lt;groupId&gt;io.jaegertracing&lt;/groupId&gt;
+  &lt;artifactId&gt;jaeger-client&lt;/artifactId&gt;
+  &lt;version&gt;${jaeger-version}&lt;/version&gt;
+&lt;/dependency&gt;
+</code></pre>
+
+<h2 id="extended-session-acknowledgement-modes">Extended Session 
Acknowledgement modes</h2>
+
+<p>The client supports two additional session acknowledgement modes beyond the 
standard JMS specification modes.</p>
+
+<h3 id="individual-acknowledge">Individual Acknowledge</h3>
+
+<p>In this mode messages must be acknowledged individually by the application 
via the Message#acknowledge() method used when the Session is in 
CLIENT_ACKNOWLEDGE mode.  Unlike with CLIENT_ACKNOWLEDGE mode only the target 
message will be acknowledged, all other delivered messages remain 
un-acknowledged.  The integer value used to activate this mode is 
<em>101</em>.</p>
+
+<pre><code>    connection.createSession(false, 101);
+</code></pre>
+
+<h3 id="no-acknowledge">No Acknowledge</h3>
+
+<p>In this mode messages are accepted at the server before being dispatched to 
the client, and no acknowledgement is performed by the client.  The client 
supports two integer values to activate this mode, <em>100</em> and 
<em>257</em>.</p>
+
+<pre><code>    connection.createSession(false, 100);
+</code></pre>
+
+<h2 id="authenticating-using-kerberos">Authenticating using Kerberos</h2>
+
+<p>The client can be configured to authenticate using Kerberos when used with 
an appropriately configured server. To do so, you must:</p>
+
+<ol>
+<li><p>Configure the client to use the GSSAPI mechanism for SASL 
authentication using the <em>amqp.saslMechanisms</em> URI option, e.g:</p>
+
+<pre><code>amqp://myhost:5672?amqp.saslMechanisms=GSSAPI
+failover:(amqp://myhost:5672?amqp.saslMechanisms=GSSAPI)
+</code></pre></li>
+<li><p>Set the <em>java.security.auth.login.config</em> system property to the 
path of a JAAS Login Configuration file containing appropriate configuration 
for a Kerberos LoginModule, e.g:</p>
+
+<pre><code>-Djava.security.auth.login.config=/path/to/login.config
+</code></pre>
+
+<p>An example login.config configuration file might look like the 
following:</p>
+
+<pre><code>amqp-jms-client {
+    com.sun.security.auth.module.Krb5LoginModule required
+    useTicketCache=true;
+};
+</code></pre></li>
+</ol>
+
+<p>The precise configuration used will depend on how you wish the credentials 
to be established for the connection, and the particular LoginModule in use. 
For details of the Sun/Oracle Krb5LoginModule, see <a 
href="https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html";>https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html</a>.
 For details of the IBM Java 8 Krb5LoginMo [...]
+
+<p>It is possible to configure the LoginModule to establish the credentials to 
use for the Kerberos process, such as specifying a Principal and whether to use 
an existing ticket cache or keytab. If however the LoginModule configuration 
does not provide means to establish all necessary credentials, it may then 
request and be passed the username and/or password values from the client 
Connection object if they were either supplied when creating the Connection 
using the ConnectionFactory or  [...]
+
+<p>Note that Kerberos is only only supported for authentication purposes. Use 
SSL/TLS connections for encryption.</p>
+
+<p>The following URI options can be used to influence the Kerberos 
authentication process:</p>
+
+<ul>
+<li><strong>sasl.options.configScope</strong> The Login Configuration entry 
name to use when authenticating. Default is "amqp-jms-client".</li>
+<li><strong>sasl.options.protocol</strong> The protocol value used during the 
GSSAPI SASL process. Default is "amqp".</li>
+<li><strong>sasl.options.serverName</strong> The serverName value used during 
the GSSAPI SASL process. Default is the server hostname from the connection 
URI.</li>
+</ul>
+
+<p>Similar to the "amqp." and "transport." options detailed previously, these 
options must be specified on a per-host basis or as all-host nested options in 
a failover URI.</p>
+
+
+          <hr/>
+
+          <ul id="-apache-navigation">
+            <li><a href="http://www.apache.org/";>Apache</a></li>
+            <li><a href="http://www.apache.org/licenses/";>License</a></li>
+            <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li>
+            <li><a 
href="http://www.apache.org/foundation/thanks.html";>Thanks!</a></li>
+            <li><a href="/security.html">Security</a></li>
+            <li><a href="http://www.apache.org/";><img id="-apache-feather" 
width="48" height="14" src="" alt="Apache"/></a></li>
+          </ul>
+
+          <p id="-legal">
+            Apache Qpid, Messaging built on AMQP; Copyright &#169; 2015
+            The Apache Software Foundation; Licensed under
+            the <a href="http://www.apache.org/licenses/LICENSE-2.0";>Apache
+            License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+            Proton, Apache, the Apache feather logo, and the Apache Qpid
+            project logo are trademarks of The Apache Software
+            Foundation; All other marks mentioned may be trademarks or
+            registered trademarks of their respective owners
+          </p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/content/releases/qpid-jms-1.0.0/index.html 
b/content/releases/qpid-jms-1.1.0/index.html
similarity index 87%
copy from content/releases/qpid-jms-1.0.0/index.html
copy to content/releases/qpid-jms-1.1.0/index.html
index bc11d1d..7591985 100644
--- a/content/releases/qpid-jms-1.0.0/index.html
+++ b/content/releases/qpid-jms-1.1.0/index.html
@@ -21,7 +21,7 @@
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en">
   <head>
-    <title>Qpid JMS 1.0.0 - Apache Qpid&#8482;</title>
+    <title>Qpid JMS 1.1.0 - Apache Qpid&#8482;</title>
     <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,10 +111,10 @@ 
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
       </div>
 
       <div id="-middle" class="panel">
-        <ul id="-path-navigation"><li><a 
href="/index.html">Home</a></li><li><a 
href="/releases/index.html">Releases</a></li><li>Qpid JMS 1.0.0</li></ul>
+        <ul id="-path-navigation"><li><a 
href="/index.html">Home</a></li><li><a 
href="/releases/index.html">Releases</a></li><li>Qpid JMS 1.1.0</li></ul>
 
         <div id="-middle-content">
-          <h1 id="qpid-jms-100">Qpid JMS 1.0.0</h1>
+          <h1 id="qpid-jms-110">Qpid JMS 1.1.0</h1>
 
 <p>Qpid JMS is a complete <a 
href="http://en.wikipedia.org/wiki/Java_Message_Service";>Java Message 
Service</a> 2.0 client built
 using the <a href="/proton/index.html">Qpid Proton</a> protocol engine.</p>
@@ -139,13 +139,13 @@ files you download.</p>
 <tbody>
 <tr>
   <td>Qpid JMS binaries</td>
-  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-bin.tar.gz";>apache-qpid-jms-1.0.0-bin.tar.gz</a></td>
-  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-bin.tar.gz.asc";>ASC</a>,
 <a 
href="https://archive.apache.org/dist/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-bin.tar.gz.sha512";>SHA512</a></td>
+  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-bin.tar.gz";>apache-qpid-jms-1.1.0-bin.tar.gz</a></td>
+  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-bin.tar.gz.asc";>ASC</a>,
 <a 
href="https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-bin.tar.gz.sha512";>SHA512</a></td>
 </tr>
 <tr>
   <td>Qpid JMS source code</td>
-  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-src.tar.gz";>apache-qpid-jms-1.0.0-src.tar.gz</a></td>
-  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-src.tar.gz.asc";>ASC</a>,
 <a 
href="https://archive.apache.org/dist/qpid/jms/1.0.0/apache-qpid-jms-1.0.0-src.tar.gz.sha512";>SHA512</a></td>
+  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz";>apache-qpid-jms-1.1.0-src.tar.gz</a></td>
+  <td><a 
href="https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz.asc";>ASC</a>,
 <a 
href="https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz.sha512";>SHA512</a></td>
 </tr>
 </tbody>
 </table>
@@ -158,7 +158,7 @@ files you download.</p>
 
 <ul>
 <li><a 
href="http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html";>API 
reference</a></li>
-<li><a 
href="https://github.com/apache/qpid-jms/tree/1.0.0/qpid-jms-examples";>Examples</a></li>
+<li><a 
href="https://github.com/apache/qpid-jms/tree/1.1.0/qpid-jms-examples";>Examples</a></li>
 <li><a href="docs/index.html">Configuration</a></li>
 <li><a href="building.html">Building Qpid JMS</a></li>
 </ul>
@@ -168,14 +168,14 @@ files you download.</p>
 <h2 id="more-information">More information</h2>
 
 <ul>
-<li><a href="https://archive.apache.org/dist/qpid/jms/1.0.0";>All release 
artefacts</a></li>
-<li><a 
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+AND+fixVersion+%3D+%271.0.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC";>Resolved
 issues in JIRA</a></li>
-<li><a 
href="https://gitbox.apache.org/repos/asf/qpid-jms.git/tree/refs/tags/1.0.0";>Source
 repository tag</a></li>
+<li><a href="https://archive.apache.org/dist/qpid/jms/1.1.0";>All release 
artefacts</a></li>
+<li><a 
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+AND+fixVersion+%3D+%271.1.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC";>Resolved
 issues in JIRA</a></li>
+<li><a 
href="https://gitbox.apache.org/repos/asf/qpid-jms.git/tree/refs/tags/1.1.0";>Source
 repository tag</a></li>
 </ul>
 
 <script type="text/javascript">
   _deferredFunctions.push(function() {
-      if ("1.0.0" === "1.0.0") || "1.0.0" === "0.59.0") {
+      if ("1.1.0" === "1.1.0") || "1.1.0" === "0.59.0") {
           _modifyCurrentReleaseLinks();
       }
   });
diff --git a/content/releases/qpid-jms-0.40.0/index.html 
b/content/releases/qpid-jms-1.1.0/release-notes.html
similarity index 70%
copy from content/releases/qpid-jms-0.40.0/index.html
copy to content/releases/qpid-jms-1.1.0/release-notes.html
index 73f9984..1f6849b 100644
--- a/content/releases/qpid-jms-0.40.0/index.html
+++ b/content/releases/qpid-jms-1.1.0/release-notes.html
@@ -21,7 +21,7 @@
 -->
 <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en">
   <head>
-    <title>Qpid JMS 0.40.0 - Apache Qpid&#8482;</title>
+    <title>Qpid JMS 1.1.0 Release Notes - Apache Qpid&#8482;</title>
     <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
     <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,76 +111,30 @@ 
https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
       </div>
 
       <div id="-middle" class="panel">
-        <ul id="-path-navigation"><li><a 
href="/index.html">Home</a></li><li><a 
href="/releases/index.html">Releases</a></li><li>Qpid JMS 0.40.0</li></ul>
+        <ul id="-path-navigation"><li><a 
href="/index.html">Home</a></li><li><a 
href="/releases/index.html">Releases</a></li><li><a 
href="/releases/qpid-jms-1.1.0/index.html">Qpid JMS 1.1.0</a></li><li>Qpid JMS 
1.1.0 Release Notes</li></ul>
 
         <div id="-middle-content">
-          <h1 id="qpid-jms-0400">Qpid JMS 0.40.0</h1>
+          <h1 id="qpid-jms-110-release-notes">Qpid JMS 1.1.0 Release Notes</h1>
 
 <p>Qpid JMS is a complete <a 
href="http://en.wikipedia.org/wiki/Java_Message_Service";>Java Message 
Service</a> 2.0 client built
-using the <a href="/proton/index.html">Qpid Proton</a> protocol engine.</p>
-
-<p>For a detailed list of the changes in this release, see the <a 
href="release-notes.html">release
-notes</a>.</p>
-
-<h2 id="download">Download</h2>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify 
the
-integrity</a> of the
-files you download.</p>
-
-<table>
-<thead>
-<tr>
-  <th>Content</th>
-  <th>Download</th>
-  <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-  <td>Qpid JMS binaries</td>
-  <td><a 
href="http://archive.apache.org/dist/qpid/jms/0.40.0/apache-qpid-jms-0.40.0-bin.tar.gz";>apache-qpid-jms-0.40.0-bin.tar.gz</a></td>
-  <td><a 
href="https://archive.apache.org/dist/qpid/jms/0.40.0/apache-qpid-jms-0.40.0-bin.tar.gz.asc";>ASC</a>,
 <a 
href="https://archive.apache.org/dist/qpid/jms/0.40.0/apache-qpid-jms-0.40.0-bin.tar.gz.sha512";>SHA512</a></td>
-</tr>
-<tr>
-  <td>Qpid JMS source code</td>
-  <td><a 
href="http://archive.apache.org/dist/qpid/jms/0.40.0/apache-qpid-jms-0.40.0-src.tar.gz";>apache-qpid-jms-0.40.0-src.tar.gz</a></td>
-  <td><a 
href="https://archive.apache.org/dist/qpid/jms/0.40.0/apache-qpid-jms-0.40.0-src.tar.gz.asc";>ASC</a>,
 <a 
href="https://archive.apache.org/dist/qpid/jms/0.40.0/apache-qpid-jms-0.40.0-src.tar.gz.sha512";>SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<p>The client is also available <a href="/maven.html">via Maven</a>.</p>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
+using the <a href="/proton/index.html">Qpid Proton</a> protocol
+engine.</p>
+
+<p>For more information about this release, including download links and
+documentation, see the <a href="index.html">release overview</a>.</p>
+
+<h2 id="new-features-and-improvements">New features and improvements</h2>
 
 <ul>
-<li><a 
href="http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html";>API 
reference</a></li>
-<li><a 
href="https://github.com/apache/qpid-jms/tree/0.40.0/qpid-jms-examples";>Examples</a></li>
-<li><a href="docs/index.html">Configuration</a></li>
-<li><a href="building.html">Building Qpid JMS</a></li>
+<li><a 
href="https://issues.apache.org/jira/browse/QPIDJMS-542";>QPIDJMS-542</a> - 
Support configuring default ConnectionFactory via the naming provider url 
property</li>
 </ul>
 
-</div>
-
-<h2 id="more-information">More information</h2>
+<h2 id="tasks">Tasks</h2>
 
 <ul>
-<li><a href="http://archive.apache.org/dist/qpid/jms/0.40.0";>All release 
artefacts</a></li>
-<li><a 
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+AND+fixVersion+%3D+%270.40.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC";>Resolved
 issues in JIRA</a></li>
-<li><a 
href="https://gitbox.apache.org/repos/asf/qpid-jms.git/tree/refs/tags/0.40.0";>Source
 repository tag</a></li>
+<li><a 
href="https://issues.apache.org/jira/browse/QPIDJMS-541";>QPIDJMS-541</a> - 
Update Netty to 4.1.65</li>
 </ul>
 
-<script type="text/javascript">
-  _deferredFunctions.push(function() {
-      if ("0.40.0" === "1.0.0") {
-          _modifyCurrentReleaseLinks();
-      }
-  });
-</script>
-
 
           <hr/>
 
diff --git a/input/_transom_config.py b/input/_transom_config.py
index f2d2668..3e9687e 100644
--- a/input/_transom_config.py
+++ b/input/_transom_config.py
@@ -27,7 +27,7 @@ other_broker_j_release = "7.1.12"
 cpp_release = _Release(site_url, "Qpid C++", "qpid-cpp", "1.39.0")
 dispatch_release = _Release(site_url, "Qpid Dispatch", "qpid-dispatch", 
"1.16.1")
 interop_test_release = _Release(site_url, "Qpid Interop Test", 
"qpid-interop-test", "0.2.0")
-jms_release = _Release(site_url, "Qpid JMS", "qpid-jms", "1.0.0")
+jms_release = _Release(site_url, "Qpid JMS", "qpid-jms", "1.1.0")
 other_jms_release = "0.59.0"
 jms_amqp_0_x_release = _Release(site_url, "Qpid JMS for AMQP 0-x", 
"qpid-jms-amqp-0-x", "6.4.0")
 proton_release = _Release(site_url, "Qpid Proton", "qpid-proton", "0.35.0")
diff --git a/input/releases/index.md b/input/releases/index.md
index a5ed87e..492f62e 100644
--- a/input/releases/index.md
+++ b/input/releases/index.md
@@ -27,11 +27,11 @@ the
 ## Current releases
 
 <div class="two-column" markdown="1">
+ - [Qpid JMS 1.1.0](qpid-jms-1.1.0/index.html), July 2021
  - [Qpid Dispatch 1.16.1](qpid-dispatch-1.16.1/index.html), July 2021
  - [Qpid Proton 0.35.0](qpid-proton-0.35.0/index.html), July 2021
  - [Qpid Broker-J 8.0.5](qpid-broker-j-8.0.5/index.html), June 2021
  - [Qpid ProtonJ2 1.0.0-M2](qpid-protonj2-1.0.0-M2/index.html), May 2021
- - [Qpid JMS 1.0.0](qpid-jms-1.0.0/index.html), May 2021
  - [Qpid JMS 0.59.0](qpid-jms-0.59.0/index.html), May 2021
  - [Qpid Broker-J 7.1.12](qpid-broker-j-7.1.12/index.html), February 2021
  - [Qpid Proton-J 0.33.8](qpid-proton-j-0.33.8/index.html), November 2020
@@ -45,6 +45,7 @@ the
 ## Past releases
 
 <div class="two-column" markdown="1">
+ - [Qpid JMS 1.0.0](qpid-jms-1.0.0/index.html), May 2021
  - [Qpid Dispatch 1.16.0](qpid-dispatch-1.16.0/index.html), May 2021
  - [Qpid ProtonJ2 1.0.0-M1](qpid-protonj2-1.0.0-M1/index.html), May 2021
  - [Qpid Proton 0.34.0](qpid-proton-0.34.0/index.html), April 2021
diff --git a/input/releases/qpid-jms-1.1.0/building.md 
b/input/releases/qpid-jms-1.1.0/building.md
new file mode 100644
index 0000000..5503089
--- /dev/null
+++ b/input/releases/qpid-jms-1.1.0/building.md
@@ -0,0 +1,46 @@
+# Qpid JMS
+
+[Qpid JMS](https://qpid.apache.org/components/jms/) is a JMS 2.0 client that 
uses
+the AMQP 1.0 protocol, enabling it to interact with various AMQP 1.0 servers.
+
+Below are some quick pointers you might find useful.
+
+## Building the code
+
+The project requires Maven 3. Some example commands follow.
+
+Clean previous builds output and install all modules to local repository 
without
+running the tests:
+
+    mvn clean install -DskipTests
+
+Install all modules to the local repository after running all the tests:
+
+    mvn clean install
+
+Perform a subset tests on the packaged release artifacts without
+installing:
+
+    mvn clean verify -Dtest=TestNamePattern*
+
+Execute the tests and produce code coverage report:
+
+    mvn clean test jacoco:report
+
+## Examples
+
+First build and install all the modules as detailed above (if running against
+a source checkout/release, rather than against released binaries) and then
+consult the README in the qpid-jms-examples module itself.
+
+## Documentation
+
+Documentation source can be found in the qpid-jms-docs module, with a published
+version available on the [website](https://qpid.apache.org/components/jms/).
+
+## Distribution assemblies
+
+After building the modules, src and binary distribution assemblies can be 
found at:
+
+    apache-qpid-jms/target
+
diff --git a/input/releases/qpid-jms-1.1.0/docs/index.md 
b/input/releases/qpid-jms-1.1.0/docs/index.md
new file mode 100644
index 0000000..7b31b93
--- /dev/null
+++ b/input/releases/qpid-jms-1.1.0/docs/index.md
@@ -0,0 +1,386 @@
+# Client configuration
+
+This file details various configuration options for the client, such as how to 
configure and create a JNDI InitialContext, the syntax for its related 
configuration, and various URI options that can be set when defining a 
ConnectionFactory.
+
+## Configuring a JNDI InitialContext
+
+Applications use a JNDI InitialContext, itself obtained from an 
InitialContextFactory, to look up JMS objects such as ConnectionFactory. The 
Qpid JMS client provides an implementation of the InitialContextFactory in 
class *org.apache.qpid.jms.jndi.JmsInitialContextFactory*. This may be 
configured and used in three main ways:
+
+1.  Via jndi.properties file on the Java Classpath.
+
+    By including a file named jndi.properties on the Classpath and setting the 
*java.naming.factory.initial* property
+    to value *org.apache.qpid.jms.jndi.JmsInitialContextFactory*, the Qpid 
InitialContextFactory implementation will
+    be discovered when instantiating InitialContext object.
+
+        javax.naming.Context ctx = new javax.naming.InitialContext();
+
+    The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured using
+    properties (the syntax for which is detailed below) either directly within 
the jndi.properties file,
+    or in a separate file which is referenced in jndi.properties using the 
*java.naming.provider.url* property.
+
+2.  Via system properties.
+
+    By setting the *java.naming.factory.initial* system property to value 
*org.apache.qpid.jms.jndi.JmsInitialContextFactory*,
+    the Qpid InitialContextFactory implementation will be discovered when 
instantiating InitialContext object.
+
+         javax.naming.Context ctx = new javax.naming.InitialContext();
+
+    The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured as properties in
+    a file, which is passed using the *java.naming.provider.url* system 
property. The syntax for these properties is detailed
+    below.
+
+3.  Programmatically using an environment Hashtable.
+
+    The InitialContext may also be configured directly by passing an 
environment during creation:
+
+        Hashtable<Object, Object> env = new Hashtable<Object, Object>();
+        env.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.qpid.jms.jndi.JmsInitialContextFactory");
+        javax.naming.Context context = new javax.naming.InitialContext(env);
+
+    The particular ConnectionFactory, Queue and Topic objects you wish the 
context to contain are configured as properties
+    (the syntax for which is detailed below), either directly within the 
environment Hashtable, or in a
+    separate file which is referenced using the *java.naming.provider.url* 
property within the environment Hashtable.
+
+The property syntax used in the properties file or environment Hashtable is as 
follows:
+
++   To define a ConnectionFactory, use format: 
*connectionfactory.&lt;lookup-name&gt; = &lt;connection-uri&gt;*
++   To define a Queue, use format: *queue.&lt;lookup-name&gt; = 
&lt;queue-name&gt;*
++   To define a Topic use format: *topic.&lt;lookup-name&gt; = 
&lt;topic-name&gt;*
+
+The property values which which constitute the connection URI, queue name, or 
topic name can also utilise simple *${variable}* or *${variable:-default}* 
expansion, with these resolved in order from system properties, environment 
variables, or the properties file / environment Hashtable. For more details of 
the Connection URI, see the next section.
+
+As an example, consider the following properties used to define a 
ConnectionFactory, Queue, and Topic:
+
+    connectionfactory.myFactoryLookup = amqp://localhost:5672
+    queue.myQueueLookup = queueA
+    topic.myTopicLookup = topicA
+
+These objects could then be looked up from a Context as follows:
+
+    ConnectionFactory factory = (ConnectionFactory) 
context.lookup("myFactoryLookup");
+    Queue queue = (Queue) context.lookup("myQueueLookup");
+    Topic topic = (Topic) context.lookup("myTopicLookup");
+
+## Connection URI
+
+The basic format of the clients Connection URI is as follows:
+
+      amqp[s]://hostname:port[?option=value[&option2=value...]]
+
+or for WebSocket connections:
+
+     amqpws[s]://hostname:port[/path][?option=value[&option2=value...]]
+
+Where the *amqps* and *amqpwss* scheme is specified to use SSL/TLS, the 
hostname segment from the URI can be used by the JVM for the
+TLS SNI (Server Name Indication) extension in order to communicate the desired 
server hostname during a TLS handshake.
+The SNI extension will be automatically included if a Fully Qualified name 
(e.g myhost.mydomain) is specified, but not
+when an unqualified name (e.g myhost) or bare IP address are used.
+
+The client can be configured with a number of different settings using the URI 
while defining the ConnectionFactory, these are detailed in the following 
sections.
+
+### JMS Configuration options
+
+The options apply to the behaviour of the JMS objects such as Connection, 
Session, MessageConsumer and MessageProducer.
+
++ **jms.username** User name value used to authenticate the connection
++ **jms.password** The password value used to authenticate the connection
++ **jms.clientID** The ClientID value that is applied to the connection.
++ **jms.forceAsyncSend** Configures whether all Messages sent from a 
MessageProducer are sent asynchronously or only those Message that qualify such 
as Messages inside a transaction or non-persistent messages.
++ **jms.forceSyncSend** Override certain asynchronous send conditions and 
always send messages from a MessageProducer synchronously. Sends using a 
CompletionListener are not affected and are implicitly always asynchronous.
++ **jms.forceAsyncAcks** Causes all Message acknowledgments to be sent 
asynchronously.
++ **jms.localMessageExpiry** Controls whether MessageConsumer instances will 
locally filter expired Messages or deliver them.  By default this value is set 
to true and expired messages will be filtered.
++ **jms.localMessagePriority** If enabled prefetched messages are reordered 
locally based on their given Message priority value. Default is false.
++ **jms.validatePropertyNames** If message property names should be validated 
as valid Java identifiers. Default is true.
++ **jms.validateSelector** Controls whether local validation is performed on 
consumer message selector strings. Default is true.
++ **jms.receiveLocalOnly** If enabled receive calls with a timeout will only 
check a consumers local message buffer, otherwise the remote peer is checked to 
ensure there are really no messages available if the local timeout expires 
before a message arrives. Default is false, the remote is checked.
++ **jms.receiveNoWaitLocalOnly** If enabled receiveNoWait calls will only 
check a consumers local message buffer, otherwise the remote peer is checked to 
ensure there are really no messages available. Default is false, the remote is 
checked.
++ **jms.queuePrefix** Optional prefix value added to the name of any Queue 
created from a JMS Session.
++ **jms.topicPrefix** Optional prefix value added to the name of any Topic 
created from a JMS Session.
++ **jms.closeTimeout** Timeout value that controls how long the client waits 
on resource closure before returning. By default the client waits 60 seconds 
for a normal close completion event.
++ **jms.connectTimeout** Timeout value that controls how long the client waits 
on Connection establishment before returning with an error. By default the 
client waits 15 seconds for a connection to be established before failing.
++ **jms.sendTimeout** Timeout value that controls how long the client waits on 
completion of a synchronous message send before returning an error. By default 
the client will wait indefinitely for a send to complete.
++ **jms.requestTimeout** Timeout value that controls how long the client waits 
on completion of various synchronous interactions, such as opening a producer 
or consumer, before returning an error. Does not affect synchronous message 
sends. By default the client will wait indefinitely for a request to complete.
++ **jms.clientIDPrefix** Optional prefix value that is used for generated 
Client ID values when a new Connection is created for the JMS 
ConnectionFactory.  The default prefix is 'ID:'.
++ **jms.connectionIDPrefix** Optional prefix value that is used for generated 
Connection ID values when a new Connection is created for the JMS 
ConnectionFactory.  This connection ID is used when logging some information 
from the JMS Connection object so a configurable prefix can make breadcrumbing 
the logs easier.  The default prefix is 'ID:'.
++ **jms.populateJMSXUserID** Controls whether a MessageProducer will populate 
the JMSXUserID value for each sent message using the authenticated username 
from the connection.  This value defaults to false and the JMSXUserID for all 
sent message will not be populated.
++ **jms.awaitClientID** Controls whether a Connection with no ClientID 
configured in the URI will wait for a ClientID being set programatically (or 
the connection being used otherwise to signal none can be set) before sending 
the AMQP connection Open. Defaults to true.
++ **jms.useDaemonThread** Controls whether a Connection will use a daemon 
thread for its executor. Defaults to false to ensure a non-daemon thread is 
present by default.
++ **jms.tracing** Sets the type name of a tracing provider to use for the 
connection(s) created by the factory. Supported values are "opentracing" and 
"noop". Default is unset, effectively noop.
+
+The Prefetch Policy controls how many messages the remote peer can send to the 
client and be held in a prefetch buffer for each consumer instance.
+
++ **jms.prefetchPolicy.queuePrefetch** defaults to 1000
++ **jms.prefetchPolicy.topicPrefetch** defaults to 1000
++ **jms.prefetchPolicy.queueBrowserPrefetch** defaults to 1000
++ **jms.prefetchPolicy.durableTopicPrefetch** defaults to 1000
++ **jms.prefetchPolicy.all** used to set all prefetch values at once.
+
+The Redelivery Policy controls how redelivered messages are handled on the 
client.
+
++ **jms.redeliveryPolicy.maxRedeliveries** controls when an incoming message 
is rejected based on the number of times it has been redelivered, the default 
value is (-1) disabled.  A value of zero would indicate no message redeliveries 
are accepted, a value of five would allow a message to be redelivered five 
times, etc.
++ **jms.redeliveryPolicy.outcome** controls the outcome that is applied to a 
message that is being rejected due to it having exceeded the configured 
maxRedeliveries value.  This option is configured on the URI using the 
following set of outcome options:  ACCEPTED, REJECTED, RELEASED, 
MODIFIED_FAILED and MODIFIED_FAILED_UNDELIVERABLE. The default outcome value is 
MODIFIED_FAILED_UNDELIVERABLE.
+
+The MessageID Policy controls the type of the Message ID assigned to messages 
sent from the client.
+
++ **jms.messageIDPolicy.messageIDType** By default a generated String value is 
used for the MessageID on outgoing messages. Other available types are UUID, 
UUID_STRING, and PREFIXED_UUID_STRING.
+
+The Presettle Policy controls when a producer or consumer instance will be 
configured to use AMQP presettled messaging semantics.
+
++ **jms.presettlePolicy.presettleAll** when true all producers and 
non-transacted consumers created operate in presettled mode, defaults to false.
++ **jms.presettlePolicy.presettleProducers** when true all producers operate 
in presettled mode, defaults to false.
++ **jms.presettlePolicy.presettleTopicProducers** when true any producer that 
is sending to a Topic or Temporary Topic destination will operate in presettled 
mode, defaults to false.
++ **jms.presettlePolicy.presettleQueueProducers** when true any producer that 
is sending to a Queue or Temporary Queue destination will operate in presettled 
mode, defaults to false.
++ **jms.presettlePolicy.presettleTransactedProducers** when true any producer 
that is created in a transacted Session will operate in presettled mode, 
defaults to false.
++ **jms.presettlePolicy.presettleConsumers** when true all consumers operate 
in presettled mode, defaults to false.
++ **jms.presettlePolicy.presettleTopicConsumers** when true any consumer that 
is receiving from a Topic or Temporary Topic destination will operate in 
presettled mode, defaults to false.
++ **jms.presettlePolicy.presettleQueueConsumers** when true any consumer that 
is receiving from a Queue or Temporary Queue destination will operate in 
presettled mode, defaults to false.
+
+The Deserialization Policy provides a means of controlling which types are 
trusted to be deserialized from the object stream while retrieving the body 
from an incoming JMS ObjectMessage composed of serialized Java Object content. 
By default all types are trusted during attempt to deserialize the body. The 
default Deserialization Policy object provides URI options that allow 
specifying a allow list and a deny list of Java class or package names.
+
+**jms.deserializationPolicy.allowList** A comma separated list of 
class/package names that should be allowed when deserializing the contents of a 
JMS ObjectMessage, unless overridden by the deny list. The names in this list 
are not pattern values, the exact class or package name must be configured, e.g 
"java.util.Map" or "java.util". Package matches include sub-packages. Default 
is to allow all.
+**jms.deserializationPolicy.denyList** A comma separated list of class/package 
names that should be rejected when deserializing the contents of a JMS 
ObjectMessage. The names in this list are not pattern values, the exact class 
or package name must be configured, e.g "java.util.Map" or "java.util". Package 
matches include sub-packages. Default is to prevent none.
+
+### TCP Transport Configuration options
+
+When connected to a remote using plain TCP these options configure the 
behaviour of the underlying socket.  These options are appended to the 
connection URI along with the other configuration options, for example:
+
+      amqp://localhost:5672?jms.clientID=foo&transport.connectTimeout=30000
+
+The complete set of TCP Transport options is listed below:
+
++ **transport.sendBufferSize** default is 64k
++ **transport.receiveBufferSize** default is 64k
++ **transport.trafficClass** default is 0
++ **transport.connectTimeout** default is 60 seconds
++ **transport.soTimeout** default is -1
++ **transport.soLinger** default is -1
++ **transport.tcpKeepAlive** default is false
++ **transport.tcpNoDelay** default is true
++ **transport.useEpoll** When true the transport will use the native Epoll 
layer when available instead of the NIO layer, which can improve performance. 
Defaults to true.
++ **transport.useKQueue** When true the transport will use the native KQueue 
layer when available instead of the NIO layer, which can improve performance. 
Defaults to false.
+
+### SSL Transport Configuration options
+
+The SSL Transport extends the TCP Transport and is enabled using the *amqps* 
URI scheme.  Because the SSL Transport extends the functionality of the TCP 
based Transport all the TCP Transport options are valid on an SSL Transport URI.
+
+A simple SSL/TLS based client URI is shown below:
+
+    amqps://myhost.mydomain:5671
+
+
+The complete set of SSL Transport options is listed below:
+
++ **transport.keyStoreLocation**  default is to read from the system property 
"javax.net.ssl.keyStore"
++ **transport.keyStorePassword**  default is to read from the system property 
"javax.net.ssl.keyStorePassword"
++ **transport.trustStoreLocation**  default is to read from the system 
property "javax.net.ssl.trustStore"
++ **transport.trustStorePassword**  default is to read from the system 
property "javax.net.ssl.trustStorePassword"
++ **transport.keyStoreType** The type of keyStore being used. Default is to 
read from the system property "javax.net.ssl.keyStoreType" If not set then 
default is "JKS".
++ **transport.trustStoreType** The type of trustStore being used. Default is 
to read from the system property "javax.net.ssl.trustStoreType" If not set then 
default is "JKS".
++ **transport.storeType** This will set both the keystoreType and 
trustStoreType to the same value. If not set then the keyStoreType and 
trustStoreType will default to the values specified above.
++ **transport.contextProtocol** The protocol argument used when getting an 
SSLContext. Default is TLS, or TLSv1.2 if using OpenSSL.
++ **transport.enabledCipherSuites** The cipher suites to enable, comma 
separated. No default, meaning the context default ciphers are used. Any 
disabled ciphers are removed from this.
++ **transport.disabledCipherSuites** The cipher suites to disable, comma 
separated. Ciphers listed here are removed from the enabled ciphers. No default.
++ **transport.enabledProtocols** The protocols to enable, comma separated. No 
default, meaning the context default protocols are used. Any disabled protocols 
are removed from this.
++ **transport.disabledProtocols** The protocols to disable, comma separated. 
Protocols listed here are removed from the enabled protocols. Default is 
"SSLv2Hello,SSLv3".
++ **transport.trustAll** Whether to trust the provided server certificate 
implicitly, regardless of any configured trust store. Defaults to false.
++ **transport.verifyHost** Whether to verify that the hostname being connected 
to matches with the provided server certificate. Defaults to true.
++ **transport.keyAlias** The alias to use when selecting a keypair from the 
keystore if required to send a client certificate to the server. No default.
++ **transport.useOpenSSL** When true the transport will attempt to use native 
OpenSSL libraries for SSL connections if possible based on the SSL 
configuration and available OpenSSL libraries on the classpath.  Refer to the 
section [Enabling OpenSSL support](#enabling-openssl-support) for more 
information.
+
+### Websocket Transport Configuration options
+
+The WebSocket (WS) Transport extends the TCP and SSL Transports to provide 
both unsecured and secured Websocket connectivity and is enabled using the 
*amqpws* and *amqpwss* URI schemes.  The unsecured WS Transport extends the 
basic TCP transport which means all the normal TCP Transport configuration 
options also apply to the WS Transport. Similarly the WSS Transport extends the 
SSL Transport which means both the TCP and SSL Transport options can be applied 
to configure it.
+
+A simple WS[S] based client URI is shown below:
+
+    amqpws[s]://myhost.mydomain:5671/[optional-path]
+
+The WS Transport can be configured to add additional HTTP Headers during the 
WebSocket upgrade request using URI options for each HTTP header and value to 
be added, an example is shown below:
+
+    
amqpws[s]://myhost.mydomain:5671/[optional-path]?transport.ws.httpHeader.<Header>=<Value>
+
+### AMQP Configuration options
+
+These options apply to the behaviour of certain AMQP functionality.
+
++ **amqp.idleTimeout** The idle timeout in milliseconds after which the 
connection will be failed if the peer sends no AMQP frames. Default is 60000.
++ **amqp.vhost** The vhost to connect to. Used to populate the Sasl and Open 
hostname fields. Default is the main hostname from the Connection URI.
++ **amqp.saslLayer** Controls whether connections should use a SASL layer or 
not. Default is true.
++ **amqp.saslMechanisms** Which SASL mechanism(s) the client should allow 
selection of, if offered by the server and usable with the configured 
credentials. Comma separated if specifying more than 1 mechanism. The clients 
supported mechanisms are currently EXTERNAL, SCRAM-SHA-256, SCRAM-SHA-1, 
CRAM-MD5, PLAIN, XOAUTH2, ANONYMOUS, and GSSAPI for Kerberos.  Default is to 
allow selection from all mechanisms except GSSAPI, which must be specified here 
to enable.
++ **amqp.maxFrameSize** The connection max-frame-size value in bytes. Default 
is 1048576.
++ **amqp.drainTimeout** The time in milliseconds that the client will wait for 
a response from the remote when a consumer drain request is made. If no 
response is seen in the allotted timeout period the link will be considered 
failed and the associated consumer will be closed. Default is 60000.
++ **amqp.allowNonSecureRedirects** Controls whether an AMQP connection will 
allow for a redirect to an alternative host over a connection that is not 
secure when the existing connection is secure, e.g. redirecting an SSL 
connection to a raw TCP connection.  This value defaults to false.
+**amqp.anonymousFallbackCacheSize** Controls the number of underlying 
per-destination fallback sending links that are cached for an anonymous 
producer to improve performance of sending when a peer doesn't offer support 
for the anonymous relay. By default only one sender link is cached which means 
that sending to multiple destinations will cause the cached sender to be closed 
and new sender to be opened each time the destination changes. Increasing the 
cache size can reduce the amount of  [...]
+**amqp.anonymousFallbackCacheTimeout** Controls how long in milliseconds an 
underlying per-destination fallback sender link can remain in an anonymous 
producers cache when inactive before it is automatically closed.  The default 
is 30000 milliseconds (30 seconds) and can be set to zero to disable the 
timeouts.
+
+### Failover Configuration options
+
+With failover enabled the client can reconnect to another server automatically 
when connection to the current server is lost for some reason.  The failover 
URI is always initiated with the *failover* prefix and a list of URIs for the 
server(s) is contained inside a set of parentheses. The "jms." options are 
applied to the overall failover URI, outside the parentheses, and affect the 
JMS Connection object for its lifetime.
+
+The URI for failover looks something like the following:
+
+    
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.maxReconnectAttempts=20
+
+The individual broker details within the parentheses can use the "transport." 
or "amqp." options defined earlier, with these being applied as each host is 
connected to:
+
+    
failover:(amqp://host1:5672?amqp.option=value,amqp://host2:5672?transport.option=value)?jms.clientID=foo
+
+The complete set of configuration options for failover is listed below:
+
++ **failover.initialReconnectDelay** The amount of time the client will wait 
before the first attempt to reconnect to a remote peer.  The default value is 
zero, meaning the first attempt happens immediately.
++ **failover.reconnectDelay** Controls the delay between successive 
reconnection attempts, defaults to 10 milliseconds.  If the backoff option is 
not enabled this value remains constant.
++ **failover.maxReconnectDelay** The maximum time that the client will wait 
before attempting a reconnect.  This value is only used when the backoff 
feature is enabled to ensure that the delay doesn't not grow too large.  
Defaults to 30 seconds as the max time between connect attempts.
++ **failover.useReconnectBackOff** Controls whether the time between 
reconnection attempts should grow based on a configured multiplier.  This 
option defaults to true.
++ **failover.reconnectBackOffMultiplier** The multiplier used to grow the 
reconnection delay value, defaults to 2.0d.
++ **failover.maxReconnectAttempts** The number of reconnection attempts 
allowed before reporting the connection as failed to the client.  The default 
is no limit or (-1).
++ **failover.startupMaxReconnectAttempts** For a client that has never 
connected to a remote peer before this option control how many attempts are 
made to connect before reporting the connection as failed.  The default is to 
use the value of maxReconnectAttempts.
++ **failover.warnAfterReconnectAttempts** Controls how often the client will 
log a message indicating that failover reconnection is being attempted.  The 
default is to log every 10 connection attempts.
++ **failover.randomize** When true the set of failover URIs is randomly 
shuffled prior to attempting to connect to one of them.  This can help to 
distribute client connections more evenly across multiple remote peers.  The 
default value is false.
++ **failover.amqpOpenServerListAction** Controls how the failover transport 
behaves when the connection Open frame from the remote peer provides a list of 
failover hosts to the client.  This option accepts one of three values; 
REPLACE, ADD, or IGNORE (default is REPLACE).  If REPLACE is configured then 
all failover URIs other than the one for the current server are replaced with 
those provided by the remote peer.  If ADD is configured then the URIs provided 
by the remote are added to the [...]
+
+The failover URI also supports defining 'nested' options as a means of 
specifying AMQP and transport option values applicable to all the individual 
nested broker URI's, which can be useful to avoid repetition. This is 
accomplished using the same "transport." and "amqp." URI options outlined 
earlier for a non-failover broker URI but prefixed with *failover.nested.*. For 
example, to apply the same value for the *amqp.vhost* option to every broker 
connected to you might have a URI like:
+
+    
failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.nested.amqp.vhost=myhost
+
+
+### Discovery Configuration options
+
+The client has an optional Discovery module, which provides a customised 
failover layer where the broker URIs to connect to are not given in the initial 
URI, but discovered as the client operates via associated discovery agents. 
There are currently two discovery agent implementations, a file watcher that 
loads URIs from a file, and a multicast listener that works with ActiveMQ 5 
brokers which have been configured to broadcast their broker addresses for 
listening clients.
+
+The general set of failover related options when using discovery are the same 
as those detailed earlier, with the main prefix updated from *failover.* to 
*discovery.*, and with the 'nested' options prefix used to supply URI options 
common to all the discovered broker URIs bring updated from *failover.nested.* 
to *discovery.discovered*. For example, without the agent URI details, a 
general discovery URI might look like:
+
+    
discovery:(<agent-uri>)?discovery.maxReconnectAttempts=20&discovery.discovered.jms.clientID=foo
+
+To use the file watcher discovery agent, utilise an agent URI of the form:
+
+    discovery:(file:///path/to/monitored-file?updateInterval=60000)
+
+The URI options for the file watcher discovery agent are listed below:
+
++ **updateInterval** Controls the frequency in milliseconds which the file is 
inspected for change. The default value is 30000.
+
+
+To use the multicast discovery agent with an ActiveMQ 5 broker, utilise an 
agent URI of the form:
+
+    discovery:(multicast://default?group=default)
+
+Note that the use of *default* as the host in the multicast agent URI above is 
a special value (that is substituted by the agent with the default 
"239.255.2.3:6155"). You may change this to specify the actual IP and port in 
use with your multicast configuration.
+
+The URI options for the multicast discovery agent are listed below:
+
++ **group** Controls which multicast group messages are listened for on. The 
default value is "default".
+
+### Enabling OpenSSL support
+
+SSL connections can be configured to use a native OpenSSL implementation which 
can provide increased performance. To use this support the transport 
***useOpenSSL*** option must be enabled and the OpenSSL support libraries must 
be configured on the classpath.  The client tests make use of an uber jar 
containing static libraries for multiple platforms based on Google's boringssl 
project libraries.  To include this dependency in your own project you might 
include the maven dependency as follows:
+
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-tcnative-boringssl-static</artifactId>
+      <version>${netty-tcnative-version}</version>
+    </dependency>
+
+The Netty project provides other options to choose from when using OpenSSL 
libraries which are documented on the Netty site.  
[https://netty.io/wiki/forked-tomcat-native.html](https://netty.io/wiki/forked-tomcat-native.html)
+
+## Logging
+
+The client makes use of the SLF4J API, allowing users to select a particular 
logging implementation based on their needs by supplying a SLF4J 'binding', 
such as *slf4j-log4j* in order to use Log4J. More details on SLF4J are 
available from http://www.slf4j.org/.
+
+The client uses Logger names residing within the *org.apache.qpid.jms* 
hierarchy, which you can use to configure a logging implementation based on 
your needs.
+
+When debugging some issues, it may sometimes be useful to enable additional 
protocol trace logging from the Qpid Proton AMQP 1.0 library. There are two 
options to achieve this:
+
++ Set the environment variable (not Java system property) *PN_TRACE_FRM* to 
*true*, which will cause Proton to emit frame logging to stdout.
++ Add the option *amqp.traceFrames=true* to your connection URI to have the 
client add a protocol tracer to Proton, and configure the 
*org.apache.qpid.jms.provider.amqp.FRAMES* Logger to *TRACE* level to include 
the output in your logs.
+
+## Tracing
+
+The client can perform distributed tracing of message production and 
consumption using an [OpenTracing](https://opentracing.io/) implementation.
+
+When tracing is enabled, upon producing messages a Span is created for the 
AMQP delivery process, with the delivery outcome logged on it upon completion. 
When consuming messages, an active Span is created while the onMessage method 
of a MessageListener is called. For synchronous receive calls, a Span is 
created and finished internally while returning a Message. This is also the 
case for any messages expired before delivery or which exceed the configured 
redelivery policy.
+
+There are two ways of enabling this support:
+
+1.  Configure the client via URI option to utilise the *GlobalTracer* 
independently set by the application.
+
+    The tracing implementation can be enabled using the *jms.tracing* URI 
option:
+
+        amqp://localhost:5672?jms.tracing=opentracing
+
+    The application must create a Tracer and register it as the GlobalTracer. 
An overview of doing this would be:
+
+        io.opentracing.Tracer tracer = ...;
+        io.opentracing.util.GlobalTracer.registerIfAbsent(tracer);
+
+    If no registration is performed, the GlobalTracer acts as a no-op Tracer.
+
+2.  Set a JmsTracer instance to use directly on the JmsConnectionFactory 
object.
+
+        io.opentracing.Tracer tracer = ...;
+        org.apache.qpid.jms.tracing.JmsTracer jmsTracer =
+                
org.apache.qpid.jms.tracing.opentracing.OpenTracingTracerFactory.create(tracer);
+
+        JmsConnectionFactory connectionFactory = ...;
+        connectionFactory.setTracer(jmsTracer);
+
+    This method of enabling tracing overrides the URI configuration option if 
also set.
+
+In order to perform tracing a suitable OpenTracing implementation must be 
provided by the application (along with the io.opentracing:opentracing-api and 
io.opentracing:opentracing-util dependencies, should the tracing implementation 
not provide them).
+
+An example distributed tracing system would be 
[Jaeger](https://www.jaegertracing.io/). The related application dependency to 
utilise it would be:
+
+    <dependency>
+      <groupId>io.jaegertracing</groupId>
+      <artifactId>jaeger-client</artifactId>
+      <version>${jaeger-version}</version>
+    </dependency>
+
+## Extended Session Acknowledgement modes
+
+The client supports two additional session acknowledgement modes beyond the 
standard JMS specification modes.
+
+### Individual Acknowledge
+
+In this mode messages must be acknowledged individually by the application via 
the Message#acknowledge() method used when the Session is in CLIENT_ACKNOWLEDGE 
mode.  Unlike with CLIENT_ACKNOWLEDGE mode only the target message will be 
acknowledged, all other delivered messages remain un-acknowledged.  The integer 
value used to activate this mode is *101*.
+
+        connection.createSession(false, 101);
+
+### No Acknowledge
+
+In this mode messages are accepted at the server before being dispatched to 
the client, and no acknowledgement is performed by the client.  The client 
supports two integer values to activate this mode, *100* and *257*.
+
+        connection.createSession(false, 100);
+
+## Authenticating using Kerberos
+
+The client can be configured to authenticate using Kerberos when used with an 
appropriately configured server. To do so, you must:
+
+1.  Configure the client to use the GSSAPI mechanism for SASL authentication 
using the *amqp.saslMechanisms* URI option, e.g:
+
+        amqp://myhost:5672?amqp.saslMechanisms=GSSAPI
+        failover:(amqp://myhost:5672?amqp.saslMechanisms=GSSAPI)
+
+2.  Set the *java.security.auth.login.config* system property to the path of a 
JAAS Login Configuration file containing appropriate configuration for a 
Kerberos LoginModule, e.g:
+
+        -Djava.security.auth.login.config=/path/to/login.config
+
+    An example login.config configuration file might look like the following:
+
+        amqp-jms-client {
+            com.sun.security.auth.module.Krb5LoginModule required
+            useTicketCache=true;
+        };
+
+The precise configuration used will depend on how you wish the credentials to 
be established for the connection, and the particular LoginModule in use. For 
details of the Sun/Oracle Krb5LoginModule, see 
[https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html](https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html).
 For details of the IBM Java 8 Krb5LoginModule, see [htt [...]
+
+It is possible to configure the LoginModule to establish the credentials to 
use for the Kerberos process, such as specifying a Principal and whether to use 
an existing ticket cache or keytab. If however the LoginModule configuration 
does not provide means to establish all necessary credentials, it may then 
request and be passed the username and/or password values from the client 
Connection object if they were either supplied when creating the Connection 
using the ConnectionFactory or pre [...]
+
+Note that Kerberos is only only supported for authentication purposes. Use 
SSL/TLS connections for encryption.
+
+The following URI options can be used to influence the Kerberos authentication 
process:
+
++ **sasl.options.configScope** The Login Configuration entry name to use when 
authenticating. Default is "amqp-jms-client".
++ **sasl.options.protocol** The protocol value used during the GSSAPI SASL 
process. Default is "amqp".
++ **sasl.options.serverName** The serverName value used during the GSSAPI SASL 
process. Default is the server hostname from the connection URI.
+
+Similar to the "amqp." and "transport." options detailed previously, these 
options must be specified on a per-host basis or as all-host nested options in 
a failover URI.
diff --git a/input/releases/qpid-jms-1.1.0/index.md 
b/input/releases/qpid-jms-1.1.0/index.md
new file mode 100644
index 0000000..4e7e24c
--- /dev/null
+++ b/input/releases/qpid-jms-1.1.0/index.md
@@ -0,0 +1,68 @@
+;;
+;; 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.
+;;
+
+# Qpid JMS 1.1.0
+
+Qpid JMS is a complete [Java Message Service][jms] 2.0 client built
+using the [Qpid Proton]({{site_url}}/proton/index.html) protocol engine.
+
+For a detailed list of the changes in this release, see the [release
+notes](release-notes.html).
+
+[jms]: http://en.wikipedia.org/wiki/Java_Message_Service
+
+## Download
+
+It's important to [verify the
+integrity]({{site_url}}/download.html#verify-what-you-download) of the
+files you download.
+
+| Content | Download | Verify |
+|---------|----------|--------|
+| Qpid JMS binaries | 
[apache-qpid-jms-1.1.0-bin.tar.gz](https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-bin.tar.gz)
 | 
[ASC](https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-bin.tar.gz.asc),
 
[SHA512](https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-bin.tar.gz.sha512)
 |
+| Qpid JMS source code | 
[apache-qpid-jms-1.1.0-src.tar.gz](https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz)
 | 
[ASC](https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz.asc),
 
[SHA512](https://archive.apache.org/dist/qpid/jms/1.1.0/apache-qpid-jms-1.1.0-src.tar.gz.sha512)
 |
+
+The client is also available [via Maven]({{site_url}}/maven.html).
+
+## Documentation
+
+
+<div class="two-column" markdown="1">
+
+ - [API 
reference](http://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html)
+ - [Examples](https://github.com/apache/qpid-jms/tree/1.1.0/qpid-jms-examples)
+ - [Configuration](docs/index.html)
+ - [Building Qpid JMS](building.html)
+
+</div>
+
+
+## More information
+
+ - [All release artefacts](https://archive.apache.org/dist/qpid/jms/1.1.0)
+ - [Resolved issues in 
JIRA](https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+AND+fixVersion+%3D+%271.1.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC)
+ - [Source repository 
tag](https://gitbox.apache.org/repos/asf/qpid-jms.git/tree/refs/tags/1.1.0)
+
+<script type="text/javascript">
+  _deferredFunctions.push(function() {
+      if ("1.1.0" === "{{current_jms_release}}") || "1.1.0" === 
"{{other_jms_release}}") {
+          _modifyCurrentReleaseLinks();
+      }
+  });
+</script>
\ No newline at end of file
diff --git a/input/releases/qpid-jms-1.1.0/release-notes.md 
b/input/releases/qpid-jms-1.1.0/release-notes.md
new file mode 100644
index 0000000..0933a67
--- /dev/null
+++ b/input/releases/qpid-jms-1.1.0/release-notes.md
@@ -0,0 +1,38 @@
+;;
+;; 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.
+;;
+
+# Qpid JMS 1.1.0 Release Notes
+
+Qpid JMS is a complete [Java Message Service][jms] 2.0 client built
+using the [Qpid Proton]({{site_url}}/proton/index.html) protocol
+engine.
+
+For more information about this release, including download links and
+documentation, see the [release overview](index.html).
+
+[jms]: http://en.wikipedia.org/wiki/Java_Message_Service
+
+
+## New features and improvements
+
+ - [QPIDJMS-542](https://issues.apache.org/jira/browse/QPIDJMS-542) - Support 
configuring default ConnectionFactory via the naming provider url property
+
+## Tasks
+
+ - [QPIDJMS-541](https://issues.apache.org/jira/browse/QPIDJMS-541) - Update 
Netty to 4.1.65
\ No newline at end of file

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

Reply via email to