We are pleased to announce the release of Apache Axis2/C version 0.96.
You can download this release from
http://ws.apache.org/axis2/c/download.cgi

Key Features

   1. AXIOM, an XML object model optimized for SOAP 1.1/1.2 Messages. This has complete XML infoset support.
   2. Support for one-way messaging (In-Only) and request response messaging (In-Out)
   3. Description hierarchy (configuration, service groups, services, operations and messages)
   4. Directory based deployment model
   5. Archive based deployment model
   6. Context hierarchy (corresponding contexts to map to each level of description hierarchy)
   7. Raw XML message receiver
   8. Module architecture, mechanism to extend the SOAP processing model
   9. Module version support
  10. Transports supports: HTTP
        o Both simple axis server and Apache2 httpd module for server side 
        o Client transport with ability to enable SSL support
  11. Service client and operation client APIs
  12. REST support (HTTP POST case)
  13. WS-Addressing, both the submission (2004/08) and final (2005/08) versions
  14. MTOM/XOP support
  15. Code generation tool for stub and skeleton generation for a given WSDL (based on Java tool)
        o Axis Data Binding (ADB) support
  16. Security module with UsernameToken support
  17. REST support (HTTP GET case)
  18. Dynamic invocation support (based on XML schema and WSDL implementations)
  19. Guththila pull parser support
  20. WSDL2C code generation tool- with schema code generation
  21. TCP Monitor - C implementation
  22. Axis2/C Manual

Major Changes Since Last Release
   1. Major Memory leak fixes
   2. Many Bug Fixes
   3. Improvement to REST processing
   4. Improvement to SOAP-Fault processing
   5. Improvement to mod_axis2 library (plugged with apr pools)
   6. Visual Studio 7.0 project
  
TODOs Remaining for 1.0
   1. Complete API documentation and API improvements
   2. Fix further memory leaks
   3. Put in place a comprehensive functional test framework

  
We welcome your early feedback on this implementation.
Thanks for your interest in Axis2C
-- Apache Axis2C Team -- 
