<!--
  ~ 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>
<link href="../css/axis-docs.css" rel="stylesheet" type="text/css"
media="all" />
<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" target=
"mainFrame">Introduction</a></li>
<li><a href="installationguide.html" target=
"mainFrame">Installation Guide</a></li>
<li><a href="../modules/index.html" target="mainFrame">Add-on
Modules</a></li>
<li><a href="app_server.html" target="mainFrame">Application Server
Specific Configuration Guide</a></li>
<li><a href="quickstartguide.html" target="mainFrame">Quick Start
Guide</a></li>
<li><a href="userguide.html" target="mainFrame">User's
Guide</a></li>
<li><a href="adv-userguide.html" target="mainFrame">Advanced User's
Guide</a></li>
<li><a href="axis2config.html" target="mainFrame">Configuration
Guide</a></li>
<li><a href="webadminguide.html" target="mainFrame">Web
Administrator's Guide</a></li>
<li><a href="Axis2ArchitectureGuide.html" target=
"mainFrame">Architecture Guide</a></li>
<li><a href="jaxws-guide.html" target="mainFrame">JAXWS Guide</a></li>
<li><a href="pojoguide.html" target="mainFrame">POJO Guide</a></li>
<li><a href="spring.html" target="mainFrame">Spring Guide</a></li>
<li><a href="modules.html" target="mainFrame">ModulesGuide</a></li>
<li><a href="clustering-guide.html" target="mainFrame">Clustering Guide</a></li>
<li>ADB Data Binding
<ul>
<li>14.1 <a href="adb/adb-howto.html" target=
"mainFrame">Architecture</a></li>
<li>14.2 <a href="adb/adb-advanced.html" target=
"mainFrame">Advanced Features</a></li>
<li>14.3 <a href="adb/adb-codegen-integration.html" target=
"mainFrame">Code Generation Integration</a></li>
<li>14.4 <a href="adb/adb-tweaking.html" target=
"mainFrame">Tweaking</a></li>
</ul>
</li>
<li>JiBX Data Binding
<ul>
<li>15.1 <a href="jibx/jibx-codegen-integration.html" target=
"mainFrame">Code Generation Integration</a></li>
<li>15.2 <a href="jibx/jibx-doclit-example.html" target=
"mainFrame">doc/lit Example</a></li>
<li>15.3 <a href="jibx/jibx-unwrapped-example.html" target=
"mainFrame">unwrapped Example</a></li>
</ul>
</li>
<li>Advanced
<ul>
<li>16.1 <a href="xmlbased-server.html" target="mainFrame">AXIOM
Based Service</a></li>
<li>16.2 <a href="dii.html" target="mainFrame">AXIOM Based
Client</a></li>
</ul>
</li>
<li><a href="mtom-guide.html" target="mainFrame">Attachments/MTOM
Guide</a></li>
<li>Transports
<ul>
<li>18.1 <a href="http-transport.html" target="mainFrame">HTTP
Transport</a></li>
<li>18.3 <a href="tcp-transport.html" target="mainFrame">TCP
Transport</a></li>
<li>18.5 <a href="transport_howto.html" target="mainFrame">Custom
Transport</a></li>
</ul>
</li>
<li><a href="WS_policy.html" target="mainFrame">WS-Policy
Support</a></li>
<li><a href="rest-ws.html" target="mainFrame">REST Support</a></li>
<li><a href="json_support.html" target="mainFrame">JSON
Support</a></li>
<li><a href="corba-deployer.html" target="mainFrame">Exposing CORBA Services as Web Services</a></li>
<li><a href="ejb-provider.html" target="mainFrame">Guide to using
EJB Provider in Axis2</a></li>
<li><a href="soapmonitor-module.html" target="mainFrame">SOAP
Monitor</a></li>
<li><a href="reference.html" target="mainFrame">Command Line
Tools</a></li>
<li><a href="../tools/index.html" target=
"mainFrame">Tools/Plug-ins</a>
<ul>
<li>25.1 <a href=
"../tools/@axis2_version_dir@/CodegenToolReference.html" target=
"mainFrame">Code Generator Tool - Command Line and Ant
Task</a></li>
<li>25.2 <a href=
"../tools/@axis2_version_dir@/idea/Idea_plug-in_userguide.html"
target="mainFrame">Axis2 Plug-in for IntelliJ IDEA</a></li>
<li>25.3 <a href=
"../tools/@axis2_version_dir@/eclipse/servicearchiver-plugin.html"
target="mainFrame">Service Archive Generator Wizard - Eclipse
Plug-in</a></li>
<li>25.4 <a href=
"../tools/@axis2_version_dir@/eclipse/wsdl2java-plugin.html"
target="mainFrame">Code Generator Wizard - Eclipse Plug-in</a></li>
<li>25.5 <a href=
"../tools/@axis2_version_dir@/maven-plugins/maven-aar-plugin.html"
target="mainFrame">AAR Maven2 Plug-in</a></li>
<li>25.6 <a href=
"../tools/@axis2_version_dir@/maven-plugins/maven-java2wsdl-plugin.html"
target="mainFrame">Java2WSDL Maven2 Plug-in</a></li>
<li>25.7 <a href=
"../tools/@axis2_version_dir@/maven-plugins/maven-wsdl2code-plugin.html"
target="mainFrame">WSDL2Code Maven2 Plug-in</a></li>
</ul>
</li>
<li><a href="migration.html" target="mainFrame">Migration Guide
(from Axis1)</a></li>
<li>Design Notes
<ul>
<li>27.1 <a href="Axis2-rpc-support.html" target="mainFrame">RPC
Support</a></li>
</ul>
</li>
</ol>
</body>
</html>
