<?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.

-->

<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="JMS-Client-0-8-Appendix-Exceptions">
  <title>Exceptions</title>

  <para>The methods of the Client throw <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="${oracleJeeDocUrl}javax/jms/JMSException.html">JMSExceptions</link> in response to error
    conditions. Typically the exception's message (#getMessage()) summarises the error condition,
    with contextual information being provided by the messages of linked exception(s). To understand
    the problem, it is important to read the messages associated with <emphasis>all</emphasis> the
    linked exceptions.</para>

  <para>The following table describes some of the more common exceptions linked to JMSException
    thrown by JMS methods whilst using the client:</para>

  <table pgwide="1">
    <title>Exceptions linked to JMSExceptions thrown by JMS methods</title>
    <tgroup cols="3">
      <thead>
        <row>
          <entry>Linked Exception</entry>
          <entry>Message</entry>
          <entry>Explanation/Common Causes</entry>
        </row>
      </thead>
      <tbody>
        <row>
          <entry>AMQUnresolvedAddressException</entry>
          <entry><emphasis>message varies</emphasis></entry>
          <entry><para>Indicates that the hostname included in the Connection URL's <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Brokerlist">brokerlist</link>, could not be resolved, . This could mean that the hostname is
              mispelt, or there is name resolution problem.</para></entry>
        </row>
        <row>
          <entry>AMQConnectionFailure</entry>
          <entry>Connection refused</entry>
          <entry><para>Indicates that the host included in the Connection URL's <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Brokerlist">brokerlist</link>, actively refused the connection. This could mean that the
              hostname and/or port number is incorrect, or the Broker may not be
            running.</para></entry>
        </row>
        <row>
          <entry>AMQConnectionFailure</entry>
          <entry>connect timed out</entry>
          <entry><para>Indicates that the host included in the Connection URL's <link linkend="JMS-Client-0-8-Connection-URL-ConnectionOptions-Brokerlist">brokerlist</link>, could not be contacted within the <link linkend="JMS-Client-0-8-Connection-URL-BrokerOptions-ConnectTimeout">connecttimeout</link>. This could mean that the host is shutdown, or a networking
              routing problem means the host is unreachable.</para></entry>
        </row>
        <row>
          <entry>AMQConnectionFailure</entry>
          <entry>General SSL Problem; PKIX path building failed; unable to find valid certification
            path to requested target</entry>
          <entry><para>Indicates that the CA that signed the Broker's certificate is not trusted by
              the JVM of the client. If the Broker is using a private-CA (or a self signed
              certificate) check that the client has been properly configured with a truststore. See
                <xref linkend="JMS-Client-0-8-Client-Understanding-Connection-SSL"/></para></entry>
        </row>
        <row>
          <entry>AMQConnectionFailure / AMQAuthenticationException</entry>
          <entry>not allowed</entry>
          <entry><para>Indicates that the user cannot be authenticated by the Broker. Check the
              username and/or password elements within the <link linkend="JMS-Client-0-8-Connection-URL">Connection URL</link>.</para></entry>
        </row>
        <row>
          <entry>AMQConnectionFailure / AMQSecurityException</entry>
          <entry>Permission denied: <emphasis>virtualhost name</emphasis>; access refused</entry>
          <entry><para>Indicates that the user is not authorised to connect to the given
              virtualhost. The user is recognised by the Broker and is using the correct password
              but does not have permission. This exception normally indicates that the user (or
              group) has not been permissioned within the Broker's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="${qpidJavaBrokerBook}Java-Broker-Security-ACLs.html">Access Control List
                (ACL)</link>.</para></entry>
        </row>
        <row>
          <entry>AMQTimeoutException</entry>
          <entry>Server did not respond in a timely fashion; Request Timeout</entry>
          <entry><para>Indicates that the broker did not respond to a request sent by the client in
              a reasonable length of time. The timeout is governed by <link linkend="JMS-Client-0-8-System-Properties-SyncOpTimeout"><literal>qpid.sync_op_timeout</literal></link>.</para><para>This can be a symptom
              of a heavily loaded broker that cannot respond or the Broker may have failed in
              unexpected manner. Check the broker and the host on which it runs and performance of
              its storage.</para></entry>
        </row>
        <row>
          <entry>AMQSecurityException</entry>
          <entry>Permission denied: <emphasis>message varies</emphasis></entry>
          <entry><para>Indicates that the user is not authorised to use the given resource or
              perform the given operation. This exception normally indicates that the user (or
              group) has not been permissioned within the Broker's <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="${qpidJavaBrokerBook}Java-Broker-Security-ACLs.html">Access Control List
                (ACL)</link>.</para></entry>
        </row>
      </tbody>
    </tgroup>
  </table>

  <para>The following table describes some of the more common exceptions linked to JMSException sent
    to <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="${oracleJeeDocUrl}javax/jms/ExceptionListener.html">ExceptionListener</link>
    instances.</para>

  <table pgwide="1">
    <title>Exceptions linked to JMSExceptions received by ExceptionListeners</title>
    <tgroup cols="3">
      <thead>
        <row>
          <entry>Linked Exception</entry>
          <entry>Message</entry>
          <entry>Explanation/Common Causes</entry>
        </row>
      </thead>
      <tbody>
        <row xml:id="JMS-Client-0-8-Appendix-Exceptions-AMQNoRouteException">
          <entry>AMQNoRouteException</entry>
          <entry>No Route for message [Exchange: <emphasis>exchange name</emphasis>, Routing key:
              <emphasis>routing key</emphasis>] [error code 312: no route]</entry>
          <entry><para>Indicate that the named exchange is unable to route a message to at least one
              queue.</para>
            <para>This will occur if a queue has been improperly bound to an exchange. Use the
              Broker's management interface to check the bindings. See <xref linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-MandatoryMessage"/></para></entry>
        </row>
        <row xml:id="JMS-Client-0-8-Appendix-Exceptions-AMQNoConsumersException">
          <entry>AMQNoConsumersException</entry>
          <entry>Immediate delivery is not possible. [error code 313: no consumers]</entry>
          <entry><para>Immediate delivery was requested by the MessageProducer, but as there are no
              consumers on any target queue, the message has been returned to the publisher. See
                <xref linkend="JMS-Client-0-8-Client-Understanding-MessageProducer-ImmediateMessage"/>
            </para></entry>
        </row>
        <row>
          <entry>AMQDisconnectedException</entry>
          <entry>Server closed connection and reconnection not permitted</entry>
          <entry><para>Indicates that the connection was closed by the Broker, and as <link linkend="JMS-Client-0-8-Client-Understanding-Connection-Failover">failover
                options</link> are not included in the Connection URL, the client has been unable to
              reestablish connection.</para>
            <para>The Connection is now closed and any attempt to use either Connection object, or
              any objects created from the Connection will receive an <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="${oracleJeeDocUrl}javax/jms/IllegalStateException.html">IllegalStateException</link>.</para></entry>
        </row>
        <row xml:id="JMS-Client-0-8-Appendix-Exceptions-AMQDisconnectedException">
          <entry>AMQDisconnectedException</entry>
          <entry>Server closed connection and no failover was successful</entry>
          <entry><para>Indicates that the connection was closed by the Broker. The client has tried
              failover according to the rules of the <link linkend="JMS-Client-0-8-Client-Understanding-Connection-Failover">failover
                options</link>within the Connection URL, but these attempts were all
              unsuccessful.</para>
            <para>The Connection is now closed and any attempt to use either Connection object, or
              any objects created from the Connection will receive an <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="${oracleJeeDocUrl}javax/jms/IllegalStateException.html">IllegalStateException</link>.</para></entry>
        </row>

      </tbody>
    </tgroup>
  </table>

  <!--
  :
  AMQDisconnectedException: Server closed connection
  -->

</appendix>
