<?xml version="1.0"?>
<!--

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.

-->

<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="JMS-Client-0-8-JMS-Getting-And-Dependencies">
  <title>Getting the Client And Dependencies</title>
  <section xml:id="JMS-Client-0-8-JMS-Getting-And-Dependencies-Getting">
    <title>Getting the Client</title>
    <para>The Apache Qpid JMS client for AMQP 0-9-1/0-10 is available as a bundle or from ${qpidMavenRepoDesc}.</para>
    <para>The bundle archive includes the Client itself (qpid-client jar) together with slf4j-api, and geronimo-jms_1.1_spec.
      It is available from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="${qpidDownloadUrl}">${qpidDownloadUrlDesc}</link>.</para>
    <para>You can add the Qpid Client as a dependency into your maven project as illustrated below:</para>
    <screen>
    &lt;dependency&gt;
      &lt;groupId&gt;${qpidClientGroupId}&lt;/groupId&gt;
      &lt;artifactId&gt;${qpidClientArtefactId}&lt;/artifactId&gt;
      &lt;version&gt;${project.version}&lt;/version&gt;
    &lt;/dependency&gt;
    </screen>
    <para><xref linkend="JMS-Client-0-8-Appendix-Maven"/> illustrates a minimal Maven POM required to use the Qpid Client.</para>
  </section>
  <section xml:id="JMS-Client-0-8-JMS-Getting-And-Dependencies-Dependencies">
    <title>Dependencies</title>
    <para>The Client has minimal set of external dependencies. </para>
    <para> It requires: <itemizedlist>
        <listitem>
          <para>JDK 1.7 or higher.<footnote><para>The Java Cryptography Extension (JCE)
            Unlimited Strength policy files are required for the  <link xmlns:xlink="http://www.w3.org/1999/xlink"  linkend="JMS-Client-Message-Encryption">Message Encryption</link>
            feature.</para></footnote></para>
        </listitem>
        <listitem>
          <para>JMS 1.1 specification (such as geronimo-jms_1.1_spec JAR)</para>
        </listitem>
        <listitem>
          <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.slf4j.org">Apache SLF4J</link> (slf4j-api-x.y.z JAR)</para>
        </listitem>
      </itemizedlist>
    </para>
    <para>The use of SLF4J means that application authors are free to plug in any logging framework
      for which an SLF4J binding exists. </para>
  </section>
</chapter>
