<?xml version="1.0" encoding="UTF-8"?>
<!--

    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.
-->
<!DOCTYPE book [
	<!ENTITY version "3.3.2-SNAPSHOT">
]>
<book id="book" label="Apache ServiceMix Manual Guide" status="draft" lang="en"
         xmlns="http://docbook.org/ns/docbook"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="
               http://docbook.org/ns/docbook
               http://www.docbook.org/xml/5.0/xsd/docbook.xsd"
         version="5.0" xml:lang="en">
              
    <title>Apache ServiceMix &version; Manual Guide</title>
    
    <bookinfo>
        <authorgroup>
            <author>
                <firstname>Guillaume</firstname>
                <surname>Nodet</surname>
                <email>gnodet@apache.org</email>
            </author>
            <author>
                <firstname>Gert</firstname>
                <surname>Vanthienen</surname>
                <email>gertv@apache.org</email>
            </author>
            <author>
                <firstname>Lars</firstname>
                <surname>Heinemann</surname>
                <email>lhein@apache.org</email>
            </author>
            <author>
                <firstname>Jean-Baptiste</firstname>
                <surname>Onofre</surname>
                <email>jbonofre@apache.org</email>
            </author>
            <author>
                <firstname>Bruce</firstname>
                <surname>Snyder</surname>
                <email>bsnyder@apache.org</email>
            </author>
            <author>
                <firstname>Charles</firstname>
                <surname>Moulliard</surname>
                <email>cmoulliard@apache.org</email>
            </author>
        </authorgroup>
        <copyright>
            <year>2010</year>
            <holder>Apache Software Foundation</holder>
        </copyright>
        <date>2010-04-28</date>
        <revhistory>
            <revision>
                <revnumber>001</revnumber>
                <date>2009-07-19</date>
                <authorinitials>jbonofre</authorinitials>
                <revremark>Initial revision</revremark>
            </revision>
            <revision>
                <revnumber>002</revnumber>
                <date>2010-02-02</date>
                <authorinitials>cmoulliard</authorinitials>
                <revremark>Update table of content, add directory for images</revremark>
            </revision>
            <revision>
                <revnumber>003</revnumber>
                <date>2010-04-28</date>
                <authorinitials>cmoulliard</authorinitials>
                <revremark>Split structure in several documents, add section numbering</revremark>
            </revision>
        </revhistory>
        <corpname>Apache Software Foundation</corpname>
    </bookinfo>
    
    <toc />
    
    <!-- Chapter on What is ServiceMix 3 -->
    <xi:include href="whatissmx3.xml"/>
    
    <!--  Chapter on Introduction to ESB -->
    <xi:include href="introductiontoesb.xml"/>
    
    <!--  Chapter on ServiceMix 3 Background -->
    <xi:include href="background.xml"/>
    
    <!-- Chapter on installation -->
    <xi:include href="installation.xml"/>
    
    <!--  Chapter on core configuration -->
    <xi:include href="coreconfiguration.xml"/>
    
    <!-- Chapter on classloaders -->
    <xi:include href="classloaders.xml"/>
    
	<!-- Chapter on clustering and high-availability -->
    <xi:include href="clustering.xml"/>
    
    <!-- Chapter on build -->    
    
</book>