<!--
  ~ 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 html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" />
<meta http-equiv="content-type" content="" />
<title></title>
<style type="text/css" media="screen">
/*<![CDATA[*/
<!--
ul { list-style-type: none; margin: 0 0 0 5px; padding: 0; border-width: 0; list-style-position: outside; }
-->






/*]]>*/
</style>
</head>
<body lang="en-US" dir="ltr" xml:lang="en-US">
<h1>Table of Contents</h1>
<ol>
<li><a href="contents.html">Introduction</a></li>
<li><a href="installationguide.html">Installation Guide</a></li>
<li><a href="../modules/index.html">Add-on
Modules</a></li>
<li><a href="app_server.html">Application Server
Specific Configuration Guide</a></li>
<li><a href="quickstartguide.html">Quick Start
Guide</a></li>
<li><a href="userguide.html">User's
Guide</a></li>
<li><a href="adv-userguide.html">Advanced User's
Guide</a></li>
<li><a href="axis2config.html">Configuration
Guide</a></li>
<li><a href="webadminguide.html">Web
Administrator's Guide</a></li>
<li><a href="Axis2ArchitectureGuide.html">Architecture Guide</a></li>
<li><a href="jaxws-guide.html">JAXWS Guide</a></li>
<li><a href="pojoguide.html">POJO Guide</a></li>
<li><a href="spring.html">Spring Guide</a></li>
<li><a href="modules.html">ModulesGuide</a></li>
<li><a href="clustering-guide.html">Clustering Guide</a></li>
<li>ADB Data Binding
<ul>
<li>14.1 <a href="adb/adb-howto.html">Architecture</a></li>
<li>14.2 <a href="adb/adb-advanced.html">Advanced Features</a></li>
<li>14.3 <a href="adb/adb-codegen-integration.html">Code Generation Integration</a></li>
<li>14.4 <a href="adb/adb-tweaking.html">Tweaking</a></li>
</ul>
</li>
<li>JiBX Data Binding
<ul>
<li>15.1 <a href="jibx/jibx-codegen-integration.html">Code Generation Integration</a></li>
<li>15.2 <a href="jibx/jibx-doclit-example.html">doc/lit Example</a></li>
<li>15.3 <a href="jibx/jibx-unwrapped-example.html">unwrapped Example</a></li>
</ul>
</li>
<li>Advanced
<ul>
<li>16.1 <a href="xmlbased-server.html">AXIOM
Based Service</a></li>
<li>16.2 <a href="dii.html">AXIOM Based
Client</a></li>
</ul>
</li>
<li><a href="mtom-guide.html">Attachments/MTOM
Guide</a></li>
<li>Transports
<ul>
<li>18.1 <a href="http-transport.html">HTTP
Transport sender</a></li>
<li>18.2 <a href="servlet-transport.html">HTTP
servlet transport</a></li>
<li>18.3 <a href="jms-transport.html">JMS Transport</a></li>
<li>18.4 <a href="tcp-transport.html">TCP Transport</a></li>
<li>18.5 <a href="mail-transport.html">Mail Transport</a></li>
<li>18.6 <a href="udp-transport.html">UDP Transport</a></li>
<li>18.7 <a href="xmpp-transport.html">XMPP Transport</a></li>
<li>18.8 <a href="transport_howto.html">Custom
Transport</a></li>
</ul>
</li>
<li><a href="WS_policy.html">WS-Policy
Support</a></li>
<li><a href="rest-ws.html">REST Support</a></li>
<li>JSON support
    <ul>
    <li>23.1<a href="json_support.html">JSON support with Mapped/Badgerfish formats</a></li>
    <li>23.2<a href="json_support_gson.html">Pure JSON Support</a>
    <ul>
        <li><a href="json_support_gson.html#native_approach">Native Approach</a></li>
        <li><a href="json_support_gson.html#xml_stream_api_base_approach">XML Stream API Base Approach</a></li>
        <li><a href="json_gson_user_guide.html">User Guide</a></li>
    </ul>
    </li>
</ul>
</li>
<li><a href="corba-deployer.html">Exposing CORBA Services as Web Services</a></li>
<li><a href="ejb-provider.html">Guide to using
EJB Provider in Axis2</a></li>
<li><a href="soapmonitor-module.html">SOAP
Monitor</a></li>
<li><a href="reference.html">Command Line
Tools</a></li>
<li><a href="../tools/index.html">Tools/Plug-ins</a>
<ul>
<li>25.1 <a href=
"../tools/CodegenToolReference.html">Code Generator Tool - Command Line and Ant
Task</a></li>
<li>25.2 <a href="../tools/idea/Idea_plug-in_userguide.html">Axis2 Plug-in for IntelliJ IDEA</a></li>
<li>25.3 <a href="../tools/eclipse/servicearchiver-plugin.html">Service Archive Generator Wizard - Eclipse
Plug-in</a></li>
<li>25.4 <a href="../tools/eclipse/wsdl2java-plugin.html">Code Generator Wizard - Eclipse Plug-in</a></li>
<li>25.5 <a href="../tools/maven-plugins/maven-aar-plugin.html">AAR Maven2 Plug-in</a></li>
<li>25.6 <a href="../tools/maven-plugins/maven-java2wsdl-plugin.html">Java2WSDL Maven2 Plug-in</a></li>
<li>25.7 <a href="../tools/maven-plugins/axis2-wsdl2code-maven-plugin/index.html">WSDL2Code Maven2 Plug-in</a></li>
</ul>
</li>
<li><a href="migration.html">Migration Guide
(from Axis1)</a></li>
<li>Design Notes
<ul>
<li>27.1 <a href="Axis2-rpc-support.html">RPC
Support</a></li>
</ul>
</li>
</ol>
</body>
</html>
