<?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="Java-Broker-Miscellaneous">
  <title>Miscellaneous</title>

  <section role="h2" xml:id="Java-Broker-Miscellaneous-JVM-Verification">
    <title>JVM Installation verification</title>
    <section role="h2" xml:id="Java-Broker-Miscellaneous-JVM-Verification-Windows">
      <title>Verify JVM on Windows</title>
      <para> Firstly confirm that the JAVA_HOME environment variable is set correctly by typing the
        following at the command prompt: </para>
      <programlisting>echo %JAVA_HOME%</programlisting>
      <para> If JAVA_HOME is set you will see something similar to the following: </para>
      <screen>c:"\PROGRA~1"\Java\jdk1.8.0_121\
      </screen>
      <para> Then confirm that a Java installation (1.8 or higher) is available: </para>
      <programlisting>java -version</programlisting>
      <para> If java is available on the path, output similar to the following will be seen: </para>
      <screen>java version "1.8.0_121-b13"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)</screen>
    </section>

    <section role="h2" xml:id="Java-Broker-Miscellaneous-JVM-Verification-Unix">
      <title>Verify JVM on Unix</title>
      <para> Firstly confirm that the JAVA_HOME environment variable is set correctly by typing the
        following at the command prompt: </para>
      <programlisting>echo $JAVA_HOME</programlisting>
      <para> If JAVA_HOME is set you will see something similar to the following: </para>
      <screen>/usr/java/jdk1.8.0_121
      </screen>
      <para> Then confirm that a Java installation (1.8 or higher) is available: </para>
      <programlisting>java -version</programlisting>
      <para> If java is available on the path, output similar to the following will be seen: </para>
      <screen>java version "1.8.0_121-b13"
        Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
        Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)</screen>
    </section>
  </section>
  <section role="h2" xml:id="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver">
    <title>Installing External JDBC Driver</title>
    <para>In order to use a JDBC Virtualhost Node or a JDBC Virtualhost, you must make the
      Database's JDBC 4.0 compatible drivers available on the Broker's classpath. To do this copy
      the driver's JAR file into the <literal>\${QPID_HOME}/lib</literal> folder.</para>
    <programlisting>Unix:
cp <literal>driver</literal>.jar qpid-broker-${project.version}/lib</programlisting>

    <programlisting>Windows:
copy <literal>driver</literal>.jar qpid-broker-${project.version}\lib</programlisting>
  </section>
</appendix>
