<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Welcome to Apache Axis2 version 1.1.1</title>
</head>

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

<h3>@TODAY@</h3>
<pre>Its been just over a month since the 1.1 release of Apache Axis2 and we are
happy to announce the release of Apache Axis2 version 1.1.1.

The download is available at:
    http://ws.apache.org/axis2/download.cgi

Apache Axis2 is a complete re-design and re-write of the widely used
Apache Axis engine and is a more efficient, more scalable, more modular
and more XML-oriented Web services framework. It is carefully designed to
support the easy addition of plug-in "modules" that extends its
functionality for features such as security and reliability.

Modules supporting WS-Security/Secure-Conversation (Apache Rampart),
WS-Trust (Apache Rahas), WS-Reliable Messaging (Apache Sandesha2) are already 
avaialable. Modules supporting WS-Eventing (Apache Savan) &amp; WS-Transactions 
(Apache Kandula2) will be available soon after the Apache Axis2 1.1.1 release. 
Please see these projects' own sites for further information.

Major changes since 1.1:
- Performance improvements
- Bug fixes

Known issues and limitations in 1.1.1 release:
- ADB does not support unwrapping of response messages(coming in 1.2)
- JSR 181/183 Annotation support (coming in 1.2)
- JaxMe and JAXBRI data binding support is experimental
- Simple Axis Server does not support POX/REST
- RPC  Message Receiver does not validate request against the schema (AXIS2-1943)

Apache Axis2 1.1.1 is a bug fix release of Axis2's 1.1 version, which was a 
major release since Axis2 1.0. We are striving for a simple and happy 
first time user experience as well as satisfying advanced users. 
We welcome any and all feedback:
    axis-user@ws.apache.org (please include "[axis2]" in the subject)
    axis-dev@ws.apache.org (please include "[axis2]" in the subject)
    http://issues.apache.org/jira/browse/AXIS2

Thank you for your interest in Apache Axis2!

The Axis2 Development Team
http://ws.apache.org/axis2/

--------------------------------------------------------------------------------

Features of Apache Axis2:

Programming Model
   - Simple XML-centric client API with full WSDL and policy support
   - Support for POJO and Spring services and clients
   - Support for any message exchange pattern (MEP)
   - Synchronous and asynchronous programming model
   - Archived service deployment model supporting full service
     encapsulation with versioning support
   - Archived module deployment model supporting controlled
     extensibility with versioning support
   - Hot deployment
   - WS-Policy driven code generation extensions
   - Flexible service life cycle model
   - Automatic support for POX (REST) style invocation of services
   - Support for querying service's WSDL (with ?wsdl), schema (with
     ?xsd) and policies (with ?policy)

Supported Specifications
   - SOAP 1.1 and 1.2
   - Message Transmission Optimization Mechanism (MTOM)
   - XML Optimized Packaging (XOP)
   - SOAP with Attachments
   - WSDL 1.1, including both SOAP and HTTP bindings
   - WS-Addressing submission and 1.0
   - WS-Policy
   - SAAJ 1.1

Transports
   - HTTP
   - SMTP
   - JMS
   - TCP

Supported Data Bindings
   - Axis Data Binding (ADB)
   - XMLBeans
   - JibX
   - JaxMe (Experimental)
   - JaxBRI (Experimental)

Tools
   - WSDL2Java: Generate Java stubs and skeletons from a WSDL document.
   - Java2WSDL: Generate a WSDL document from a Java class.
   - Eclipse Plugins
   - IntelliJ Idea Plugins
   - Maven2 Plugins
   - Web application for administering Apache Axis2
    </pre>
</body>
</html>
