<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Apache Axis2/Java - Next Generation Web Services</title>
  <link href="css/axis-docs.css" rel="stylesheet" type="text/css" media="all">
</head>

<body lang="en">
<h1>Welcome to Apache Axis2/Java</h1>

<h2>09th January 2006 - Apache Axis2/Java Version 1.1.1 Released!</h2>

<p>[ <a
href="http://ws.apache.org/axis2/download.cgi"><strong>Download</strong></a>
] | [ <a href="1_1/index.html"><strong>Documents Home</strong></a> ]</p>

<p>Apache Axis2 is the core engine for Web services. It is a complete
re-design and re-write of the widely used <a
href="http://ws.apache.org/axis/">Apache Axis</a> SOAP stack to build on the
lessons learnt from Apache Axis.</p>

<h3><em>Apache Axis Project in a Nutshell:</em></h3>

<p>Apache Axis is an implementation of the SOAP ("Simple Object Access
Protocol") <a href="http://www.w3.org/TR/SOAP">submission</a> to W3C.</p>

<p>Extract from the draft W3C specification:</p>

<blockquote>
  "SOAP is a lightweight protocol for exchanging structured information in a
  decentralized, distributed environment. It is an XML based protocol that
  consists of three parts: an envelope that defines a framework for
  describing what is in a message and how to process it, a set of encoding
  rules for expressing instances of application-defined datatypes, and a
  convention for representing remote procedure calls and
responses."</blockquote>

<p>This project is a follow-on to the <a
href="http://ws.apache.org/soap">Apache SOAP project</a>.</p>

<p>Please see the <a href="http://ws.apache.org/axis/ref.html">Axis Reference
Library</a> for a list of technical resources that should prove useful on
this project.</p>

<h3><em>Why Apache Axis2:</em></h3>

<p>A new architecture for Axis was introduced during the August 2004 Summit
in Colombo, Sri Lanka. This new architecture Axis2 is based on is more
flexible, efficient and configurable in comparison to <a
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 this 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
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 style interface simultaneously.</p>

<p>Apache Axis2 is more efficient, more modular and more XML-oriented than
the older version. It is carefully designed to support the easy addition of
plug-in "modules" that extend its functionality for features such as security
and reliability. <a
href="http://ws.apache.org/axis2/modules/index.html">Modules</a> currently
available or under development include:</p>
<ul>
  <li><a
    href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrm"
    target="_blank">WS-ReliableMessaging</a> - Supported by <a
    href="http://ws.apache.org/sandesha/sandesha2/">Apache Sandesha2</a></li>
  <li><a
    href="http://www-128.ibm.com/developerworks/library/specification/ws-tx/#coor"
    target="_blank">WS-Coordination</a>  and <a
    href="http://www-128.ibm.com/developerworks/library/specification/ws-tx/#atom"
    target="_blank">WS-AtomicTransaction</a> - Supported by <a
    href="http://ws.apache.org/kandula/">Apache Kandula2</a></li>
  <li><a
    href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss"
    target="_blank">WS-Security</a> - Supported by <a
    href="http://ws.apache.org/axis2/modules/rampart/1_1/security-module.html">Apache
  Rampart</a></li>
  <li><a href="http://www.w3.org/Submission/ws-addressing/"
    target="_blank">WS-Addressing</a> -Module included as part of Axis2
  core</li>
</ul>

<p>Apache Axis2 is built on <a
href="http://ws.apache.org/commons/axiom/index.html">Apache AXIOM</a>, a new
high performant, pull-based XML object model that was released two days
ago.</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"><strong>Speed</strong> - 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"><strong>Low memory foot print</strong>-
    Axis2 was designed ground-up keeping low memory foot print in mind.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>AXIOM</strong> - 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"><strong><a name="Hot_Deployment"></a>Hot
    Deployment</strong> - Axis2 is equipped with the capability of deploying
    Web service &amp; 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"><strong>Asynchronous Web
    services</strong> - Axis2 now supports asynchronous Web services &amp;
    asynchronous Web services invocation using non-blocking clients and
    transports .</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>MEP Support</strong> - 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"><strong>Flexibility</strong> - The Axis2
    architecture gives the developer complete freedom to insert extensions
    into the engine for custom header processing, system management, and
    <em>anything else you can imagine</em>.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Stability</strong> - 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"><strong>Component-oriented
    Deployment</strong> - 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"><strong>Transport Framework</strong> - 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"><strong>WSDL support</strong> - Axis2
    supports the Web Service Description Language, version <a
    href="http://www.w3.org/TR/wsdl">1.1</a> and <a
    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"><strong>Add-ons</strong> - Several Web
    services specifications have been incorporated including <a
    href="http://ws.apache.org/wss4j/" target="_blank">WSS4J</a> for security
    (Apache Rampart), <a href="http://ws.apache.org/sandesha/"
    target="_blank">Sandesha</a> for reliable messaging, <a
    href="http://ws.apache.org/kandula/" target="_blank">Kandula</a> which is
    an encapsulation of WS-Coordination, WS-AtomicTransaction and
    WS-BusinessActivity.</p>
  </li>
  <li><p style="margin-bottom: 0in"><strong>Composition and
    Extensibility</strong> - Modules and phases improve support for
    composability and extensibility. Modules supports composability and is
    able to add support for 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 "<a
href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a>". Make sure
to prefix the subject of the mail with [Axis2].</p>

<h2>Features of Axis2 Latest Version</h2>

<p>Apache Axis2 Version 1.1.1 comes to you with performance improvements and
bug fixes over the 1.1 release. Check out the complete features list
below.</p>

<h3>Programming Model</h3>
<ul>
  <li>Improved, XML-centric client API including full WSDL and policy
  support</li>
  <li>Support for any message exchange pattern</li>
  <li>Synchronous and asynchronous calls</li>
  <li>Archived service deployment model</li>
  <li>Archived module deployment model supporting controlled extensibility
    with versioning support</li>
  <li><a href="#Hot_Deployment">Hot deployment</a></li>
  <li>WS-Policy driven code generation extensions</li>
  <li>Flexible service life cycle model</li>
  <li>Support for querying service's WSDL (using ?wsdl), schema (using ?xsd)
    and policies (using ?policy)</li>
</ul>

<h3>Supported Specifications</h3>
<ul>
  <li>SOAP 1.1 and 1.2</li>
  <li>Message Transmission Optimization Mechanism (MTOM), XML Optimized
    Packaging (XOP) and SOAP with Attachments</li>
  <li>WSDL 1.1, including both SOAP and HTTP bindings</li>
  <li>WS-Addressing (submission and final)</li>
  <li>WS-Policy</li>
  <li>SAAJ 1.1</li>
</ul>

<h3>Transports</h3>
<ul>
  <li>HTTP</li>
  <li>SMTP</li>
  <li>JMS</li>
  <li>TCP</li>
</ul>

<h3>Supported Data Bindings</h3>
<ul>
  <li>Axis Data Binding (ADB)</li>
  <li>XMLBeans</li>
  <li>JibX</li>
  <li>JaxMe</li>
</ul>

<h2><a name="Tools_included_in this_Release">Tools Included In This
Release</a></h2>

<p>[<a href="http://ws.apache.org/axis2/tools/index.html"
target="_blank">Download Tool Plug-ins</a>]</p>
<ol type="1">
  <li>Axis2 Web Application (Web App)</li>
  <li>WSDL2WS- <a href="tools/1_1/eclipse/wsdl2java-plugin.html"
    target="_blank">eclipse plug-in</a><a>/</a> <a
    href="tools/1_1/CodegenToolReference.html" target="_blank">Command line
    version</a><a>/</a><a
    href="tools/1_1/idea/Idea_plug-in_userguide.html#WSDL2Java_Code_Generation"
    target="_blank">IntelliJ IDEA plug-in</a><a>/</a><a
    href="tools/1_1/maven-plugins/maven-wsdl2code-plugin.html"
    target="_blank">Maven2 WSDL2Code Plug-in</a></li>
  <li>Service Archive Wizard- <a
    href="tools/1_1/eclipse/servicearchiver-plugin.html"
    target="_blank">eclipse plug-in</a>/ <a
    href="tools/1_1/idea/Idea_plug-in_userguide.html#Create_Service_Archive"
    target="_blank">IntelliJ IDEA plug-in</a>/ <a
    href="tools/1_1/maven-plugins/maven-aar-plugin.html"
    target="_blank">Maven2 AAR Plug-in</a></li>
  <li>Java2WSDL- <a
    href="tools/1_1/maven-plugins/maven-java2wsdl-plugin.html"
    target="_blank">Maven2 Java2WSDL Plug-in</a></li>
</ol>

<h2>Extension Modules</h2>
<ul>
  <li>Apache Rampart: Supporting WS-Security (and soon WS-Policy)</li>
  <li>Apache Sandesha2: Supporting WS-Reliable Messaging</li>
</ul>
(Apache Axis2 comes built in with a module that supports WS-Addressing.)

<h2>Known Issues and Limitations</h2>
<ul>
   <li>ADB does not support unwrapping of response messages(coming in 1.2)</li>
   <li>JSR 181/183 Annotation support (coming in 1.2)</li>
   <li>JaxMe and JAXBRI data binding support is experimental</li>
   <li>Simple Axis Server does not support POX/REST</li>
   <li>RPC  Message Receiver does not validate request against the schema (AXIS2-1943)</li>
   <li>Axis2 Idea plugin shows random behavior when XMLBeans is used</li>
</ul>

<h2>Archived News</h2>

<p>For information on previous Axis2 releases running up to the current
release see <a href="archived_news.html" target="_blank">'Axis2 Archived
News'</a> page.</p>
For other news items from Apache Software Foundation see:
<ul>
  <li><a
    href="http://www.apachenews.org/archives/cat_apache_webservices_index.html">Web
    services related news on the Apache News Blog Online</a></li>
  <li><a href="http://www.apachenews.org/">The Apache News Blog
  Online</a></li>
</ul>
</body>
</html>
