                          Apache Axis2/C

  What is it?
  -----------

  The Apache Axis2/C is a SOAP engine implementation that can be used 
  to provide and consume Web Services. Axis2/C is an effort to implement Axis2 
  architecture, in C. Please have a look at 
  http://axis.apache.org/axis2/java/core/docs/Axis2ArchitectureGuide.html
  for an overview on Axis2 architecture.
  
  Axis2/C supports both SOAP 1.1 and SOAP 1.2. The soap processing model is
  built on the AXIOM XML object model. Axis2/C is capable of handling 
  one-way messaging (In-Only) as well as request response messaging (In-Out).
  It can be used in both synchronous and asynchronous modes.

  Axis2/C has built in WS-Addressing support. It implements WS-Addressing 1.0
  specification completely. It also has built in MTOM/XOP support for handling
  binary attachments.
  
  As a project of the Apache Software Foundation, the
  developers aim to collaboratively develop and maintain a robust,
  commercial-grade, standards-based Web Services stack implementation with 
  freely available source code.

  The Latest Version
  ------------------

  Details of the latest version can be found on the Apache Axis2/C
  project page under http://axis.apache.org/axis2/c/core/.

  Documentation
  -------------

  The documentation available as of the date of this release is
  included in HTML format in the docs/ directory. The most
  up-to-date documentation can be found at
  http://axis.apache.org/axis2/c/core/docs/index.html.

  Installation
  ------------

  Please see the file named INSTALL. You can also have a look at 
  docs/installationguide.html.

  Licensing
  ---------

  Please see the file named LICENSE.

  Contacts
  --------

     o If you want freely available support for using Apache Axis2/C please 
       join the Apache Axis2/C user community by subscribing to users mailing 
       list, c-user@axis.apache.org' as described at 
       http://axis.apache.org/axis2/c/core/mail-lists.html

     o If you have a bug report for Apache Axis2/C please go log a Jira issue 
       at http://issues.apache.org/jira/browse/AXIS2C

     o If you want to participate in actively developing Apache Axis2/C please
       subscribe to the `c-dev@axis.apache.org' mailing list as described at
       http://axis.apache.org/axis2/c/core/mail-lists.html

  Acknowledgements
  ----------------

  Apache Axis2/C relies heavily on the use of autoconf and libtool to provide
  a build environment.
