<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, built 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. The new architecture on which 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 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
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 their functionality for features such as
security and reliability. The <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.</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 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"><strong>Asynchronous Web
    services</strong> - 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"><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 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 "<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 with performance improvements and bug
fixes over the 1.1 release. Check out the complete list of features 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 a 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 a 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 the <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>
