<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  <title>Axis2/Java @axis2_version@ Documentation Home</title>
  <link href="../css/axis-docs.css" rel="stylesheet" type="text/css"
  media="all">
</head>

<body lang="en">
<h1>Apache Axis2/Java Version @axis2_version@ Documentation Index</h1>

<h2>Introduction</h2>

<p>Apache Axis2, the third generation Web services engine is more efficient,
more modular and more XML-oriented than its predecessor <a
href="http://ws.apache.org/axis/">Apache Axis</a>. It is carefully designed
to support the easy addition of plug-in modules that extend its functionality
for features such as security and increased reliability.</p>

<p>Apache Axis2 Version @axis2_version@ comes to you with performance
improvements and bug fixes over the 1.1 release.</p>

<p>This page will take you through the list of documents that we have in
store for you.</p>

<h2>Apache Axis2 User's Guide</h2>

<p>You can get started with Axis2 with the assistance of the following
documents. They will guide you through the Axis2 download, installation (both
as a standalone Web services engine and as part of a J2EE compliant servlet
container), and instructions on how to write Web services and Web services
client using Apache Axis2.</p>
<ul>
  <li><a href="userguide.html#intro">Introduction</a>- Gives you an
    introduction to what Axis2 is, the life cycle of a Web services message,
    how Axis2 handles SOAP messages and also includes a basic description on
    Axis2 distributions, and how Axis2 behaves as part of a Web application
    or as a standalone client that is not part of a J2EE application.</li>
  <li><a href="installationguide.html">Download and Installation</a>- Lists
    the different distribution packages offered by Axis2 and gives in-depth
    instructions on the installation of the standalone method and as part of
    a J2EE servlet container.</li>
  <li><a href="userguide-installingtesting.html">Testing Client Code</a> -
    The best way to make sure that your system is running Axis2 is to install
    and test both a service and a client. This document describes this
    process in easy to understand steps.</li>
  <li><a href="userguide-introtoservices.html">Introduction to Services</a> -
    The term "Web services" can apply to a number of different ways of
    sending information back and forth. However, this guide focuses on the
    sending and receiving of SOAP messages and Message Exchange Patterns
    (MEPs).</li>
  <li><a href="userguide-creatingclients.html">Creating Clients from WSDL</a>
    - When it comes to creating a Web service client, you can do it manually
    as described in the next document. However, in most cases, you will have
    a Web Service Description Language (WSDL) definition that describes the
    messages that clients should send and expect to receive. Axis2 provides
    several ways to use this definition to automatically generate a client.
    This document explains how to create a client using WSDL definitions.</li>
  <li><a href="userguide-buildingservices.html">Building Services from
    Scratch</a> - Now that you know how to use Axis2 to generate clients from
    WSDL as described in the document before, this document digs a little
    deeper, showing you how to create services, and how to create both
    services and clients "from scratch", so to speak.</li>
  <li><a href="userguide-samples.html">Samples</a> - The Axis2 Standard
    Distribution provides a number of samples you can use as a guide for
    implementing specific features and capabilities. These services are
    listed in this document along with basic introductions for each one.</li>
  <li><a href="userguide-forfurtherstudy.html">For Further Study</a> - This
    section lists resource documents for further study.
    <ul>
      <li><a href="pojoguide.html">POJO Web Services using Apache
        Axis2</a>-This guide will show you how to create a Plain Old Java
        Object (POJO) for deploying using Apache Axis2 on Apache Tomcat.
        POJOs are fast to build and easy to maintain, which means you'll save
        a lot of time building and debugging your code</li>
      <li><a href="quickstartguide.html">Axis2 Quick Start Guide</a>-The
        purpose of this guide is to get you started on creating services and
        clients using Axis2 as quickly as possible. It demonstrates how to
        create Web services using a variety of different technologies.</></li>
    </ul>
  </li>
</ul>
Also see our <a href="../faq.html">FAQ page</a> to answer those common
questions in mind.

<h2>How To</h2>

<p>This section deals with more advanced topics including Axis2 support
features such as Transports, Attachments, Pluggable Data Binding, Security,
and REST Web services in detail.</p>
<ul>
  <li><a href="webadminguide.html">Web Administrator's Guide</a> - Detailed
    instructions on the administration console of Axis2 Web application,
    which provides run-time configuration of Axis2.</li>
  <li><a href="migration.html">Migrating from Axis 1.x to Axis 2</a> -
    Guiding Axis 1.x users in upgrading to Axis2</li>
  <li><a href="app_server.html">Application Server Specific Configuration
    Guide</a> - Provides extra configuration information required for
    application servers to run Axis2 to its fullest potential</li>
  <li><a href="http://ws.apache.org/commons/axiom/OMTutorial.html">AXIOM
    Tutorial</a>-An introduction to Axis2's Object Model</li>
  <li><a href="rest-ws.html">REST Support</a>-Introduction on
    Representational State Transfer</li>
  <li><a href="Axis2-rpc-support.html">Axis2 RPC Support</a> - This document
    talks about the Axis2's Remote Procedure Calls support in a set of easy
    to understand implementation steps</li>
  <li><a href="mtom-guide.html">MTOM Guide -Sending Binary Data with SOAP</a>
    - Explains how to send binary data using the SOAP Message Transmission
    Optimization Mechanism</li>
  <li><a href="axis2config.html">Axis2 Configuration Guide</a> - Explains the
    three configurations in Axis2: global, service, and module</li>
  <li><a href="soapmonitor-module.html">SOAP Monitor How-to</a> - A guide on
    the utilities used to monitor the SOAP messages that invoke Web services,
    along with the results of those messages</li>
  <li><a href="WS_policy.html">Web Services Policy Support In Axis2</a> -
    Introduction to the role of Web services policy in Axis2</li>
  <li><a href="spring.html">Spring Framework</a> - A guide on how to use
    Axis2 with the Spring Framework</li>
  <li><a href="json_support.html">JSON Support</a> - This document explains
    how to use JSON support implementation in Axis2. Includes details on test
    cases and samples</li>
  <li><a href="ejb-provider.html">Guide to using EJB Provider in Axis2</a> -
    This guide explains how to use an EJB provider in Axis2 using an
  example</li>
</ul>

<p><strong>Data Bindings:</strong></p>
<ul>
  <li><a href="adb/adb-howto.html">ADB How-to</a> - A guide on the Axis2
    Databinding Framework (ADB)</li>
  <li><a href="adb/adb-advanced.html">Advanced ADB Framework Features</a> -
    Provides an insight into the newly added advanced features of ADB</li>
  <li><a href="adb/adb-tweaking.html">Tweaking the ADB Code Generator</a> -
    Explains the available mechanisms to extend ADB</li>
  <li><a href="adb/adb-codegen-integration.html">ADB Integration with
    Axis2</a> - A guide to writing an extension using the integrator in order
    to integrate ADB with Axis2</li>
  <li><a href="jibx/jibx-codegen-integration.html">JiBX Integration With
    Axis2</a> - A guide to using JiBX with Axis2 in order to expose existing
    Java code as a Web service and to implement a client for an existing Web
    service</li>
</ul>

<p><strong>Transports:</strong></p>
<ul>
  <li><a href="tcp-transport.html">TCP Transport</a> - A guide to sending and
    receiving SOAP messages via TCP in Axis2</li>
  <li><a href="mail-transport.html">Mail Transport</a> - Explains how to
    invoke a service using a Mail transport</li>
  <li><a href="mail-configuration.html">Mail Transport Configuration</a> - A
    guide to configuring Axis2 in order to get mail transport working</li>
  <li><a>HTTP Transports</a> - A description on HTTP sender and HTTP receiver
    in Axis2</li>
  <li><a href="jms-transport.html">JMS Transport</a> - A description on JMS
    sender and JMS receiver in Axis2</li>
  <li><a href="transport_howto.html">Write Your Own Axis2 Transport</a> - A
    quick and easy guide to create your own Axis2 Transport protocol</li>
</ul>

<p><strong>Axis2 Tools:</strong></p>
<ul>
  <li><a href="../tools/@axis2_version_dir@/CodegenToolReference.html">Code
    Generator Tool Guide for Command Line and Ant Tasks</a> - Lists command
    line and Ant task references. How to build a file using custom Ant tasks
    and how to invoke a Code Generator from Ant</li>
  <li><a
    href="../tools/@axis2_version_dir@/eclipse/wsdl2java-plugin.html">Code
    Generator Wizard Guide for Eclipse Plug-in</a> - Explains the usage of
    the code generator Eclipse plug-in for WSDL2Java and/or Java2WSDL
    operations</li>
  <li><a
    href="../tools/@axis2_version_dir@/eclipse/servicearchiver-plugin.html">Service
    Archive Generator Wizard Guide for Eclipse Plug-in</a> - Describes the
    functionality of the Eclipse plugin service archive generator tool</li>
  <li><a
    href="../tools/@axis2_version_dir@/idea/Idea_plug-in_userguide.html">Code
    Generator Wizard Guide for IntelliJ IDEA Plug-in</a> - A guide on the
    usage of the IDEA code generation plug-in to create service archives and
    generate Java class files from WSDL files</li>
  <li><a
    href="../tools/@axis2_version_dir@/maven-plugins/maven-aar-plugin.html">Maven2
    AAR Plug-in Guide</a> - A guide to generate an Axis 2 service file (AAR
    file) using the Maven plug-in.</li>
  <li><a
    href="../tools/@axis2_version_dir@/maven-plugins/maven-java2wsdl-plugin.html">Maven2
    Java2WSDL Plug-in Guide</a> - A guide to using Java2WSDL Maven 2 Plug-in
    that takes a Java class as input and generates a WSDL, which describes a
    Web service for invoking the class methods</li>
  <li><a
    href="../tools/@axis2_version_dir@/maven-plugins/maven-wsdl2code-plugin.html">Maven2
    WSDL2Code Plug-in Guide</a> - A guide to using this plugin that takes as
    input a WSDL and generates client and server stubs for calling or
    implementing a Web service matching the WSDL.</li>
</ul>

<h2>Apache Axis2 Developers</h2>
<ul>
  <li><a href="adv-userguide.html">Advanced User's Guide</a> - A quick start
    user's guide for more experienced users and developers on how to install,
    create Web services and Web service clients using Axis2.
    <ul>
      <li><a href="adv-userguide.html#introduction">Introduction</a> -
        Outlines the overall direction of the user guide, with a high level
        introduction on Axis2</li>
      <li><a href="installationguide.html">Download and Installation</a> -
        Lists the different distribution packages offered by Axis2, and the
        installations for the standalone and as part of a J2EE servlet
        container methods.</li>
      <li><a href="adv-userguide.html#ws_codegen">Creating a new Web Service
        with Code Generation</a> - Axis2 provides two ways to create new Web
        Services: using code generation and XML based primary APIs. This
        section explains how to start from a WSDL, and create a new Service
        with code generation</li>
      <li><a href="xmlbased-server.html">Writing Web Services Using Axis2's
        Primary APIs</a> - Explains how to create new Web Services using XML
        based primary APIs</li>
      <li><a href="adv-userguide.html#client">Writing a Web Service Client
        with Code Generation </a>- Axis2 also provides a more complex, yet
        powerful XML based client API that is intended for advanced users.
        However, if you are a new user we recommend using the code generation
        approach presented below</li>
      <li><a href="dii.html">Writing Web Service Clients Using Axis2's
        Primary APIs</a> - This section presents complex yet powerful XML
        based client APIs, which is intended for advanced users to write Web
        services clients</li>
      <li><a href="adv-userguide.html#config">Configuring Axis2</a> - Axis2
        configuration is based on a repository and standard archive formats.
        Here you will find details on how to configure Axis2. You will also
        find reference documents that lead to greater detail in this
      area.</li>
    </ul>
  </li>
  <li><a href="Axis2ArchitectureGuide.html">Axis2 Architecture Guide</a> -
    Introduction to Axis2's modular architecture</li>
  <!--<li><a href="api/index.html">Online Java Docs</a>-Java API
  documentation</li>-->
  <li><a
    href="http://ws.apache.org/axis2/@axis2_version_dir@/api/index.html">Online
    Java Docs</a> - Java API documentation</li>
  <li><a href="../refLib.html">Reference Library</a> - This document provides
    additional information to developers on WS-* specifications, Java
    language specifications, Subversion (SVN) control etc.</li>
</ul>

<h2>References</h2>

<p>Gives you a list of published articles, tutorials and Questions-Answers on
Apache Axis2. <a href="../articles.html">Check them out</a> for that extra
knowledge on the next generation Web services engine Apache Axis2. Be
Informed and up-to-date!</p>
</body>
</html>
