Author: robbie
Date: Tue Apr 12 16:17:39 2016
New Revision: 1738827
URL: http://svn.apache.org/viewvc?rev=1738827&view=rev
Log:
update the website for JMS client 0.9.0 release
Added:
qpid/site/docs/releases/qpid-jms-0.9.0/
qpid/site/docs/releases/qpid-jms-0.9.0/building.html
- copied, changed from r1738151,
qpid/site/docs/releases/qpid-jms-master/index.html
qpid/site/docs/releases/qpid-jms-0.9.0/docs/
qpid/site/docs/releases/qpid-jms-0.9.0/docs/index.html
qpid/site/docs/releases/qpid-jms-0.9.0/index.html
- copied, changed from r1738151,
qpid/site/docs/releases/qpid-jms-0.7.0/index.html
qpid/site/docs/releases/qpid-jms-0.9.0/release-notes.html
- copied, changed from r1738151,
qpid/site/docs/releases/qpid-jms-0.3.0/index.html
qpid/site/input/releases/qpid-jms-0.9.0/
qpid/site/input/releases/qpid-jms-0.9.0/building.md
qpid/site/input/releases/qpid-jms-0.9.0/docs/
qpid/site/input/releases/qpid-jms-0.9.0/docs/index.md
qpid/site/input/releases/qpid-jms-0.9.0/index.md
qpid/site/input/releases/qpid-jms-0.9.0/release-notes.md
Modified:
qpid/site/docs/components/jms/index.html
qpid/site/docs/documentation.html
qpid/site/docs/download.html
qpid/site/docs/maven.html
qpid/site/docs/releases/index.html
qpid/site/docs/releases/qpid-jms-0.1.0/index.html
qpid/site/docs/releases/qpid-jms-0.2.0/index.html
qpid/site/docs/releases/qpid-jms-0.3.0/index.html
qpid/site/docs/releases/qpid-jms-0.4.0/index.html
qpid/site/docs/releases/qpid-jms-0.5.0/index.html
qpid/site/docs/releases/qpid-jms-0.6.0/index.html
qpid/site/docs/releases/qpid-jms-0.7.0/index.html
qpid/site/docs/releases/qpid-jms-0.8.0/index.html
qpid/site/docs/releases/qpid-jms-master/index.html
qpid/site/input/_transom_config.py
qpid/site/input/releases/index.md
Modified: qpid/site/docs/components/jms/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/components/jms/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/components/jms/index.html (original)
+++ qpid/site/docs/components/jms/index.html Tue Apr 12 16:17:39 2016
@@ -147,9 +147,9 @@ API compatible</li>
<ul>
<li><a
href="http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html">API
reference</a></li>
-<li><a
href="https://github.com/apache/qpid-jms/tree/0.8.0/qpid-jms-examples">Examples</a></li>
-<li><a href="/releases/qpid-jms-0.8.0/docs/index.html">Configuration</a></li>
-<li><a href="/releases/qpid-jms-0.8.0/building.html">Building Qpid JMS</a></li>
+<li><a
href="https://github.com/apache/qpid-jms/tree/0.9.0/qpid-jms-examples">Examples</a></li>
+<li><a href="/releases/qpid-jms-0.9.0/docs/index.html">Configuration</a></li>
+<li><a href="/releases/qpid-jms-0.9.0/building.html">Building Qpid JMS</a></li>
</ul>
</div>
@@ -163,7 +163,7 @@ API compatible</li>
<h2 id="releases">Releases</h2>
<ul>
-<li><a href="/releases/qpid-jms-0.8.0">Qpid JMS 0.8.0</a></li>
+<li><a href="/releases/qpid-jms-0.9.0">Qpid JMS 0.9.0</a></li>
<li><a href="/releases/index.html#past-releases">Past releases</a></li>
</ul>
Modified: qpid/site/docs/documentation.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/documentation.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/documentation.html (original)
+++ qpid/site/docs/documentation.html Tue Apr 12 16:17:39 2016
@@ -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-0.8.0/docs/index.html">Configuration</a></li>
+<li><a href="/releases/qpid-jms-0.9.0/docs/index.html">Configuration</a></li>
<li><a
href="http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html">API
reference</a></li>
-<li><a
href="https://github.com/apache/qpid-jms/tree/0.8.0/qpid-jms-examples">Examples</a></li>
+<li><a
href="https://github.com/apache/qpid-jms/tree/0.9.0/qpid-jms-examples">Examples</a></li>
</ul>
</section>
Modified: qpid/site/docs/download.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/download.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/download.html (original)
+++ qpid/site/docs/download.html Tue Apr 12 16:17:39 2016
@@ -122,7 +122,7 @@ https://github.com/apache/qpid-proton/bl
<p>Qpid's source artefacts are produced as part of our community release
process. The downloads on this page are from our current releases,
<a href="/releases/qpid-0.32">Qpid 0.32</a>, <a
href="/releases/qpid-proton-0.12.1">Qpid Proton 0.12.1</a>,
-<a href="/releases/qpid-dispatch-0.5">Qpid Dispatch 0.5</a>, <a
href="/releases/qpid-jms-0.8.0">Qpid JMS 0.8.0</a>, <a
href="/releases/qpid-java-6.0.1">Qpid Java 6.0.1</a> and <a
href="/releases/qpid-cpp-0.34">Qpid C++ 0.34</a>. You can also see our
+<a href="/releases/qpid-dispatch-0.5">Qpid Dispatch 0.5</a>, <a
href="/releases/qpid-jms-0.9.0">Qpid JMS 0.9.0</a>, <a
href="/releases/qpid-java-6.0.1">Qpid Java 6.0.1</a> and <a
href="/releases/qpid-cpp-0.34">Qpid C++ 0.34</a>. You can also see our
<a href="/releases/index.html#past-releases">past releases</a>.</p>
<p>It's important to <a href="#verify-what-you-download">verify the
integrity</a> of the files you download.</p>
@@ -145,8 +145,8 @@ process. The downloads on this page are
</tr>
<tr>
<td><a href="/components/jms/index.html">Qpid JMS</a> (AMQP 1.0)</td>
- <td><a
href="http://www.apache.org/dyn/closer.lua/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-bin.tar.gz">apache-qpid-jms-0.8.0-bin.tar.gz</a>*^</td>
- <td><a
href="http://www.apache.org/dist/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-bin.tar.gz.asc">ASC</a>,
<a
href="http://www.apache.org/dist/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-bin.tar.gz.md5">MD5</a>,
<a
href="http://www.apache.org/dist/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-bin.tar.gz.sha1">SHA1</a></td>
+ <td><a
href="http://www.apache.org/dyn/closer.lua/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz">apache-qpid-jms-0.9.0-bin.tar.gz</a>*^</td>
+ <td><a
href="http://www.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz.asc">ASC</a>,
<a
href="http://www.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz.md5">MD5</a>,
<a
href="http://www.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz.sha1">SHA1</a></td>
</tr>
<tr>
<td><a href="/components/jms/amqp-0-x.html">Qpid AMQP 0-x JMS Client</a></td>
@@ -204,10 +204,10 @@ process. The downloads on this page are
<p>*These Java artefacts are released as compiled bytecode. We also
offer the source as part of our
-<a
href="http://www.apache.org/dyn/closer.lua/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-src.tar.gz">Qpid
JMS source release</a>
-[<a
href="http://www.apache.org/dist/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-src.tar.gz.asc">ASC</a>,
-<a
href="http://www.apache.org/dist/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-src.tar.gz.md5">MD5</a>,
-<a
href="http://www.apache.org/dist/qpid/jms/0.8.0/apache-qpid-jms-0.8.0-src.tar.gz.sha1">SHA1</a>]
+<a
href="http://www.apache.org/dyn/closer.lua/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz">Qpid
JMS source release</a>
+[<a
href="http://www.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz.asc">ASC</a>,
+<a
href="http://www.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz.md5">MD5</a>,
+<a
href="http://www.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz.sha1">SHA1</a>]
and
<a
href="http://www.apache.org/dyn/closer.lua/qpid/java/6.0.1/qpid-java-6.0.1.tar.gz">Qpid
Java source release</a>
[<a
href="http://www.apache.org/dist/qpid/java/6.0.1/qpid-java-6.0.1.tar.gz.asc">ASC</a>,
Modified: qpid/site/docs/maven.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/maven.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/maven.html (original)
+++ qpid/site/docs/maven.html Tue Apr 12 16:17:39 2016
@@ -124,7 +124,7 @@ https://github.com/apache/qpid-proton/bl
<span class="nt"><dependency></span>
<span class="nt"><groupId></span>org.apache.qpid<span
class="nt"></groupId></span>
<span class="nt"><artifactId></span>qpid-jms-client<span
class="nt"></artifactId></span>
- <span class="nt"><version></span>0.8.0<span
class="nt"></version></span>
+ <span class="nt"><version></span>0.9.0<span
class="nt"></version></span>
<span class="nt"></dependency></span>
</pre></div>
Modified: qpid/site/docs/releases/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/index.html (original)
+++ qpid/site/docs/releases/index.html Tue Apr 12 16:17:39 2016
@@ -124,8 +124,8 @@ the
<h2 id="current-releases">Current releases</h2>
<ul>
+<li><a href="qpid-jms-0.9.0/index.html">Qpid JMS 0.9.0</a>, April 2016</li>
<li><a href="qpid-proton-0.12.1/index.html">Qpid Proton 0.12.1</a>, March
2016</li>
-<li><a href="qpid-jms-0.8.0/index.html">Qpid JMS 0.8.0</a>, February 2015</li>
<li><a href="qpid-java-6.0.1/index.html">Qpid Java 6.0.1</a>, February
2016</li>
<li><a href="qpid-dispatch-0.5/index.html">Qpid Dispatch 0.5</a>, September
2015</li>
<li><a href="qpid-cpp-0.34/index.html">Qpid C++ 0.34</a>, June 2015</li>
@@ -137,6 +137,7 @@ the
<div class="two-column">
<ul>
+<li><a href="qpid-jms-0.8.0/index.html">Qpid JMS 0.8.0</a>, February 2016</li>
<li><a href="qpid-proton-0.12.0/index.html">Qpid Proton 0.12.0</a>, February
2016</li>
<li><a href="qpid-java-6.0.0/index.html">Qpid Java 6.0.0</a>, December
2015</li>
<li><a href="qpid-jms-0.7.0/index.html">Qpid JMS 0.7.0</a>, December 2015</li>
Modified: qpid/site/docs/releases/qpid-jms-0.1.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.1.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.1.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.1.0/index.html Tue Apr 12 16:17:39 2016
@@ -116,7 +116,7 @@ https://github.com/apache/qpid-proton/bl
<div id="-middle-content">
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.1.0" === "0.8.0") {
+ if ("0.1.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Modified: qpid/site/docs/releases/qpid-jms-0.2.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.2.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.2.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.2.0/index.html Tue Apr 12 16:17:39 2016
@@ -116,7 +116,7 @@ https://github.com/apache/qpid-proton/bl
<div id="-middle-content">
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.2.0" === "0.8.0") {
+ if ("0.2.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Modified: qpid/site/docs/releases/qpid-jms-0.3.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.3.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.3.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.3.0/index.html Tue Apr 12 16:17:39 2016
@@ -116,7 +116,7 @@ https://github.com/apache/qpid-proton/bl
<div id="-middle-content">
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.3.0" === "0.8.0") {
+ if ("0.3.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Modified: qpid/site/docs/releases/qpid-jms-0.4.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.4.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.4.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.4.0/index.html Tue Apr 12 16:17:39 2016
@@ -116,7 +116,7 @@ https://github.com/apache/qpid-proton/bl
<div id="-middle-content">
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.4.0" === "0.8.0") {
+ if ("0.4.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Modified: qpid/site/docs/releases/qpid-jms-0.5.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.5.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.5.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.5.0/index.html Tue Apr 12 16:17:39 2016
@@ -116,7 +116,7 @@ https://github.com/apache/qpid-proton/bl
<div id="-middle-content">
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.5.0" === "0.8.0") {
+ if ("0.5.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Modified: qpid/site/docs/releases/qpid-jms-0.6.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.6.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.6.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.6.0/index.html Tue Apr 12 16:17:39 2016
@@ -175,7 +175,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.6.0" === "0.8.0") {
+ if ("0.6.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Modified: qpid/site/docs/releases/qpid-jms-0.7.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.7.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.7.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.7.0/index.html Tue Apr 12 16:17:39 2016
@@ -175,7 +175,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.7.0" === "0.8.0") {
+ if ("0.7.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Modified: qpid/site/docs/releases/qpid-jms-0.8.0/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.8.0/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.8.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.8.0/index.html Tue Apr 12 16:17:39 2016
@@ -175,7 +175,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.8.0" === "0.8.0") {
+ if ("0.8.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Copied: qpid/site/docs/releases/qpid-jms-0.9.0/building.html (from r1738151,
qpid/site/docs/releases/qpid-jms-master/index.html)
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.9.0/building.html?p2=qpid/site/docs/releases/qpid-jms-0.9.0/building.html&p1=qpid/site/docs/releases/qpid-jms-master/index.html&r1=1738151&r2=1738827&rev=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-master/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.9.0/building.html Tue Apr 12 16:17:39
2016
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid JMS Master - Apache Qpid™</title>
+ <title>QpidJMS - Apache Qpid™</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,41 +111,57 @@ https://github.com/apache/qpid-proton/bl
</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 Master</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-0.9.0/index.html">Qpid JMS
0.9.0</a></li><li>QpidJMS</li></ul>
<div id="-middle-content">
- <h1 id="qpid-jms-master">Qpid JMS Master</h1>
+ <h1 id="qpidjms">QpidJMS</h1>
-<div class="feature">
+<p>The QpidJMS project provides a JMS based client that uses the AMQP v1.0
protocol.</p>
-<h2 id="warning-this-is-a-snapshot-of-work-in-progress">Warning! This is a
snapshot of work in progress</h2>
+<p>Below are some quick pointers you might find useful.</p>
-<p>Code and documentation found here may be unstable, incorrect, or
-incomplete. For a smoother experience, see the
-<a href="/releases/qpid-jms-0.8.0/index.html">current stable release</a>.</p>
+<h2 id="building-the-code">Building the code</h2>
-<p>This content was generated at 16:32 on Thursday, 07 April 2016.</p>
+<p>The project requires Maven 3. Some example commands follow.</p>
-</div>
+<p>Clean previous builds output and install all modules to local repository
without
+running the tests:</p>
+
+<pre><code>mvn clean install -DskipTests
+</code></pre>
+
+<p>Install all modules to the local repository after running all the tests:</p>
+
+<pre><code>mvn clean install
+</code></pre>
+
+<p>Perform a subset tests on the packaged release artifacts without
+installing:</p>
+
+<pre><code>mvn clean verify -Dtest=TestNamePattern*
+</code></pre>
+
+<p>Execute the tests and produce code coverage report:</p>
+
+<pre><code>mvn clean test jacoco:report
+</code></pre>
+
+<h2 id="examples">Examples</h2>
+
+<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="documentation">Documentation</h2>
-<div class="two-column">
+<p>There is some basic documentation in the qpid-jms-docs module.</p>
+
+<h2 id="distribution-assemblies">Distribution assemblies</h2>
+
+<p>After building the modules, src and binary distribution assemblies can be
found at:</p>
-<ul>
-<li><a
href="http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html">API
reference</a></li>
-<li><a
href="https://github.com/apache/qpid-jms/tree/master/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>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="https://git-wip-us.apache.org/repos/asf/qpid-jms.git">Source
repository</a></li>
-</ul>
+<pre><code>apache-qpid-jms/target
+</code></pre>
<hr/>
Added: qpid/site/docs/releases/qpid-jms-0.9.0/docs/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.9.0/docs/index.html?rev=1738827&view=auto
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.9.0/docs/index.html (added)
+++ qpid/site/docs/releases/qpid-jms-0.9.0/docs/index.html Tue Apr 12 16:17:39
2016
@@ -0,0 +1,411 @@
+<!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™</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://git-wip-us.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>™</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/java-broker/index.html">Java
broker</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-0.9.0/index.html">Qpid JMS 0.9.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<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);
+</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.lookupName = URI</em></li>
+<li>To define a Queue, use format: <em>queue.lookupName = queueName</em></li>
+<li>To define a Topic use format: <em>topic.lookupName = topicName</em></li>
+</ul>
+
+<p>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[&option2=value...]]
+</code></pre>
+
+<p>Where the <em>amqps</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 all asynchronous send
conditions and always sends every Message from a MessageProducer
synchronously.</li>
+<li><strong>jms.forceAsyncAcks</strong> Causes all Message acknowledgments to
be sent asynchronously.</li>
+<li><strong>jms.alwaysSyncSend</strong> Override all asynchronous send
conditions and always sends every Message from a MessageProducer synchronously.
<strong>This option is deprecated in 0.7.0 and will be removed in a future
release.</strong></li>
+<li><strong>jms.sendAcksAsync</strong> Causes all Message acknowledgments to
be sent asynchronously. <strong>This option is deprecated in 0.7.0 and will be
removed in a future release.</strong></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.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 Connection close before returning. (By default the client waits
15 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 with the
remote peer before returning an error (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.messageIDType</strong> Controls the type of the Message ID
assigned to messages sent from the client. By default a generated String value
is used on outgoing messages, other available types are UUID and
UUID_STRING.</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>
+</ul>
+
+<p>These values control 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 RedeliveryPolicy 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>
+</ul>
+
+<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&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>
+</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.keyStorePassword"</li>
+<li><strong>transport.storeType</strong> The type of trust store being used.
Default is "JKS".</li>
+<li><strong>transport.contextProtocol</strong> The protocol argument used when
getting an SSLContext. Default is "TLS".</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>
+</ul>
+
+<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.
Default is to allow selection from all the clients supported mechanisms, which
are currently EXTERNAL, SCRAM-SHA-256, SCRAM-SHA-1, CRAM-MD5, PLAIN, and
ANONYMOUS.</li>
+<li><strong>amqp.maxFrameSize</strong> The max-frame-size value in bytes that
is advertised to the peer. Default is 1048576.</li>
+</ul>
+
+<h3 id="failover-configuration-options">Failover Configuration options</h3>
+
+<p>With failover enabled the client can reconnect to a different broker
automatically when the connection to the current connection is lost for some
reason. The failover URI is always initiated with the <em>failover</em> prefix
and a list of URIs for the brokers 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&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 for this setting is to false.</li>
+</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 have a URI
like:</p>
+
+<pre><code>failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&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:(<agent-uri>)?discovery.maxReconnectAttempts=20&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>
+
+<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>
+
+
+ <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="http://www.apache.org/security/">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 © 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>
Copied: qpid/site/docs/releases/qpid-jms-0.9.0/index.html (from r1738151,
qpid/site/docs/releases/qpid-jms-0.7.0/index.html)
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.9.0/index.html?p2=qpid/site/docs/releases/qpid-jms-0.9.0/index.html&p1=qpid/site/docs/releases/qpid-jms-0.7.0/index.html&r1=1738151&r2=1738827&rev=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.7.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.9.0/index.html Tue Apr 12 16:17:39 2016
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid JMS 0.7.0 - Apache Qpid™</title>
+ <title>Qpid JMS 0.9.0 - Apache Qpid™</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/bl
</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.7.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 0.9.0</li></ul>
<div id="-middle-content">
- <h1 id="qpid-jms-070">Qpid JMS 0.7.0</h1>
+ <h1 id="qpid-jms-090">Qpid JMS 0.9.0</h1>
<p>Qpid JMS is a complete <a
href="http://en.wikipedia.org/wiki/Java_Message_Service">Java Message
Service</a> 1.1 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="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-bin.tar.gz">apache-qpid-jms-0.7.0-bin.tar.gz</a></td>
- <td><a
href="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-bin.tar.gz.asc">ASC</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-bin.tar.gz.md5">MD5</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-bin.tar.gz.sha1">SHA1</a></td>
+ <td><a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz">apache-qpid-jms-0.9.0-bin.tar.gz</a></td>
+ <td><a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz.asc">ASC</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz.md5">MD5</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-bin.tar.gz.sha1">SHA1</a></td>
</tr>
<tr>
<td>Qpid JMS source code</td>
- <td><a
href="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-src.tar.gz">apache-qpid-jms-0.7.0-src.tar.gz</a></td>
- <td><a
href="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-src.tar.gz.asc">ASC</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-src.tar.gz.md5">MD5</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.7.0/apache-qpid-jms-0.7.0-src.tar.gz.sha1">SHA1</a></td>
+ <td><a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz">apache-qpid-jms-0.9.0-src.tar.gz</a></td>
+ <td><a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz.asc">ASC</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz.md5">MD5</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.9.0/apache-qpid-jms-0.9.0-src.tar.gz.sha1">SHA1</a></td>
</tr>
</tbody>
</table>
@@ -158,7 +158,7 @@ files you download.</p>
<ul>
<li><a
href="http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html">API
reference</a></li>
-<li><a
href="https://github.com/apache/qpid-jms/tree/0.7.0/qpid-jms-examples">Examples</a></li>
+<li><a
href="https://github.com/apache/qpid-jms/tree/0.9.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="http://archive.apache.org/dist/qpid/jms/0.7.0">All release
artefacts</a></li>
-<li><a
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+AND+fixVersion+%3D+%270.7.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved
issues in JIRA</a></li>
-<li><a
href="https://git-wip-us.apache.org/repos/asf/qpid-jms.git/tree/refs/tags/0.7.0">Source
repository tag</a></li>
+<li><a href="http://archive.apache.org/dist/qpid/jms/0.9.0">All release
artefacts</a></li>
+<li><a
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+AND+fixVersion+%3D+%270.9.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved
issues in JIRA</a></li>
+<li><a
href="https://git-wip-us.apache.org/repos/asf/qpid-jms.git/tree/refs/tags/0.9.0">Source
repository tag</a></li>
</ul>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("0.7.0" === "0.8.0") {
+ if ("0.9.0" === "0.9.0") {
_modifyCurrentReleaseLinks();
}
});
Copied: qpid/site/docs/releases/qpid-jms-0.9.0/release-notes.html (from
r1738151, qpid/site/docs/releases/qpid-jms-0.3.0/index.html)
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-0.9.0/release-notes.html?p2=qpid/site/docs/releases/qpid-jms-0.9.0/release-notes.html&p1=qpid/site/docs/releases/qpid-jms-0.3.0/index.html&r1=1738151&r2=1738827&rev=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-0.3.0/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-0.9.0/release-notes.html Tue Apr 12
16:17:39 2016
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid JMS 0.3.0 - Apache Qpid™</title>
+ <title>Qpid JMS 0.9.0 Release Notes - Apache Qpid™</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,74 +111,48 @@ https://github.com/apache/qpid-proton/bl
</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.3.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-0.9.0/index.html">Qpid JMS 0.9.0</a></li><li>Qpid JMS
0.9.0 Release Notes</li></ul>
<div id="-middle-content">
- <script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("0.3.0" === "0.8.0") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
-<h1 id="qpid-jms-030">Qpid JMS 0.3.0</h1>
+ <h1 id="qpid-jms-090-release-notes">Qpid JMS 0.9.0 Release Notes</h1>
<p>Qpid JMS is a complete <a
href="http://en.wikipedia.org/wiki/Java_Message_Service">Java Message
Service</a> 1.1 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>
+using the <a href="/proton/index.html">Qpid Proton</a> protocol
+engine.</p>
-<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.3.0/apache-qpid-jms-0.3.0-bin.tar.gz">apache-qpid-jms-0.3.0-bin.tar.gz</a></td>
- <td><a
href="http://archive.apache.org/dist/qpid/jms/0.3.0/apache-qpid-jms-0.3.0-bin.tar.gz.asc">ASC</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.3.0/apache-qpid-jms-0.3.0-bin.tar.gz.md5">MD5</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.3.0/apache-qpid-jms-0.3.0-bin.tar.gz.sha1">SHA1</a></td>
-</tr>
-<tr>
- <td>Qpid JMS source code</td>
- <td><a
href="http://archive.apache.org/dist/qpid/jms/0.3.0/apache-qpid-jms-0.3.0-src.tar.gz">apache-qpid-jms-0.3.0-src.tar.gz</a></td>
- <td><a
href="http://archive.apache.org/dist/qpid/jms/0.3.0/apache-qpid-jms-0.3.0-src.tar.gz.asc">ASC</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.3.0/apache-qpid-jms-0.3.0-src.tar.gz.md5">MD5</a>,
<a
href="http://archive.apache.org/dist/qpid/jms/0.3.0/apache-qpid-jms-0.3.0-src.tar.gz.sha1">SHA1</a></td>
-</tr>
-</tbody>
-</table>
+<p>For more information about this release, including download links and
+documentation, see the <a href="index.html">release overview</a>.</p>
-<p>The client is also available <a href="/maven.html">via Maven</a>.</p>
+<h2 id="new-features-and-improvements">New features and improvements</h2>
-<h2 id="documentation">Documentation</h2>
+<ul>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-150">QPIDJMS-150</a> -
Scram SHA SASL support for authentication</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-151">QPIDJMS-151</a> -
Update build settings to depend only on specific netty modules needed</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-152">QPIDJMS-152</a> -
Reduce log noise from QueueBrowser on failed close of internal consumer</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-156">QPIDJMS-156</a> -
Improve the logs output for some JMS resources</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-157">QPIDJMS-157</a> - Add
support for send timeout and request timeout options</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-159">QPIDJMS-159</a> -
support producers having their existing credit drained</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-161">QPIDJMS-161</a> -
Update Proton to v0.12.1</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-162">QPIDJMS-162</a> -
Update ActiveMQ dependency to 5.13.2</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-163">QPIDJMS-163</a> -
support populating the user-id field on produced messages</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-166">QPIDJMS-166</a> -
Revisit some of the TODOs in the code around error messages and exception
types. </li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-168">QPIDJMS-168</a> - Fix
various issues reported by FindBugs</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-170">QPIDJMS-170</a> -
Simplify the dispatching logic in the connection</li>
+</ul>
-<div class="two-column">
+<h2 id="bugs-fixed">Bugs fixed</h2>
<ul>
-<li><a
href="http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html">API
reference</a></li>
-<li><a
href="https://github.com/apache/qpid-jms/tree/0.3.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-154">QPIDJMS-154</a> -
Failover mechanism does not handle connection URLs in a predictable way</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-160">QPIDJMS-160</a> - The
single non-daemon thread for the connection needs to be started on create.</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-169">QPIDJMS-169</a> - SASL
Plain Mechanism should be enforcing UTF-8 encoding</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.3.0">All release
artefacts</a></li>
-<li><a
href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPIDJMS+AND+fixVersion+%3D+%270.3.0%27+ORDER+BY+priority+DESC">Resolved
issues in JIRA</a></li>
-<li><a
href="https://git-wip-us.apache.org/repos/asf/qpid-jms.git/tree/refs/tags/0.3.0">Source
repository tag</a></li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-158">QPIDJMS-158</a> -
Update slf4j to latest release v1.7.21</li>
+<li><a
href="https://issues.apache.org/jira/browse/QPIDJMS-165">QPIDJMS-165</a> -
document behaviour around TLS SNI</li>
</ul>
Modified: qpid/site/docs/releases/qpid-jms-master/index.html
URL:
http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-jms-master/index.html?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/docs/releases/qpid-jms-master/index.html (original)
+++ qpid/site/docs/releases/qpid-jms-master/index.html Tue Apr 12 16:17:39 2016
@@ -122,7 +122,7 @@ https://github.com/apache/qpid-proton/bl
<p>Code and documentation found here may be unstable, incorrect, or
incomplete. For a smoother experience, see the
-<a href="/releases/qpid-jms-0.8.0/index.html">current stable release</a>.</p>
+<a href="/releases/qpid-jms-0.9.0/index.html">current stable release</a>.</p>
<p>This content was generated at 16:32 on Thursday, 07 April 2016.</p>
Modified: qpid/site/input/_transom_config.py
URL:
http://svn.apache.org/viewvc/qpid/site/input/_transom_config.py?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/input/_transom_config.py (original)
+++ qpid/site/input/_transom_config.py Tue Apr 12 16:17:39 2016
@@ -22,7 +22,7 @@ qpid_release = _Release("Qpid", "qpid",
cpp_release = _Release("Qpid C++", "qpid-cpp", "0.34")
dispatch_release = _Release("Qpid Dispatch", "qpid-dispatch", "0.5")
java_release = _Release("Qpid Java", "qpid-java", "6.0.1")
-jms_release = _Release("Qpid JMS", "qpid-jms", "0.8.0")
+jms_release = _Release("Qpid JMS", "qpid-jms", "0.9.0")
proton_release = _Release("Qpid Proton", "qpid-proton", "0.12.1")
_svn_base = "http://svn.apache.org/repos/asf/qpid"
Modified: qpid/site/input/releases/index.md
URL:
http://svn.apache.org/viewvc/qpid/site/input/releases/index.md?rev=1738827&r1=1738826&r2=1738827&view=diff
==============================================================================
--- qpid/site/input/releases/index.md (original)
+++ qpid/site/input/releases/index.md Tue Apr 12 16:17:39 2016
@@ -26,8 +26,8 @@ the
## Current releases
+ - [Qpid JMS 0.9.0](qpid-jms-0.9.0/index.html), April 2016
- [Qpid Proton 0.12.1](qpid-proton-0.12.1/index.html), March 2016
- - [Qpid JMS 0.8.0](qpid-jms-0.8.0/index.html), February 2015
- [Qpid Java 6.0.1](qpid-java-6.0.1/index.html), February 2016
- [Qpid Dispatch 0.5](qpid-dispatch-0.5/index.html), September 2015
- [Qpid C++ 0.34](qpid-cpp-0.34/index.html), June 2015
@@ -37,6 +37,7 @@ the
<div class="two-column" markdown="1">
+ - [Qpid JMS 0.8.0](qpid-jms-0.8.0/index.html), February 2016
- [Qpid Proton 0.12.0](qpid-proton-0.12.0/index.html), February 2016
- [Qpid Java 6.0.0](qpid-java-6.0.0/index.html), December 2015
- [Qpid JMS 0.7.0](qpid-jms-0.7.0/index.html), December 2015
Added: qpid/site/input/releases/qpid-jms-0.9.0/building.md
URL:
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-0.9.0/building.md?rev=1738827&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-jms-0.9.0/building.md (added)
+++ qpid/site/input/releases/qpid-jms-0.9.0/building.md Tue Apr 12 16:17:39 2016
@@ -0,0 +1,43 @@
+# QpidJMS
+
+The QpidJMS project provides a JMS based client that uses the AMQP v1.0
protocol.
+
+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
+
+There is some basic documentation in the qpid-jms-docs module.
+
+## Distribution assemblies
+
+After building the modules, src and binary distribution assemblies can be
found at:
+
+ apache-qpid-jms/target
Added: qpid/site/input/releases/qpid-jms-0.9.0/docs/index.md
URL:
http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-0.9.0/docs/index.md?rev=1738827&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-jms-0.9.0/docs/index.md (added)
+++ qpid/site/input/releases/qpid-jms-0.9.0/docs/index.md Tue Apr 12 16:17:39
2016
@@ -0,0 +1,236 @@
+# 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.lookupName =
URI*
++ To define a Queue, use format: *queue.lookupName = queueName*
++ To define a Topic use format: *topic.lookupName = topicName*
+
+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...]]
+
+Where the *amqps* 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 all asynchronous send conditions and always
sends every Message from a MessageProducer synchronously.
++ **jms.forceAsyncAcks** Causes all Message acknowledgments to be sent
asynchronously.
++ **jms.alwaysSyncSend** Override all asynchronous send conditions and always
sends every Message from a MessageProducer synchronously. **This option is
deprecated in 0.7.0 and will be removed in a future release.**
++ **jms.sendAcksAsync** Causes all Message acknowledgments to be sent
asynchronously. **This option is deprecated in 0.7.0 and will be removed in a
future release.**
++ **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.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 Connection close before returning. (By default the client waits 15 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 with the remote peer before
returning an error (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.messageIDType** Controls the type of the Message ID assigned to
messages sent from the client. By default a generated String value is used on
outgoing messages, other available types are UUID and UUID_STRING.
++ **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.
+
+These values control 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 RedeliveryPolicy 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.
+
+### 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
+
+### 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.keyStorePassword"
++ **transport.storeType** The type of trust store being used. Default is "JKS".
++ **transport.contextProtocol** The protocol argument used when getting an
SSLContext. Default is "TLS".
++ **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.
+
+### 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. Default is to
allow selection from all the clients supported mechanisms, which are currently
EXTERNAL, SCRAM-SHA-256, SCRAM-SHA-1, CRAM-MD5, PLAIN, and ANONYMOUS.
++ **amqp.maxFrameSize** The max-frame-size value in bytes that is advertised
to the peer. Default is 1048576.
+
+### Failover Configuration options
+
+With failover enabled the client can reconnect to a different broker
automatically when the connection to the current connection is lost for some
reason. The failover URI is always initiated with the *failover* prefix and a
list of URIs for the brokers 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 for this setting is to false.
+
+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".
+
+
+## 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.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]