<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 at 2021-08-01 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20210801" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Apache Axis2/Java - Next Generation Web Services</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
      <script type="text/javascript" src="./js/apache-maven-fluido-1.6.min.js"></script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href="./" id="bannerRight"><img src="images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2021-08-01<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.0<span class="divider">|</span></li>
        <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
    <li class="active ">Apache Axis2/Java - Next Generation Web Services</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Axis2/Java</li>
    <li class="active"><a href="#"><span class="none"></span>Home</a>
  </li>
    <li><a href="download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
    <li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
      <ul class="nav nav-list">
    <li><a href="release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a>  </li>
    <li><a href="release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a>  </li>
    <li><a href="release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a>  </li>
    <li><a href="release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a>  </li>
    <li><a href="release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a>  </li>
    <li><a href="release-notes/1.8.0.html" title="1.8.0"><span class="none"></span>1.8.0</a>  </li>
      </ul>
  </li>
    <li><a href="modules/index.html" title="Modules"><span class="none"></span>Modules</a>  </li>
    <li><a href="tools/index.html" title="Tools"><span class="none"></span>Tools</a>  </li>
          <li class="nav-header">Documentation</li>
    <li><a href="docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a>  </li>
    <li><a href="docs/installationguide.html" title="Installation Guide"><span class="none"></span>Installation Guide</a>  </li>
    <li><a href="docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a>  </li>
    <li><a href="docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a>  </li>
    <li><a href="docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a>  </li>
    <li><a href="docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a>  </li>
    <li><a href="docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a>  </li>
    <li><a href="docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a>  </li>
    <li><a href="docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a>  </li>
          <li class="nav-header">Resources</li>
    <li><a href="faq.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
    <li><a href="articles.html" title="Articles"><span class="none"></span>Articles</a>  </li>
    <li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a>  </li>
    <li><a href="refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a>  </li>
    <li><a href="apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a>  </li>
          <li class="nav-header">Get Involved</li>
    <li><a href="overview.html" title="Overview"><span class="none"></span>Overview</a>  </li>
    <li><a href="git.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a>  </li>
    <li><a href="mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li><a href="release-process.html" title="Release Process"><span class="none"></span>Release Process</a>  </li>
    <li><a href="guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a>  </li>
    <li><a href="siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a>  </li>
          <li class="nav-header">Project Information</li>
    <li><a href="team-list.html" title="Project Team"><span class="none"></span>Project Team</a>  </li>
    <li><a href="issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a>  </li>
    <li><a href="https://github.com/apache/axis-axis2-java-core/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a>  </li>
    <li><a href="thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</a>  </li>
          <li class="nav-header">Apache</li>
    <li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
    <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >

    
<h1>Welcome to Apache Axis2/Java</h1>

<p>Apache Axis2&#x2122; is a Web Services JSON / SOAP / WSDL engine, the successor to the
widely used <a class="externalLink" href="http://ws.apache.org/axis/">Apache Axis</a> SOAP stack.
There are two implementations
of the Apache Axis2 Web services engine - Apache Axis2/Java and
Apache Axis2/C</p>

<p>While you will find all the information on Apache Axis2/Java
here, you can visit the <a class="externalLink" href="http://axis.apache.org/axis2/c/"><b>Apache Axis2/C</b></a>
Web site for Axis2/C implementation information.</p>

<p>Apache Axis2, Axis2, Apache, the Apache feather logo, and the Apache Axis2 project logo are trademarks of The Apache Software Foundation.</p>
<section>
<h3><a name="Why_Apache_Axis2:"></a><i>Why Apache Axis2:</i></h3>

<p>A new architecture for Axis2 was introduced during the August
2004 Summit in Colombo, Sri Lanka. The new architecture on which
Axis2 is based on is more flexible, efficient and configurable in
comparison to <a class="externalLink" href="http://ws.apache.org/axis/java/architecture-guide.html">Axis1.x
architecture</a>. Some well established concepts from Axis 1.x,
like handlers etc., have been preserved in the new
architecture.</p>

<p>Apache Axis2 not only supports SOAP 1.1 and SOAP 1.2, but it
also has integrated support for the widely popular <a class="externalLink" href="http://www.xfront.com/REST-Web-Services.html">REST style of Web
services</a>. The same business logic implementation can offer both
a WS-* style interface as well as a REST/POX style interface
simultaneously.</p>

<p>Apache Axis2 over time has expanded to contemporary JSON 
(JavaScript Object Notation) web services, and that area
is where new development is occuring. In addition to GSON
for the Java serialization/deserialization of JSON, Moshi
is now supported since GSON development has largely ceased.</p>

<p>Apache Axis2 is more efficient, more modular and more
XML-oriented / JSON-orientated than the older version. It is 
carefully designed to support the easy addition of plug-in &quot;modules&quot; 
that extend their functionality for features such as security and 
reliability. The <a href="modules/index.html">Modules</a>
currently available or under development include:</p>

<ul>

<li><a class="externalLink" href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss">WS-Security</a> - Supported by <a class="externalLink" href="http://axis.apache.org/axis2/java/rampart/">
Apache Rampart</a></li>

<li><a class="externalLink" href="http://www.w3.org/Submission/ws-addressing/">WS-Addressing</a> -Module included as part of Axis2
core</li>
</ul>

<p>Apache Axis2 is built on <a class="externalLink" href="http://ws.apache.org/axiom/">Apache AXIOM</a>, a
new high performant, pull-based XML object model - however for JSON
based web services, Moshi (or GSON) takes its place and largely follows 
the same pull-based concepts.</p>

<p>Axis2 comes with many new features, enhancements and industry
specification implementations. The key features offered are as
follows:</p>

<ul>

<li>

<p style="margin-bottom: 0in"><b>Speed</b> - Axis2 uses
its own object model and StAX (Streaming API for XML) parsing to
achieve significantly greater speed than earlier versions of Apache
Axis.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>Low memory foot
print</b>- Axis2 was designed ground-up keeping low memory
foot print in mind.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>AXIOM</b> - Axis2 comes
with its own light-weight object model, AXIOM, for message
processing which is extensible, highly performant and is developer
convenient.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b><a name="Hot_Deployment" id="Hot_Deployment"></a>Hot Deployment</b> - Axis2 is equipped
with the capability of deploying Web services and handlers while
the system is up and running. In other words, new services can be
added to the system without having to shut down the server. Simply
drop the required Web service archive into the services directory
in the repository, and the deployment model will automatically
deploy the service and make it available for use.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>Asynchronous Web
services</b> - Axis2 now supports asynchronous Web services
and asynchronous Web services invocation using non-blocking clients
and transports.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>MEP Support</b> - Axis2
now comes handy with the flexibility to support Message Exchange
Patterns (MEPs) with in-built support for basic MEPs defined in
WSDL 2.0.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>Flexibility</b> - The
Axis2 architecture gives the developer complete freedom to insert
extensions into the engine for custom header processing, system
management, and <i>anything else you can imagine</i>.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>Stability</b> - Axis2
defines a set of published interfaces which change relatively
slowly compared to the rest of Axis.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>Component-oriented
Deployment</b> - You can easily define reusable networks of
Handlers to implement common patterns of processing for your
applications, or to distribute to partners.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>Transport Framework</b>
- We have a clean and simple abstraction for integrating and using
Transports (i.e., senders and listeners for SOAP over various
protocols such as SMTP, FTP, message-oriented middleware, etc), and
the core of the engine is completely transport-independent.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>WSDL support</b> - Axis2
supports the Web Service Description Language, version <a class="externalLink" href="http://www.w3.org/TR/wsdl">1.1</a> and <a class="externalLink" href="http://www.w3.org/TR/wsdl20/">2.0</a>, which allows you to easily
build stubs to access remote services, and also to automatically
export machine-readable descriptions of your deployed services from
Axis2.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>JSON support</b> - Axis2
supports the creation of Web Services using JavaScript Object Notation, with <a class="externalLink" href="https://github.com/google/gson">GSON</a> and <a class="externalLink" href="https://github.com/square/moshi">Moshi</a>, which allows you to easily
build POJO based services that receive and return JSON.</p>
</li>

<li>

<p style="margin-bottom: 0in"><b>Composition and
Extensibility</b> - Modules and phases improve support for
composability and extensibility. Modules support composability and
can also support new WS-* specifications in a simple and clean
manner. They are however not <a href="#Hot_Deployment">hot
deployable</a> as they change the overall behavior of the
system.</p>
</li>
</ul>

<p>We hope you enjoy using Axis2. Please note that this is an
open-source effort. If you feel the code could use new features or
fixes, or the documentation can be improved, please get involved
and lend us a hand! The Axis developer community welcomes your
participation.</p>

<p>Let us know what you think! Send your feedback on Axis2 to
&quot;<a class="externalLink" href="mailto:java-user@axis.apache.org">java-user@axis.apache.org</a>&quot;. Make
sure to prefix the subject of the mail with [Axis2].</p>
</section>

        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>