<html>
<head></head>
<body>
<h1>Axis 2.0 Release Notes</h1>

This is the 0.9 release of the Apache Axis2.

<h2>What's in this release?</h2>

<p>This release includes the following features:</p>
<ul>
  <li>AXIOM, a SOAP specific streaming XML infoset model for SOAP 1.1/1.2 Messages</li>
  <li>Support for One-Way Messaging and Request Response Messaging</li>
  <li>Modules, mechanism to extend the SOAP Processing Model</li>
  <li>Archives based deployment Model </li>
  <li>WSDL Code Generation Tool for Stub and skeltons</li>
  <li>XML Beans based data binding support</li>
  <li>Support for WS-Addressing, both the submission and final versions</li>
  <li>Client API</li>
  <li>REST Web Service Support</li>
  <li>HTTP transport Support</li>
  <li>SMTP transport Support</li>
  <li>TCP transport Support</li>
  <li>MTOM/SWA attachments support</li>
  <li>SAAJ implementation</li>
</ul>

<p>The release include following tools</p>
<ol>
	<LI>Admin Web App</LI>
	<LI>WSDL2WS, eclipe Plugin/Command line version</LI>
	<LI>Service Archive Wizard, eclipe Plugin</LI>
	<LI>Module Archive Wizard, eclipe Plugin</LI>
</ol>

<h2>What's still to do?</h2>

<p>Please see a list of what we think needs doing - and please consider helping out if 
you're interested & able!</p>
<ul>
    <li>SOAP 1.1 and 1.2 validation </li>
    <li> JAX-RPC 1.1/2.0 compliance</li> 
    <li> Complete XML infoset support for AXIOM</li> 
    <li> Implementation of other transports. e.g. JMS..</li> 
    <li> Web Service Policy Support</li> 
</ul>

<p>Axis2 is taking shape, this 0.9 release is a glimpse of 1.0 that should be comming soon. 
If you happen to have vision of how the next generation of the Web Service should be, and like to contribute to 
Apache Axis2 please help us to shape the Apache Axis2. Any contribution in the form of Coding, testing, submiting 
improvements to the documentation, and reporting bugs are always welcome.</p>
<p>Thanks for your interest in Axis2!</p>
-- The Axis Development Team
</body>
</html>

 
